동일한 서버에 apache2.2와 apache2.4를 동시에 설치 및 실행

동일한 서버에 apache2.2와 apache2.4를 동시에 설치 및 실행

동일한 VM에서 Apache 2.2 및 Apache 2.4 웹 서버를 실행해야 합니다. 필요성은 다음에 의해 생성됩니다.

  • Apache 2.4를 지원하지 않는 Oracle WebGate 모듈을 호스팅하기 위한 요구 사항(우리는 이를 위해 Red Hat에서 제공하는 2.2 httpd를 사용합니다)
  • WebGate 처리와 관련하여 Apache 2.4 기본 세션을 사용하기 위한 요구 사항
  • 사용할 수 있는 VM 수에 대한 제한(두 웹 서버가 모두 동일한 VM에 있어야 함)

이 모든 작업은 RHEL 5.8 VM에서 발생해야 합니다(RHEL5용 Apache 2.4용 Red Hat RPM은 없습니다(실제로는 6도 아님).). 우리의 일반적인 의도는 2.2 인스턴스가 localhost-port-listening 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"

소스에서 패키지를 빌드하는 것이 나쁜 생각이라는 것을 알고 있지만 때로는 이것이 유일한 탈출구입니다.

관련 정보