INTRO
Apache에서 접속하면 Tomcat의 APP이 바로 보일 수 있게 연동을 해주는 작업이 필요합니다.
연동을 하는 이유는 이전의 글을 참고하기 바랍니다.
연동하는 방법은 크게 3가지로 나뉩니다.
- Tomcat Connector를 이용한 mod_jk 연동 (AJP)
- mod_proxy를 이용한 reverse proxy 기능으로 연동 (Proxy 개념 필요)
- mod_proxy_ajp를 이용한 AJP를 reverse proxy로 사용해서 연동 (기존의 2가지 방법 모두 개념이 필요함)
Apache와 Tomcat mod_jk 연동하기
☞ Tomcat Connector 다운로드 (WEB)
Apache와 Tomcat을 연동해줄 Connector를 다운로드합니다.
※ 둘 사이의 통신 프로토콜은 AJP입니다.
☞ Tomcat Connector 압축 해제 (WEB)
[root@LILO-WEB ~]# tar xvzf tomcat-connectors-1.2.48-src.tar.gz
소스 설치시 아래와 같은 에러가 나올 수 있으니 미리 설치하고 넘어가겠습니다.
- 에러: gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory
- 해결: # yum install redhat-rpm-config
☞ Tomcat Connector 소스 트리 구성 및 소스 설치 (WEB)
apxs는 Apache의 확장 모듈을 등록할 때 사용하는 툴으로 설치된 Apache 엔진의 bin 디렉토리에 위치되어 있습니다.
[root@LILO-WEB ~]# cd /root/tomcat-connectors-1.2.48-src/native
[root@LILO-WEB native]# ./configure --with-apxs=/app/apache2/bin/apxs
[root@LILO-WEB native]# make && make install
☞ mod_jk 모듈 권한 변경 (WEB)
설치 후에 로그로 mod_jk 모듈에 대한 권한 변경에 대한 내용이 나옵니다. 화면대로 진행합니다.
[root@LILO-WEB native]# chmod 755 /app/apache2/modules/mod_jk.so
[root@LILO-WEB native]# ll /app/apache2/modules/mod_jk.so
-rwxr-xr-x 1 root root 1418608 Jan 2 10:16 /app/apache2/modules/mod_jk.so
☞ mod_jk 모듈 로딩 (WEB)
모듈 설치가 완료되었으니 Apache 설정 파일에서 해당 모듈을 사용하겠다는 구문을 작성합니다.
되도록이면 관리 포인트를 위해 Module 등록 라인에 맞춰서 작성하는 것이 좋습니다.
[root@LILO-WEB apache2]# vim /app/apache2/conf/httpd.conf
LoadModule jk_module modules/mod_jk.so
☞ mod_jk conf Include(WEB)
mod_jk도 로그, shm 파일 경로 설정, Worker 설정 파일 경로 설정이 필요하기 때문에 별도의 구문을 추가해야됩니다.
httpd.conf에 추가해줘도 되지만 관리 포인트를 위해 별도의 설정 파일을 생성하는 것이 좋습니다.
이 부분 역시 Include 라인이 모여있는 곳에 작성하는 것이 좋습니다.
[root@LILO-WEB apache2]# vim /app/apache2/conf/httpd.conf
# mod_jk Connector
Include conf/extra/httpd-modjk.conf
☞ mod_jk conf 파일 작성 (WEB)
mod_jk 설정파일의 내용을 작성합니다.
[root@LILO-WEB apache2]# vim /app/apache2/conf/extra/httpd-modjk.conf
<IfModule jk_module>
JkWorkersFile conf/extra/workers.properties
JkShmFile logs/mod_jk.shm
JkLogFile logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
</IfModule>
☞ workers.properties 파일 작성 (WEB)
Tomcat과의 연동의 핵심인 Worker 설정 파일을 작성합니다.(workers.properties)
추후 WAS 증설을 대비해 그룹으로 생성해서 구성원만 추가하면 바로 연동할 수 있는 방식으로 설정하였습니다.
load_balancer라는 그룹의 worker1이라는 구성원이 연동될 WAS이라는 설정입니다.
※ port: AJP 포트, host: WAS 주소, type: ajp13(Tomcat 설정 파일 참고)
worker.list=lilo_lb
worker.lilo_lb.type=lb
worker.lilo_lb.balance_workers=worker1
worker.worker1.port=8009
worker.worker1.host=192.168.56.100
worker.wokrer1.type=ajp13
☞ Tomcat AJP Port, Secret Key 비활성화, Redirect Port 설정 (WAS)
다음은 WAS 서버에서 AJP 포트를 설정하는 작업입니다.
<!--과 -->를 제거하면 주석이 제거됩니다. 만약 다른 포트를 사용할 경우 변경하면 됩니다.
xml 파일의 문법이나 주석 추가 및 제거와 같은 간단한 작업은 숙지하고 있으면 WAS 작업에 많이 도움이 될 것입니다.
만약 secretRequired="false"를 제외하고 실행하게 된다면 Secret Key가 없기 때문에 AJP 연동시 정상 작동이 되지 않습니다.
AJP 프로토콜 설정 구문에 secretRequired="false"를 입력합니다.
[root@LILO-WAS bin]# vim ../conf/server.xml
<Connector protocol="AJP/1.3" address="0.0.0.0" secretRequired="false" port="8009" redirectPort="8443" />
Secret Key가 없을 경우는 false를 설정해야 되는데 당연히 보안적으로 좋지 않습니다.
본문에서는 secretRequired 옵션을 false로 사용하지만 Tomcat 문서에서는 신뢰할 수 있는 네트워크에서만 사용해야 된다고 언급이 되고 있습니다.
보안 취약 부분일 수도 있기 때문에 운영 서버에는 필수로 Secret key를 생성하고 secretRequired 옵션을 true로 사용하기 바랍니다.
☞ AJP Port 설정 적용을 위한 Tomcat 재기동 (WAS)
[root@LILO-WAS ~]# /app/tomcat9/bin/shutdown.sh
[root@LILO-WAS ~]# /app/tomcat9/bin/startup.sh
☞ AJP Port 및 Container Port 오픈 확인 (WAS)
[root@LILO-WAS bin]# ss -atnlp
☞ JkMount 설정 (WEB)
Apache 서버에서 httpd.conf에 아래의 문구를 추가합니다.
JKMount 옵션을 이용해 AJP 프로토콜을 통해 해당 확장자는 WAS에서 처리할 수 있게하는 설정입니다.
/*은 모든 파일을 WAS에서 처리한다는 의미를 가집니다.
[root@LILO-WEB apache2]# vim /app/apache2/conf/httpd.conf
# 220103 add JkMount Options by LILO
JkMount /* lilo_lb
graceful을 이용하면 무중단으로 설정을 완료할 수 있습니다.
[root@LILO-WEB apache2]# /app/apache2/bin/apachectl graceful
☞ 연동 최종 테스트 (브라우저)
최종으로 브라우저에서 연동을 확인합니다.
http://<Web Server 주소>를 입력하면 WAS에 배포된 APP이 보여야됩니다.
'WEB&WAS > Apache' 카테고리의 다른 글
WEB) HTTP vs HTTPS (0) | 2022.02.22 |
---|---|
WEB/WAS) 티스토리 접속 지연 원인 예측해보기 (0) | 2022.01.04 |
WEB) Apache 2.4.X Source Installation(소스 설치) (0) | 2021.07.26 |
WEB) Web Server Kernel Parameter에 대한 이야기 (0) | 2021.04.24 |
WEB) Web Server의 개념과 기술 지원 (1) | 2021.04.24 |