Управление репозиториями в centos. добавление репозиториев epel, elrepo, remi в centos

Установка php-fpm 7.1

Установка и настройка 7-й версии php на centos не очень простая задача. Ранее я уже рассказывал как обновить php до 7-й версии, но в итоге откатился назад. Прошло прилично времени и откатываться уже не будем, так как большинство проблем исправлены.

Вторая проблема в том, что надо определить, какой репозиторий использовать для установки php7. Их существует очень много. К примеру, мой хороший знакомый в своей статье по настройке web сервера использует репозиторий Webtatic. В принципе, чтобы просто поставить php 7-й версии это нормальный вариант. Но если вы после этого захотите установить phpmyadmin через yum уже ничего не получится. Будет ошибка зависимостей, которые нужно будет как-то руками разбирать.

То же самое будет и с другими пакетами. К примеру, zabbix без плясок с бубнами скорее всего не встанет. В сторонних репозиториях есть еще одна проблема. Иногда они закрываются. И это станет для вас большой проблемой на боевом сервере. Так что к выбору репозитория нужно подходить очень аккуратно и внимательно. Я до сих пор иногда встречаю настроенные сервера centos 5 с очень популярным в прошлом репозиторием centos.alt.ru, который закрылся. Сейчас это уже не так актуально, так как таких серверов осталось мало, но некоторое время назад мне это доставляло серьезные неудобства.

Для установки свежей версии php я буду использовать репозиторий Remi. Это известный и популярный репозиторий, который ведет сотрудник RedHat. И хотя надежность репозитория, который ведет один человек не так высока, но ничего лучше и надежнее remi лично я не нашел для своих целей. Если вы можете что-то посоветовать на этот счет — комментарии в вашем распоряжении. Буду благодарен за дельный совет.

Подключаем remi репозиторий для centos 7.

# rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Я получил ошибку:

Retrieving http://rpms.remirepo.net/enterprise/remi-release-7.rpm
warning: /var/tmp/rpm-tmp.nwcDV1: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
error: Failed dependencies: 
       epel-release = 7 is needed by remi-release-7.3-2.el7.remi.noarch

Тут все понятно, нужен репозиторий epel. Те, кто готовили сервер по моей статье по базовой настройке сервера его уже подключили, а те кто не делали этого, подключают сейчас:

# yum install epel-release

После этого повторяем установку remi, все должно пройти нормально. Проверим список подключенных репозиториев.

# yum repolist

У меня такая картинка получилась.

Активируем репу remi-php71, для этого выполняем команду:

# yum-config-manager --enable remi-php71

Если получаете ошибку:

bash: yum-config-manager: command not found

то установите пакет yum-utils.

# yum install yum-utils

Теперь устанавливаем php7.1.

# yum install php71

Установим php-fpm и наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.

# yum install php-fpm php-cli php-mysql php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip

Запускаем php-fpm и добавляем в автозагрузку.

# systemctl start php-fpm
# systemctl enable php-fpm

Проверяем, запустился ли он.

# netstat -tulpn | grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 9084/php-fpm: maste

Все в порядке, повис на порту 9000. Запустим его через unix сокет. Для этого открываем конфиг /etc/php-fpm.d/www.conf и комментируем строку:

;listen = 127.0.0.1:9000

Вместо нее добавляем несколько других:

listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx

Заодно измените пользователя, от которого будет работать php-fpm. Вместо apache укажите nginx.

user = nginx
group = nginx

Перезапускаем php-fpm.

# systemctl restart php-fpm

Проверяем, стартовал ли указанный сокет.

# ll /var/run/php-fpm/php-fpm.sock 
srw-rw----. 1 nginx nginx 0 Oct 26 18:08 /var/run/php-fpm/php-fpm.sock

На текущий момент с настройкой php-fpm закончили, двигаемся дальше.

Для того, чтобы проверить работу нашего веб сервера, нужно установить ssl сертификаты. Без них nginx с текущим конфигом не запустится. Исправляем это.

