Нам необходимо запускать веб-серверы Apache 2.2 и Apache 2.4 на одной виртуальной машине. Потребность создается:
Все это должно происходить на виртуальной машине RHEL 5.8 (обратите внимание, что нет Red Hat RPM для Apache 2.4 для RHEL5 [или 6, на самом деле]). Наше общее намерение состоит в том, чтобы экземпляр 2.2 действовал как обратный прокси для экземпляра 2.4, прослушивающего localhost-port (который сам действует как обратный прокси для наших исходных серверов). Настройка, позволяющая избежать конфликтов портов, обрабатывать проксирование и т. Д., Не является проблемой, я хорошо разбираюсь в этом. Я не уверен, что это общий подход к установке и работе обеих версий сервера одновременно.
Кто-нибудь делал это раньше? И если да, то каков был ваш общий подход? Сработало ли чисто, если обе версии были установлены вместе, или вам пришлось, например, chroot one для разделения библиотек? Или вы статически связали все необходимое для бинарника 2.4, что ли? Мы запускаем SELinux в принудительном режиме - есть ли какие-то последствия, о которых нужно знать в этом отношении?
Я ничего не нашел в поиске в Google для всех, кто делал что-то подобное, надеясь, что кто-то здесь это сделал.
Спасибо!
Вы можете собрать httpd-2.4 из исходников, прежде всего вам нужно обновить apr / apr-util как минимум до 1.3.0
checking for APR version 1.3.0 or later... yes
checking for APR-util version 1.3.0 or later... yes
Соберите и установите apr-1.4.8
# ./configure --prefix=/opt/apr-1.4.8
# make
# make install
Соберите и установите apr-util-1.5.2
# ./configure --prefix=/opt/apr-util-1.5.2 --with-apr=/opt/apr-1.4.8/ --with-crypto --with-openssl=/usr --with-ldap --with-ldap-include=/usr/include/ --with-ldap-lib=/usr/lib64/
# make
# make install
Соберите и установите apache-2.4.6
# ./configure --prefix=/opt/httpd-2.4.6 --with-apr=/opt/apr-1.4.8/ --with-apr-util=/opt/apr-util-1.5.2/
# make
# make install
Я бы посоветовал не трогать системные пакеты apr / apr-util
Некоторые базовые проверки
# lsof -n -P -i tcp:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 29268 root 4u IPv4 57621 0t0 TCP 127.0.0.1:8080 (LISTEN)
httpd 29269 daemon 4u IPv4 57621 0t0 TCP 127.0.0.1:8080 (LISTEN)
httpd 29270 daemon 4u IPv4 57621 0t0 TCP 127.0.0.1:8080 (LISTEN)
httpd 29273 daemon 4u IPv4 57621 0t0 TCP 127.0.0.1:8080 (LISTEN)
# cat /proc/29268/cmdline
/opt/httpd-2.4.6/bin/httpd
# /opt/httpd-2.4.6/bin/httpd -V
Server version: Apache/2.4.6 (Unix)
Server built: Aug 30 2013 14:33:24
Server's Module Magic Number: 20120211:23
Server loaded: APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture: 64-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/opt/httpd-2.4.6"
-D SUEXEC_BIN="/opt/httpd-2.4.6/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
# lsof -n -P -i tcp:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 29392 root 4u IPv4 58386 0t0 TCP *:80 (LISTEN)
httpd 29394 apache 4u IPv4 58386 0t0 TCP *:80 (LISTEN)
httpd 29395 apache 4u IPv4 58386 0t0 TCP *:80 (LISTEN)
httpd 29396 apache 4u IPv4 58386 0t0 TCP *:80 (LISTEN)
httpd 29397 apache 4u IPv4 58386 0t0 TCP *:80 (LISTEN)
httpd 29398 apache 4u IPv4 58386 0t0 TCP *:80 (LISTEN)
httpd 29399 apache 4u IPv4 58386 0t0 TCP *:80 (LISTEN)
httpd 29400 apache 4u IPv4 58386 0t0 TCP *:80 (LISTEN)
httpd 29401 apache 4u IPv4 58386 0t0 TCP *:80 (LISTEN)
# cat /proc/29392/cmdline
/usr/sbin/httpd
# /usr/sbin/httpd -V
Server version: Apache/2.2.3
Server built: Aug 13 2013 13:27:54
Server's Module Magic Number: 20051115:3
Server loaded: APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=128
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="logs/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
Я знаю, что собирать пакеты из исходников - плохая идея, но иногда это единственный выход