CentOS 7에서 mod_jk 모듈을 이용하여 Apache 2.4와 Tomcat을 연동해 봅니다. Apache 웹서버와 Tomcat은 미리 설치되어 있다고 가정합니다. 참고로 Apache와 Tomcat을 연동하는 방법으로는 mod_proxy_ajp 를 사용하는 방법도 있습니다.
1. 시스템 확인
Apache 버전에 맞는 Tomcat Connector(mod_jk)의 소스 또는 바이너리를 구할때 필요한 정보들 입니다.
- Linux 커널 버전확인# uname --all
Linux localhost.localdomain 3.10.0.862.11.6.el7.x86_64
- 배포판 확인
# cat /etc/*-release
CentOS Linux release 7.5.1804 (Core)
- rpm으로 설치한 htttpd 확인
# rpm -qa | grep httpd
httpd-2.4.6-80.el7.centos.1.x86_64
2. mod_jk 모듈 만들기
Linux용 Tomcat Connector인 mod_jk.so 파일을 얻기 위해서는 소스를 직접 컴파일 하거나 시스템 환경에 맞는 바이너리 파일을 다운로드 받으면 됩니다.
- Apache 2.4 용 바이너리를 구하지 못해서 소스로 설치합니다.
- 소스를 다운로드 합니다.# wget -c http://mirror.navercorp.com/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.43-src.tar.gz
- 압축을 풉니다.# tar -xvzf tomcat-connectors-1.2.43-src.tar.gz
- 디렉토리 이동
# cd tomcat-connectors-1.2.43-src/native
- apxs(APache eXtenSion)는 httpd-devel 이 필요합니다. 없으면 설치합니다.
# yum install httpd-devel
- gcc가 필요합니다. 없으면 설치합니다.
# yum install gcc
- 컴파일을 위한 설정을 합니다.(CentOS 6.5에서는 /usr/sbin/apxs 일 수 있습니다.)
# ./configure --with-apxs=/usr/bin/apxs
- 컴파일 합니다.
# make
- 파일을 확인합니다.
# file apache-2.0/mod_jk.so
apache-2.0/mod_jk.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked ...
- Apache 모듈 디렉토리로 복사합니다.
# cp apache-2.0/mod_jk.so /usr/lib64/httpd/modules/
3. Apache 설정하기
- /etc/httpd/conf.d/httpd-jk.conf 파일을 만듭니다.
LoadModule jk_module modules/mod_jk.so
<IfModule jk_module>
JkWorkersFile conf.d/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkShmFile run/mod_jk.shm
JkMountFile conf.d/uriworkermap.properties
</IfModule>
- /etc/httpd/conf.d/workers.properties 파일을 만듭니다.
worker.list=worker1worker.worker1.type=ajp13
worker.worker1.host=192.168.0.2
worker.worker1.port=8009
- /etc/httpd/conf.d/uriworkermap.properties 파일을 만듭니다.
/*.do=worker1/*.jsp=worker1
- 설정 테스트 및 시작하기
- Apache 설정 파일을 테스트 해봅니다.# apachectl configtest
Syntax OK
- Apache 웹서버를 시작하고 연동을 테스트 합니다.
# apachectl start
- 실행 결과
연동이 완료 되었습니다.
※ 참고
1. 80 port 열기
- CentOS 7
# firewall-cmd --permanent --zone=public --add-port=80/tcp# firewall-cmd --reload
- CentOS 6.5
# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT# /etc/init.d/iptables save
# service iptables restart
# iptables -nL
등록 했는데도 열리지 않을경우 룰의 순서를 확인해보세요. REJECT가 맨 나중에 나와야 합니다. 순서가 다르다면 iptables 명령으로 REJECT삭제 하고 다시 추가하면 끝으로 이동합니다. 다른 방법은 /etc/sysconfig/iptables 파일의 내용에서 순서를 수정하고 iptables 서비스를 재시작하면 됩니다.
2. Apache 2.2.x 용 바이너리 받아 설치하기
- Apach3 2.2.x 용 바이너리는 받을 수가 있습니다. 만약 Apache 2.2.x 대 버전을 사용중이라면 아래의 방법으로 바이너리를 다운받아 사용해도 됩니다.
- 이 바이너리는 RHEL-5 x86_64에서 빌드되었고, gcc 4.1.2 가 사용된 Apache 2.2.x용 바이너리 입니다.
- 바이너리를 다운 받습니다.# wget -c https://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/mod_jk-1.2.31-httpd-2.2.x.so
- Apche 모듈 디렉토리에 복사합니다. 파일명은 mod_jk.so 로 바꿉니다.
# cp ./mod_jk-1.2.31-htttpd-2.2.x.so /usr/lib64/httpd/modules/mod_jk.so
- 실행권한을 줍니다.
# chmod 775 /usr/lib64/httpd/modules/mod_jk.so
3. 설치와 설정 파일 모두 이상이 없는데 안되는 경우
- 소스 컴파일시 포함되어 있는 http-jk.conf 파일에는 JkShmFile logs/mod_jk.shm 로 설정되어 있는데, 그대로 사용했을 경우 logs 폴더에 쓸 권한이 없어서 Apache 서버가 시작이 안되는 경우가 있습니다. JkShmFile run/mod_jk.shm 으로 하면 실행이 됩니다.
'프로그래밍 > 운영체제, 서버' 카테고리의 다른 글
IIS 웹서버에서 기본 페이지와 오류 페이지 설정하기 (2) | 2018.08.28 |
---|---|
IIS에서 URL Rewrite를 사용해서 HTTP요청을 HTTPS로 리다이렉트하기 (27) | 2018.08.27 |
Windows 10에 IIS, PHP, Oracle 연동 설치하기 (7) | 2018.08.16 |
IIS 요청 필터링(특정 파일 또는 폴더에 접근하지 못하게 설정하기) (0) | 2018.08.14 |
Windows 10의 IIS에 개발용 SSL설정과 IE에 인증서 설치하기 (0) | 2018.07.28 |