안녕하세요, 여러분. 오늘은 Apache와 Tomcat을 연동하는 방법에 대해 알아보겠습니다. Apache HTTP 서버와 Tomcat 서버를 연동하면, 정적인 웹 페이지는 Apache가 처리하고 동적인 웹 페이지는 Tomcat이 처리하는 등, 각각의 장점을 활용할 수 있습니다.

이를 가능하게 하는 연결 고리가 바로 ‘mod_jk’인데요, 이 포스트에서는 mod_jk를 컴파일하고 Apache에 설정하는 과정에 대해 자세히 설명하겠습니다.

mod_jk란?

mod_jk는 Apache HTTP 서버와 Tomcat 서버를 연동하는 모듈입니다. 이 모듈을 통해 Apache는 정적인 요청을 처리하고, 동적인 요청은 Tomcat으로 전달하게 됩니다.
mod_jk는 JEUS나 JBoss WAS 연결시 에도 사용되고 있다.

mod_jk 모듈 만들기

Linux용 Tomcat Connector인 mod_jk.so 파일을 얻기 위해서는 소스를 직접 컴파일 하거나 시스템 환경에 맞는 바이너리 파일을 다운로드 받으면 됩니다.

mod_jk 컴파일하기

먼저, mod_jk를 컴파일하기 위해 필요한 패키지를 설치해야 합니다. CentOS를 기준으로 아래와 같이 httpd-devel 패키지를 설치합니다.

yum install httpd-devel

그다음, Tomcat Connector를 다운로드 받습니다. (Tomcat 사이트에서 connectors 버전 확인 후 변경 요망)

wget http://www-us.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.46-src.tar.gz
tar xvzf tomcat-connectors-1.2.46-src.tar.gz
cd tomcat-connectors-1.2.46-src/native

다운로드 받은 소스를 컴파일합니다. root계정이 아닌 일반 계정으로 진행 할 경우 compile 권한이 있어야 한다.

./configure --with-apxs=/usr/bin/apxs
make
make install

컴파일이 완료되면, mod_jk.so 파일이 /usr/lib64/httpd/modules 디렉토리에 생성됩니다.

Apache에 mod_jk 설정하기

mod_jk를 컴파일한 후, Apache에 mod_jk를 설정하려면 httpd.conf 파일을 수정해야 합니다.

vi /etc/httpd/conf/httpd.conf

httpd.conf 파일 맨 아래에 다음과 같이 추가합니다.

# mod_jk settings
LoadModule jk_module modules/mod_jk.so
JKWorkersFile conf/workers.properties
JKLogFile logs/mod_jk.log
JKLogLevel info
JKLogStampFormat "[%a %b %d %H:%M:%S %Y]"
JKOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JKRequestLogFormat "%w %V %T"

이 설정은 mod_jk 모듈을 로드하고, 필요한 파일들의 경로를 지정합니다.

Apache에 workers.properties 파일 생성

위에서 지정한 JKWorkersFile 옵션에서 지정한 workers.properties 파일을 생성해야 합니다. 이 파일은 Apache가 Tomcat 서버와 어떻게 통신할지 정의합니다.

vi /etc/httpd/conf/workers.properties

worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009

이 설정은 worker1이라는 이름의 worker를 생성하고, 이 worker가 ajp13 프로토콜을 사용하여 localhost의 8009 포트로 통신하도록 설정합니다.

Apache에 mod_jk 연동

Apache에 mod_jk를 연동하려면 virtual host 설정에 JkMount 옵션을 추가해야 합니다.

sudo vi /etc/httpd/conf.d/vhost.conf

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/html

    JkMount /* worker1

    나머지 설정은 생략...
</VirtualHost>

위 설정은 모든 요청을 worker1로 전달하도록 설정합니다.

이제 Apache와 Tomcat이 성공적으로 연동되었습니다. Apache를 재시작하여 설정을 적용하면 됩니다.

systemctl restart httpd

Tomcat 에서 AJP 커넥터 설정

통합을 완료하려면 Tomcat 서버도 AJP 요청을 수락하도록 구성해야 합니다. 다음은 그 방법입니다.

server.xml 편집: Tomcat의 server.xml 파일을 엽니다. 일반적으로 이 파일은 Tomcat 설치의 conf 디렉토리에 있습니다.
이 구성은 8009 포트에 AJP 커넥터를 설정합니다. 포트 및 기타 매개변수를 필요에 따라 조정하십시오.

vi server.xml

<Connector protocol="AJP/1.3" port="8009" redirectPort="8443" />

저장 및 Tomcat 다시 시작: server.xml 파일을 저장하고 Tomcat 서버를 다시 시작하십시오.

systemctl restart tomcat

이 포스트를 통해 Apache와 Tomcat을 연동하는 방법에 대해 알아보았습니다. 이를 통해 Apache와 Tomcat의 각각의 장점을 활용하여 효율적인 웹 서비스를 제공할 수 있습니다.

태그: , ,

카테고리:

업데이트:

댓글남기기