Конфигурационные файлы репозиториев (*.repo)

Все конфигурационные файлы репозиториев расположены в директории /etc/yum.repos.d/. В конфигурационных файл *.repo. Типовой конфигурационный файл репозитория содержит следующие параметры:

  • name — имя репозитория;
  • baseurl — ссылка на репозиторий (может быть ftp://address, http://address, https://address или file://address для локального репозитория);
  • enabled – нужно ли использовать данный репозиторий: 1 – репозиторий подключен, 0 – отключен;
  • async – использовать ли параллельную загрузку пакетов (auto/on/off);
  • gpgcheck – нужно ли выполнять проверку GPG (1 – проверять);
  • gpgkey — ссылка на GPG ключ;
  • exclude — список исключенных пакетов;
  • includepkgs — список включенных пакетов;
  • mirrorlist – список зеркал репозитория.

В минимальном случае repo файл может выглядеть так:

name=rep_name
baseurl=rep_url

Например, после подключения репозитория REMII, в директории репозиториев появится несколько конфигурационных файлов Remi (remi-*.repo).

Как вы видите, Remi имеет отдельный конфигурационный файл для каждой версии php. Вам нужно включить нужную вам версию в конфигурационном файле, например у меня на сервере будет стоять версия php 7.3, для этого я включил именно этот репозиторий (в файле remi-php73.repo указал enabled=1):

Вы можете подключит репозиторий вручную, для этого нужно создать конфигурационный файл репозитория в директории /etc/yum.repos.d/. Подключим репозиторий MaruaDB.

Добавим в него данные, которое нам предоставляет разработчик пакета MariaDB:

name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos73-amd64/
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Что представляет собой репозиторий CentOSPlus?

CentOSPlus репозиторий содержит пакеты, которые обновляют те, что входят в состав основного репозитория. Эти пакеты не являются частью базового набора и расширяют функциональность CentOS в ущерб предшествующей его совместимости с дистрибутивом основного поставщика. Подключение этого репозитория приведет в дальнейшем к изменению CentOS. Дополнительную информацию вы можете получить в файле Readme для CentOS 4 и CentOS 5. Так же просмотрите каталог CentOSPlus для CentOS 4 или CentOS 5 на наших зеркалах для той архитектуры которую вы собираетесь использовать.

Репозиторий CentOSPlus содержит группы пакетов, все из которых являются обновлениями. Может стать так, что вы не захотите использовать CentOSPlus целиком, а будете выбирать только те пакеты, которые вы хотите использовать.
CentOSPlus репозиторий содержит также CentOS Web Stack. Если вы заинтересованы в обновлении до CentOS Web Stack см. на этой странице. CentOS Web Stack содержит обновления для Apache (httpd) 2.0.58, MySQL 5.0, PostgreSQL 8.1, Perl 5.88, mod_perl 2, PHP 5.1.6, and ODBC.

Перед тем как подключать репозиторий CentOSPlus вы должны ознакомится с применением опций в yum, таких как includepkgs= и/или exclude=. Чтобы прочитать об этих возможностях используйте следующую команду в терминале:

man yum.conf

Добавление репозитория EPEL

EPEL — самый простой в установке репозиторий. Epel-release package включен в стандартный Extras repository и доступен по умолчанию. Для его установки достаточно выполнить команду:

yum install epel-release -y

В процессе установки будет создан файл «epel.repo», который будет содержать все данные для работы с репозиторием. Выполним команду выводящую содержимое файла.

cat /etc/yum.repos.d/epel.repo


name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7


name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1


name=Extra Packages for Enterprise Linux 7 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

Создание репозитория

Настроим свой репозиторий, в котором будут храниться установочные пакеты. Также настроим их автоматическую синхронизацию с репозиторием CentOS.

Устанавливаем необходимые утилиты для работы с локальным репозиторием:

yum install createrepo yum-utils

Создаем каталоги для репозитория:

mkdir -p /usr/share/nginx/html/repos/7/{os,updates}/x86_64

* в данном примере будет создан каталог /usr/share/nginx/html/repos/7, а внутри него каталоги os (стандартный репозиторий для установка пакетов) и updates (обновления), в каждой из которых каталог x86_64 (для систем x64 архитектуры x86).

Синхронизируем наш будущий репозиторий с источником пакетов, например, с зеркалом от Яндекса:

rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/7/os/x86_64/ /usr/share/nginx/html/repos/7/os/x86_64/

… ждем …

После синхронизируем updates:

rsync -iavrt —delete —exclude=’repo*’ rsync://mirror.yandex.ru/centos/7/updates/x86_64/ /usr/share/nginx/html/repos/7/updates/x86_64/

Создаем репозитории:

createrepo -v /usr/share/nginx/html/repos/7/os/x86_64

createrepo -v /usr/share/nginx/html/repos/7/updates/x86_64

А также разрешаем группы:

createrepo /usr/share/nginx/html/repos/7/os/x86_64 -g /usr/share/nginx/html/repos/7/os/x86_64/repodata/repomd.xml

createrepo /usr/share/nginx/html/repos/7/updates/x86_64 -g /usr/share/nginx/html/repos/updates/os/x86_64/repodata/repomd.xml

* в некоторых репозиториях файл repomd.xml может иметь другое название, например, comps.xml.

Настраиваем nginx:

vi /etc/nginx/conf.d/default.conf

    …
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        autoindex on;
    }
    …

