
Apache 2.2 と Apache 2.4 Web サーバーを同じ VM 上で実行する必要があります。この必要性は、次の理由により生じます。
- Oracle WebGate モジュールをホストする必要がありますが、Apache 2.4 をサポートしていません (そのためには Red Hat が提供する 2.2 httpd を使用します)
- WebGate処理に関連してApache 2.4ネイティブセッションを使用する必要がある
- 使用できる VM の数に制限がある (両方の Web サーバーが同じ VM 内にある必要がある)
これらはすべて、RHEL 5.8 VM 上で実行する必要があります (RHEL5 [および 6] 用の Apache 2.4 用の Red Hat RPM はありません)。私たちの一般的な意図は、2.2 インスタンスを、ローカルホスト ポートをリッスンする 2.4 インスタンス (それ自体がオリジン サーバーへのリバース プロキシとして機能) へのリバース プロキシとして機能させることです。ポートの競合を回避したり、プロキシを処理したりするための構成は問題ではありません。私はそのようなことには精通しています。私がよくわからないのは、両方のサーバー バージョンをインストールして同時に動作させる一般的なアプローチです。
これまでにこれを実行した人はいますか? 実行したことがあるなら、一般的なアプローチは何でしたか? 両方のバージョンを一緒にインストールしても問題なく動作しましたか? それとも、たとえば chroot を実行してライブラリを分離する必要がありましたか? または、2.4 バイナリに必要なすべてのものを静的にリンクしましたか? それとも、どうですか? SELinux を強制モードで実行していますが、その点について注意すべき点はありますか?
同じようなことをした人をグーグルで検索しても何も出てこなかったので、ここで誰かが同じようなことをしたと期待しています。
ありがとう!
答え1
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"
ソースからパッケージをビルドするのは良くないことだとわかっていますが、それが唯一の解決策である場合もあります