Установка PHP 5.3.5 (FPM, Imagick, eaccelerator, memcache) на CentOS 5.5

Поступила заявочка на обновление php-5.2.14 до php-5.3.5, с сохранением всех существующих модулей. Причем обновить нужно на боевой машине, находящейся в продакшене. Операционная система CentOS 5.5, собственно как и везде (корпоративный стандарт, ничего не поделаешь). В стандартных репах лежит вообще какая-то доисторическая версия данного ПО, в EPEL`e - PHP-5.2.17, не люблю ставить софт из непроверенных источников, и тем более компилировать его ручками на таких машинах. Версия выбрана не случайно в php5.3 появилась какая-то полезная штука под названием PCRE, которой к сожалению нету в php5.2, а версии выложенные практически во всех сторонних репозиториях - php-5.3.3. Данная php версия по словам разработчиков содержит критическую уязвимость.

Решено: собираем свой пакет php для CentOS, или..

Сборка rpm-пакетов PHP-5.3.5 для установки:

Проковырялся пол дня со сборкой пакетов php, постоянно сыпались ошибки то ему Libevent слишком новый, не может конфиг сгенерить, то еще какая-то замута, решил поискать уже собранные пакеты или php-5.3.5.src.rpm - пакеты в поисках наткнулся на хороший репозиторий REMI для CentOS 5.5 из него и будем ставить.

1. Подключаем REMI-перозиторий

rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

Для этого репозитория необходимо чтобы был подключен репозиторий EPEL, последний релиз, на момент написания - epel-release-5-4.noarch

Ставим EPEL-репозиторий

rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm

повторяем установку REMI.
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

Должно пройти удачно...

2. Теперь включаем РЕМИ, в /etc/yum.repos.d находим файлик remi.repo, открываем и исправляем строку на enabled=1....
[remi]
name=Les RPM de remi pour Enterprise Linux 5 - $basearch
baseurl=http://rpms.famillecollet.com/enterprise/5/remi/$basearch/
http://iut-info.univ-reims.fr/remirpms/enterprise/5/remi/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority

[remi-test]
name=Les RPM de remi en test pour Enterprise Linux 5 - $basearch
baseurl=http://rpms.famillecollet.com//enterprise/5/test/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi


3. Проверяем, наличие нужных нам пакетов:

# yum install php-fpm
//тут целая простыня из пакетов, опускаем...


Ништяк, репозиторий работает, необходимые пакеты есть, но обновление будет недоступно, т.к. версии установленные у меня php-5.2.14 из своего репозитория и php-5.3.5 несовместимы.

4. Смотрим модули php установленные в системе, делаем бекапы, удаляем/устанавливаем необходимые пакеты:

php -m

Записываем в блокнотик, делаем бекапы существующих конфигов(они не удалятся при yum remove, просто для душевного спокойствия), удаляем существующие php-пакеты:

rpm -qa | grep php


php-5.2.14-1
php-devel-5.2.14-1
php-pdo-5.2.14-1
php-ZendFramework-1.11.0-1.el5.remi
php-cli-5.2.14-1
php-imagick-5.2.14-1
php-memcache-5.2.14-1
php-process-5.2.14-1
php-mcrypt-5.2.14-1
php-pear-MDB2-Driver-mysql-1.4.1-3.el5.centos
php-gd-5.2.14-1
php-bcmath-5.2.14-1
php-fpm-5.2.14-1
php-pear-1.9.1-6.el5.remi
php-common-5.2.14-1
php-eaccelerator-5.2.14-1
php-mbstring-5.2.14-1
php-pear-MDB2-2.4.1-2.el5.centos
php-xml-5.2.14-1
php-mysql-5.2.14-1


Удаляем ненужные пакеты:
# yum remove php php-devel php-pdo php-ZendFramework php-cli php-imagick php-memcache php-process php-mcrypt php-pear-MDB2-Driver-mysql php-gd php-bcmath php-fpm php-pear php-common php-eaccelerator php-mbstring php-pear-MDB2 php-xml php-mysql


NB: Внимание, в случае обновления пакетов php-5.2 внутри одной ветки с php-5.2.14 до php-5.2.17 даунайма не будет, в нашем случаем будет небольшой даунтайм, зависящий от скорости вашего интернета.

NB: В своем репозитории я собирал пакеты php-fpm с уже вкомпиленными eaccelerator, memcache, imagick, тут же названия пакетов будут немного отличаться, ибо они собирались как отдельные пакеты, для установки на любую версию php-5.3 (Смотрим дальше).

Устанавливаем новые пакеты:

# yum install php php-devel php-pdo php-ZendFramework php-cli php-pecl-imagick php-pecl-memcache php-process php-mcrypt php-pear-MDB2-Driver-mysql php-gd php-bcmath php-fpm php-pear php-common php-eaccelerator php-mbstring php-pear-MDB2 php-xml php-mysql


5. Правим конфиги, восстанавливаем конфиги из бекапов:

NB: Внимание! Конфиг PHP-FPM теперь лежит по адресу /etc/php-fpm.d/www.conf, старый конфиг по адресу /etc/php-fpm.conf теперь лишь ссылка. Все конфиги модулей теперь хранятся в /etc/php.zts, но и по старому пути тоже работают /etc/php.d.

Поправили конфиги, порты в конфигах PHP-FPM, можно запускать...

/etc/init.d/php-fpm restart


У меня всё заработало, чего и Вам желаю.

Cheerz...




Вас также может заинтересовать:

Установка Centos 6
Установка GeoIP (Centos, Red Hat)
Установка 1C 8.2 под PostgreSQL на CentOS 6.3
Установка GitWeb на Centos 5.5
Установка PHP-SQLite в CentOS из SRC-RPM
Сборка и установка MemcacheDB на CentOS 5.5