* в данном примере мы добавили autoindex on для удобства — это позволит просматривать содержимое репозитория в браузере.

Перезапускаем nginx:

systemctl restart nginx

Открываем браузер и переходим по адресу http://<IP-адрес сервера>/repos/7 — мы должны увидеть список os и updates. Походив по нему, мы найдем список скачанных пакетов.

Управление репозиториями в CentOS

Управление пакетами и репозиториями осуществляет утилита YUM (Yellowdog Updater, Modified) — менеджер RPM-пакетов, использующийся в дистрибутивах: RHEL, SentOS, Scientific Linux. В его задачи входит: поиск, установка, удаление пакетов, обновление системы.

Процесс установки пакетов происходит после выполнения команды — yum install packagename. После ввода команды менеджер пакетов проверяет наличие конфигурационных файлов «*.repo», эти файлы содержат информацию о репозиториях и хранятся в директории /etc/yum.repos.d. Во время проверки YUM получает всю необходимую информацию, указывающую откуда загружать пакет и какие зависимости имеют к нему отношение. После чего происходит установка пакета.

Конфигурационные файлы репозиториев содержат следующие параметры:

  • name — имя репозитория, может быть любым.
  • baseurl — ссылка указывающая на репозиторий. Может быть вида: ftp://link, http://link, https://link, если репозиторий размещен в сети интернет, или file://path, если репозиторий размещен локально.
  • enabled — указывает на активацию репозитория при выполнении обновления. Может иметь следующие значения, 1 — если подключен, 0 — если отключен.
  • gpgcheck — включить или выключить проверку сигнатуры GPG. Может иметь следующие значения, 1 — проверять, 0- не проверять.
  • gpgkey — ссылка на ключ GPG.
  • exclude — список исключаемых пакетов.
  • includepkgs — список включаемых пакетов.
  • mirrorlist — вместо ссылки на конкретный адрес репозитория, может использоваться ссылка на список адресов из которых будет выбран нужный адрес.

Подключение репозиториев в CentOS

Добавить репозиторий в CentOS можно несколькими способами. Можно создать файл «.repo» в директории /etc/yum.repos.d или установить rpm-пакет с информацией о репозитории. Если rpm-пакет отсутствует, то добавлять приходится ручками, создавая конф. файл репозитория.

Для просмотра списка активных репозиториев выполняют команду — yum repolist

yum repolist

