
Wir müssen Apache 2.2- und Apache 2.4-Webserver auf derselben VM ausführen. Der Bedarf entsteht durch:
- Voraussetzung ist das Hosten eines Oracle WebGate-Moduls, das Apache 2.4 nicht unterstützt (wir verwenden hierfür das von Red Hat bereitgestellte 2.2 httpd).
- Voraussetzung für die Verwendung nativer Apache 2.4-Sitzungen in Verbindung mit der WebGate-Verarbeitung
- Eine Beschränkung der Anzahl der VMs, die wir verwenden können (beide Webserver müssen sich in derselben VM befinden)
Dies alles muss auf einer RHEL 5.8 VM erfolgen (beachten Sie, dass es für RHEL5 [eigentlich auch nicht 6] kein Red Hat RPM für Apache 2.4 gibt). Unsere allgemeine Absicht ist, dass die 2.2-Instanz als Reverse-Proxy für eine 2.4-Instanz fungiert, die auf dem lokalen Host-Port lauscht (und selbst als Reverse-Proxy für unsere Ursprungsserver fungiert). Die Konfiguration zur Vermeidung von Portkonflikten, zur Handhabung des Proxyings usw. ist kein Problem, ich kenne mich damit gut aus. Ich bin mir beim allgemeinen Ansatz, beide Serverversionen gleichzeitig zu installieren und betriebsbereit zu haben, nicht sicher.
Hat das schon mal jemand gemacht? Und wenn ja, wie war Ihr genereller Ansatz? Hat es reibungslos funktioniert, beide Versionen zusammen zu installieren, oder mussten Sie z. B. eine Version chrooten, um eine Trennung zwischen den Bibliotheken zu schaffen? Oder haben Sie alles, was für die 2.4-Binärdatei benötigt wird, statisch verknüpft, oder was? Wir führen SELinux im Durchsetzungsmodus aus – gibt es diesbezüglich irgendwelche Auswirkungen, die man beachten sollte?
Beim Googeln habe ich nichts gefunden, da mir jemand etwas Ähnliches passiert ist, und hoffe, dass es hier jemanden gibt, der das getan hat.
Danke schön!
Antwort1
Sie können httpd-2.4 aus dem Quellcode erstellen. Zunächst müssen Sie apr/apr-util auf mindestens 1.3.0 aktualisieren.
checking for APR version 1.3.0 or later... yes
checking for APR-util version 1.3.0 or later... yes
Erstellen und installieren Sie apr-1.4.8
# ./configure --prefix=/opt/apr-1.4.8
# make
# make install
Erstellen und installieren Sie 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
Erstellen und installieren Sie 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
Ich würde vorschlagen, die Systempakete apr/apr-util nicht anzufassen
Einige grundlegende Kontrollen
# 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"
Ich weiß, dass es keine gute Idee ist, Pakete aus dem Quellcode zu erstellen, aber manchmal ist es der einzige Ausweg