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 успешно запускается.
10 окт. 2019 г.

Centos 7 - Настройка http2 на Apache 2.4 без рекомпиляции Apache сервера - mod_http2

Если для активации http2 в nginx достаточно просто подключить сертификат и добавить опцию http2 в listen, то в случае с настройкой http2 apache понадобится пересборка веб-сервера с опцией --enbale-http2.
Но можно обойтись и без! Для этого есть репозиторий от CodeIt с mod_http2.
Устанавливаем репозиторий:
# wget https://repo.codeit.guru/codeit.el`rpm -q --qf "%{VERSION}" $(rpm -q --whatprovides redhat-release)`.repo
# cp codeit.el7.repo /etc/yum.repos.d/
Устанавливаем сам модуль
# yum install mod_http2.x86_64
Загружены модули: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.sh.cvut.cz
 * epel: epel.mirror.liteserver.nl
 * extras: ftp.sh.cvut.cz
 * remi: mirror.serverion.com
 * remi-php55: mirror.serverion.com
 * remi-php56: mirror.serverion.com
 * remi-test: mirror.serverion.com
 * updates: ftp.sh.cvut.cz
Разрешение зависимостей
--> Проверка сценария
---> Пакет mod_http2.x86_64 0:1.15.3-1.codeit помечен для установки
--> Обработка зависимостей: libnghttp2 >= 1.21.1 пакета: mod_http2-1.15.3-1.codeit.x86_64
--> Обработка зависимостей: libnghttp2.so.14()(64bit) пакета: mod_http2-1.15.3-1.codeit.x86_64
--> Проверка сценария
---> Пакет libnghttp2.x86_64 0:1.31.1-2.el7 помечен для установки
--> Обработка конфликта: mod_http2-1.15.3-1.codeit.x86_64 конфликтует с httpd < 2.4.25-8
--> Перепроверка зависимостей с новыми параметрами.
--> Проверка сценария
---> Пакет httpd.x86_64 0:2.4.6-118.el7.centos помечен для обновления
--> Обработка зависимостей: httpd = 2.4.6-118.el7.centos пакета: 1:mod_ssl-2.4.6-118.el7.centos.x86_64
---> Пакет httpd.x86_64 0:2.4.41-4.codeit.el7 помечен как обновление
--> Обработка зависимостей: httpd-tools = 2.4.41-4.codeit.el7 пакета: httpd-2.4.41-4.codeit.el7.x86_64
--> Обработка зависимостей: httpd-filesystem = 2.4.41-4.codeit.el7 пакета: httpd-2.4.41-4.codeit.el7.x86_64
--> Обработка зависимостей: httpd-filesystem пакета: httpd-2.4.41-4.codeit.el7.x86_64
--> Обработка зависимостей: libbrotlienc.so.1()(64bit) пакета: httpd-2.4.41-4.codeit.el7.x86_64
--> Обработка зависимостей: libbrotlicommon.so.1()(64bit) пакета: httpd-2.4.41-4.codeit.el7.x86_64
--> Проверка сценария
---> Пакет brotli.x86_64 0:1.0.7-5.el7 помечен для установки
---> Пакет httpd-filesystem.noarch 0:2.4.41-4.codeit.el7 помечен для установки
---> Пакет httpd-tools.x86_64 0:2.4.6-118.el7.centos помечен для обновления
---> Пакет httpd-tools.x86_64 0:2.4.41-4.codeit.el7 помечен как обновление
---> Пакет mod_ssl.x86_64 1:2.4.6-118.el7.centos помечен для обновления
---> Пакет mod_ssl.x86_64 1:2.4.41-4.codeit.el7 помечен как обновление
--> Обработка зависимостей: sscg >= 2.2.0 пакета: 1:mod_ssl-2.4.41-4.codeit.el7.x86_64
--> Проверка сценария
---> Пакет sscg.x86_64 0:2.5.1-1.el7 помечен для установки
--> Обработка зависимостей: libpath_utils.so.1(PATH_UTILS_0.2.1)(64bit) пакета: sscg-2.5.1-1.el7.x86_64
--> Обработка зависимостей: libtalloc.so.2(TALLOC_2.0.2)(64bit) пакета: sscg-2.5.1-1.el7.x86_64
--> Обработка зависимостей: libpath_utils.so.1()(64bit) пакета: sscg-2.5.1-1.el7.x86_64
--> Обработка зависимостей: libtalloc.so.2()(64bit) пакета: sscg-2.5.1-1.el7.x86_64
--> Проверка сценария
---> Пакет libpath_utils.x86_64 0:0.2.1-32.el7 помечен для установки
---> Пакет libtalloc.x86_64 0:2.1.14-1.el7 помечен для установки
--> Обработка конфликта: httpd-2.4.41-4.codeit.el7.x86_64 конфликтует с apr < 1.5.0-1
--> Перепроверка зависимостей с новыми параметрами.
--> Проверка сценария
---> Пакет apr.x86_64 0:1.4.8-3.el7_4.1 помечен для обновления
---> Пакет apr.x86_64 0:1.5.2-1.el7.codeit помечен как обновление
--> Проверка зависимостей окончена

Зависимости определены

==================================================================================================
 Package                   Архитектура     Версия                           Репозиторий     Размер
==================================================================================================
Установка:
 mod_http2                 x86_64          1.15.3-1.codeit                  CodeIT          208 k
Обновление:
 apr                       x86_64          1.5.2-1.el7.codeit               CodeIT          111 k
 httpd                     x86_64          2.4.41-4.codeit.el7              CodeIT          1.4 M
Установка зависимостей:
 brotli                    x86_64          1.0.7-5.el7                      epel            318 k
 httpd-filesystem          noarch          2.4.41-4.codeit.el7              CodeIT           27 k
 libnghttp2                x86_64          1.31.1-2.el7                     epel             67 k
 libpath_utils             x86_64          0.2.1-32.el7                     base             28 k
 libtalloc                 x86_64          2.1.14-1.el7                     base             32 k
 sscg                      x86_64          2.5.1-1.el7                      epel             53 k
Обновление зависимостей:
 httpd-tools               x86_64          2.4.41-4.codeit.el7              CodeIT          1.3 M
 mod_ssl                   x86_64          1:2.4.41-4.codeit.el7            CodeIT          1.3 M

Итого за операцию
==================================================================================================
Установить  1 пакет  (+6 зависимых)
Обновить    2 пакета (+2 зависимых)

Объем загрузки: 4.8 M
Is this ok [y/d/N]: y

 Обратите внимание, что из репозитория CodeIt так же обновится и сам http сервер.
Так же я заменил старый /etc/httpd/conf.modules.d/00-proxy.conf на новый /etc/httpd/conf.modules.d/00-proxy.conf.rpmnew.

Готово, директива     Protocols h2 http/1.1 готова к использованию в конфигурации apache.