mod_jk를 설치하기 위해 gcc, gcc-c++, httpd-devel 세 가지 패키지가 필요합니다.
# yum -y install gcc gcc-c++ httpd-devel
http://tomcat.apache.org/download-connectors.cgi
위 주소에 들어가서 톰캣을 다운한 것 처럼 JK 1.2.48 Source Release tar.gz을 우클릭하고 링크 주소 복사를 클릭합니다.
/usr/local 경로에 다운받습니다.
# cd /usr/local
# wget https://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz
tomcat-connectors-1.2.48-src.tar.gz 파일이 다운된 것을 확인할 수 있습니다. tar 명령어를 통해 압축을 해제합니다.
# tar -zxf tomcat-connectors-1.2.48-src.tar.gz
압축 해제 후 생성된 tomcat-connectors-1.2.48-src 폴더 안에 native 디렉토리로 들어가서 아래 명령어를 입력합니다.
# cd tomcat-connectors-1.2.48-src/native/
# ./configure --with-apxs=/usr/bin/apxs
# make
# make install
명령어를 다 실행하게 되면 mod_jk.so라는 파일이 생기게 됩니다. 해당 파일이 생성되었는지 확인합니다.
# ls /etc/httpd/modules/ | grep mod_jk
연동을 위한 준비가 끝났습니다. 이제 아파치 설정을 변경하겠습니다.
# vi /etc/httpd/conf/httpd.conf
LoadModule jk_module modules/mod_jk.so
<VirtualHost *:80>
ServerName localhost
JkMount /* tomcat
</VirtualHost>
위 코드를 httpd.conf 파일 맨 아래에 추가합니다.
VirtualHost *:80, ServerName 두 가지 정보를 통해 들어온 요청을 어떤 톰캣에서 처리할지 결정합니다.. 지금 설정은 80 포트로 들어오는 모든 요청을 tomcat으로 보내고 있습니다.
#EX) 아래 설명을 위한 코드 입니다.
LoadModule jk_module modules/mod_jk.so
<VirtualHost *:80>
ServerName example.com
JkMount /*.do tomcat2
</VirtualHost>
만약 위와 같이 설정하게 되면 80포트로 들어오면서 요청 URL이 example.com이고, .do로 끝나는 것들만 tomcat2에서 처리하게 됩니다. (이건 안 하셔도 됩니다. 설명을 위한 예제입니다.)
<IfModule mod_jk.c>
JkWorkersFile conf/workers.properties
JkShmFile run/mod_jk.shm
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%y %m %d %H:%M:%S] "
</IfModule>
다시 연동으로 돌아와서 VirtualHost 부분 아래에 위 코드를 추가합니다. worker를 관리하는 파일인 workers.properties의 위치와 로그 파일의 위치 및 level을 설정하는 코드입니다.
위 코드를 /etc/httpd/conf.modules.d/mod_jk.conf 파일로 따로 설정하는 방법도 있지만 간혹 연동이 안되는 경우가 있어 httpd.conf 파일에 같이 넣는 편입니다.
이제 httpd.conf에서 할 작업은 끝났습니다. :wq로 나가주시면 됩니다.
# vi /etc/httpd/conf/workers.properties
위에서 설정한 JkWorkerFile 워커 경로에 workers.properties를 만듭니다.
그 후에 아래 내용을 추가해주세요.
worker.list=tomcat
worker.tomcat.port=8009
worker.tomcat.host=localhost
worker.tomcat.type=ajp13
worker.tomcat.lbfactor=1
이제 아파치에서 설정할 것들이 끝났습니다. 이제 톰캣에서 설정을 실행해보도록 하겠습니다.
톰캣의 conf/server.xml에 들어갑니다.
vi /usr/local/apache-tomcat-8.5.69/conf/server.xml
Connector 관련 부분의 주석을 풀어주고, 안에 내용을 아래와 같이 수정합니다.
<Connector protocol="AJP/1.3"
address="0.0.0.0"
secretRequired="false"
port="8009"
redirectPort="8443" />
이제 모든 설정이 끝났습니다. 톰캣과 아파치를 재시작하고 ip 주소를 입력하면 톰캣 화면이 나옵니다.
chatGPT보고 해도 안되는 연동을 이거보고 겨우 성공했네요!!
글 올려주셔서 너무 감사합니다