sysmerge IT

26 окт. 2019 г.

Centos 6 обновление httpd 2.2 до 2.4 + php 5.6

Имеем - Centos 6.9 + httpd 2.2 + php 5.6. Необходимо обновить apache до 2.4.
Для начала добавим нужный нам репозиторий
 # yum install centos-release-scl
Так же нам пригодится  yum-plugin-replace:
 # yum install yum-plugin-replace

Собственно, пробуем заменить наш текущий httpd на новый. Для уточнения - новый httpd в репе имеет название httpd24-httpd:
# yum replace httpd --replace-with=httpd24-httpd
# service httpd24-httpd restart
Но не все так просто. При попытка запуска мы получим такие ошибки
# service httpd24-httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: Syntax error on line 353 of /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf: Syntax error on line 6 of /opt/rh/httpd24/root/etc/httpd/conf.d/php.conf: Cannot load modules/libphp5.so into server: /opt/rh/httpd24/root/etc/httpd/modules/libphp5.so: cannot open shared object file: No such file or directory
                                                           [FAILED]

Сразу уточним, что нам апач располагается тут /opt/rh/httpd24/root/etc/httpd/. И ему не хватает библиотеки php. Попробуем самое первое, что приходит в голову - подкинем ему наш старый libphp5.so, который остался у httpd 2.2. Проверяем:
# service httpd24-httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd: httpd: Syntax error on line 353 of /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf: Syntax error on line 6 of /opt/rh/httpd24/root/etc/httpd/conf.d/php.conf: Cannot load modules/libphp5.so into server: /opt/rh/httpd24/root/etc/httpd/modules/ibphp5.so: undefined symbol: unixd_config
                                                           [FAILED]
Не получилось. В принципе, это не удивительно, модуль собран под другую версию php. Остается лишь одно - качаем исходники php нужной версии (у нас установлен 5.6.38) отсюда https://www.php.net/downloads.php. Устанавливаем devel для нового httpd 2.4:
# yum install httpd24-httpd-devel
Распаковываем php, переходим в его директорию и запускаем ./configure с обязательной опцией  --with-apxs2, которая будет указывать на /opt/rh/httpd24/root/usr/bin/apxs apxs ( сборщик пакетов для apache ). Дополнительно перечисляем в опциях все необходимые модули, с которыми должен быть собран libphp5.so. Перечислять их не буду.
#  ./configure --with-apxs2=/opt/rh/httpd24/root/usr/bin/apxs apxs
# make
После этого в директории ./libs  появится libphp5.so , который необходимо разместить по пути, которому ожидаем его увидеть httpd 2.4 -  /opt/rh/httpd24/root/etc/httpd/modules/libphp5.so.

Готово, httpd 2.4 успешно запускается.