# Выхлоп:
repo id                                 repo name                                                              status
base/7/x86_64                           CentOS-7 - Base                                                         9,007
epel/x86_64                             Extra Packages for Enterprise Linux 7 - x86_64                         10,580
extras/7/x86_64                         CentOS-7 - Extras                                                         390
updates/7/x86_64                        CentOS-7 - Updates                                                      2,469
repolist: 22,446

# repo id - id репозитория
# repo name - имя репозитория
# status - количество пакетов

Удаление репозиториев в CentOS

Для удаления репозиториев в системе должен быть установлен пакет yum-utils.

yum install yum-utils -y

Допустим мы хотим удалить из системы репозитории REMI и ELRepo, для этого надо узнать «repo id» при помощи команды yum repolist.

yum repolist

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.yandex.ru
 * elrepo: elrepo.0m3n.net
 * epel: mirror.23media.de
 * extras: mirror.yandex.ru
 * remi-safe: mirror.23media.de
 * updates: mirror.yandex.ru
repo id                           repo name                                                                    status
base/7/x86_64                     CentOS-7 - Base                                                               9,007
elrepo                            ELRepo.org Community Enterprise Linux Repository - el7                          162
epel/x86_64                       Extra Packages for Enterprise Linux 7 - x86_64                               10,580
extras/7/x86_64                   CentOS-7 - Extras                                                               390
remi-safe                         Safe Remi's RPM repository for Enterprise Linux 7 - x86_64                    1,144
updates/7/x86_64                  CentOS-7 - Updates                                                            2,469
repolist: 23,752

Удалим указанные репозитории.

yum-config-manager --disable remi-safe --disable elrepo

Команда скорее отключает указанные репозитории, чем удаляет их. Она выставляет значение параметра enabled равным 0. Файлы репозиториев «.repo» останутся на месте. Если выполнить команду yum repolist, то репозитории будут недоступны.

yum repolist

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.yandex.ru
 * epel: fedora-mirror01.rbc.ru
 * extras: mirror.yandex.ru
 * updates: mirror.yandex.ru
repo id                                 repo name                                                              status
base/7/x86_64                           CentOS-7 - Base                                                         9,007
epel/x86_64                             Extra Packages for Enterprise Linux 7 - x86_64                         10,580
extras/7/x86_64                         CentOS-7 - Extras                                                         390
updates/7/x86_64                        CentOS-7 - Updates                                                      2,469
repolist: 22,446

Теперь нужно обновить кэш YUM.

yum clean all
yum makecache

Для полного удаления репозиториев следует удалить их конфигурационные файлы.

# Переходим в каталог /etc/yum.repos.d
cd /etc/yum.repos.d

# Удаляем файлы
rm -f elrepo.repo remi-php70.repo remi-php71.repo remi-safe.repo remi.repo

Ротация логов виртуальных хостов

Последний штрих в настройке web сервера — ротация логов виртуальных хостов. Если этого не сделать, то через какое-то, обычно продолжительное, время возникает проблема в связи с огромным размером лог файла.

У нас уже будет файл конфигурации logrotate для nginx, который был создан во время установки — /etc/logrotate.d/nginx. Приведем его к следующему виду:

/var/log/nginx/*log
/web/sites/p1m2a.zeroxzed.ru/log/*log {

    create 0644 nginx nginx
    size=1M
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

/web/sites/hl.zeroxzed.ru/log/*log {

    create 0644 hl.zeroxzed.ru hl.zeroxzed.ru
    size=1M
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

Это просто пример конфигурации. Все параметры вы можете поменять по своему усмотрению. Примеров конфигурации logrotate в интернете много.

На этом все. Я рассмотрел все основные моменты, которые необходимы для установки и настройки производительного web сервера на основе nginx и php-fpm последних версий. При этом рассказал о некоторых вещах, которые повышают удобство и гибкость эксплуатации сервера.

Доступ к сайту по sftp

Настройка сервера почти завершена. Если вы администратор и единственный пользователь, то больше можно ничего не делать. Вы и так сможете загрузить на сервер все что нужно тем или иным способом. Если же вы будете передавать управление сайтами другим людям, им нужен доступ к директории с исходниками сайта. Раньше для этих целей повсеместно использовали ftp. Если вы хотите так сделать, у меня есть статья по настройке ftp сервера vsftpd.

Я же предлагаю использовать sftp по нескольким причинам:

  1. Он безопаснее.
  2. Его быстрее настроить.
  3. Не надо отдельно настраивать firewall.

Статью по настройке sftp доступа я уже тоже писал, все подробности там. Здесь без комментариев выполним необходимые действия.

Создаем пользователя для подключения к сайту. Я обычно использую имя пользователя пересекающееся с названием сайта. Так удобнее управлять.

# useradd -s /sbin/nologin hl.zeroxzed.ru
# passwd hl.zeroxzed.ru

Открываем конфиг ssh по пути /etc/ssh/sshd_config и комментируем там одну строку, добавляя далее несколько новых.

#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User hl.zeroxzed.ru
ChrootDirectory /web/sites/hl.zeroxzed.ru
ForceCommand internal-sftp

Перезапускаем службу sshd.

# systemctl restart sshd

Этого уже достаточно, чтобы вы могли подключиться к сайту, к примеру, с помощью программы winscp. Если что-то пойдет не так и будут какие-то ошибки, то смотреть подробности нужно в логе /var/log/secure. Но тут возникает много нюансов с правами к файлам и директориям. Дальше я расскажу, как их аккуратно и грамотно разрулить, чтобы у нас не было проблем с дальнейшей работой сайтов от разных пользователей.

Резюме

Использование репозитория CentOSPlus считается более опасным, чем при использовании других репозиториев CentOS, так как он рассчитан на обновление пакетов и не предназначен быть полностью включенным.

Вы можете использовать все пакеты из CentOSPlus, но обычно берутся необходимые пакеты и используется строка exclude= и includepkgs= (или exclude= и плагин yum-plugin-priorities (yum-priorities)) чтобы использовать только необходимые пакеты из репозитория CentOSPlus.

Пожалуйста, убедитесь, что вы понимаете все эти конепциии, прежде чем использовать репозиторий CentOSPlus.

Заключение

Подведем итог того, что мы сделали:

  1. Настроили сервисы nginx, apache, php-fpm таким образом, чтобы они отдавали информацию о своем состоянии.
  2. С помощью zabbix агентов передали эту информацию на сервер.
  3. Используя зависимые элементы (dependent items) настроили парсинг метрик.
  4. Настроили на сервере мониторинга необходимые шаблоны и прикрепили их к наблюдаемым серверам.
  5. Собрали dashboard для мониторинга за веб сервером.

То есть выполнили весь комплекс действий для организации полноценного мониторинга web сервера в zabbix.

Одно из применений подобного мониторинга — выбор более быстрого хостинга для сайта. К примеру, мне некоторое время назад понадобилось сменить хостинг. Но как узнать, будет ли он быстрее текущего или нет. Характеристики примерно у всех одинаковые. Я просто взял тестовый период, настроил на сервере все, что мне нужно, в том числе мониторинг веб сервера, перенес туда сайт и понаблюдал сутки. Уже по времени отклика nginx и php-fpm мне стало понятно, что новый хостинг быстрее:

Время отклика страниц сайта и скорость их загрузки в целом тоже улучшились. Я однозначно понял, что надо переезжать и не ошибся.

Это пример из старой версии статьи, где показаны старые метрики и графики. Оставил его, так как он в целом информативен. Текущий мониторинг web сайта так же можно использовать для анализа производительности хостинга.

Онлайн курс по Linux

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.

Что даст вам этот курс:

  • Знание архитектуры Linux.
  • Освоение современных методов и инструментов анализа и обработки данных.
  • Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
  • Владение основными рабочими инструментами системного администратора.
  • Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
  • Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.

Проверьте себя на вступительном тесте и смотрите подробнее программу по .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: