오늘은 Ubuntu 서버에서 Apache 웹서버와 Tomcat WAS 서버를 연동하는 법을 알려드리고자 합니다.
(방법)
1. Apache 의 reverse proxy를 이용한 방법
2. Apache AJP Connector를 이용한 방법
두가지 방법이 있습니다. 결론적으로 (1)번 방법은 간단한 설정으로 가능하기 때문에 매우 쉬운방법이고 (2)번 방법은 어느정도 손이 좀 많이 가는 방법입니다.
오늘은 (2)번 방법에 대해서 설명하고자 합니다.
(시작!!!!!!)
(1) 각종 설치과정
- Apache와 Tomcat을 설치하는 과정을 생략하겠습니다.
- Ubuntu에서 주어지는 명령어를 쓰셔서 Apache는 간단하게 설치가 가능하고 Tomcat은 tomcat.apache.org 사이트에서 tar.gz 확장자의 파일을 다운받아서 설치하시면 됩니다.
(2) Apache AJP mod_jk 다운로드
# sudo apt-get install libapache2-mod-jk
- Ubuntu는 mirror 사이트에서 위 명령어만 치면 다운로드가 가능합니다.
- 저 mod_jk가 없으면 ajp connector를 사용할 수 없습니다.
- 타 OS를 쓰고 계신다면 아래 재료에서 다운로드도 가능합니다.
- mod_jk를 설치를 완료하고 나면 /etc/libapache2-mod-jk 에 다음과 같은 파일들이 있는 것을 확인 가능하십니다.
# ls -la /etc/libapache2-mod-jk/
total 12
drwxr-xr-x 2 root root 4096 Feb 10 18:28 .
drwxr-xr-x 101 root root 4096 Feb 10 17:16 ..
lrwxrwxrwx 1 root root 33 Mar 13 2018 httpd-jk.conf -> ../apache2/mods-available/jk.conf
-rw-r--r-- 1 root root 3000 Feb 10 18:13 workers.properties
- 여기서 workers.properties를 수정해서 Tomcat과의 Connection를 관리할 수 있습니다.
(3) works.properties 수정
- workers.properties 는 tomcat를 여러개 설정정보 등록해두고 Apache에 연결할때 Alias로 호출하여 연동할 수 있도록 도와주는 설정파일입니다.
# vim ./workers.properties
~~~~~~
~~~~~~ (파일을 열었다고 가정합니다.)
~~~~~~
worker.list=tomcat1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcat1
위 처럼 셋팅해주시면 됩니다.
tomcat1 은 제가 정한 Alias이기 때문에 각자가 지정한 이름으로 변경해도 무방합니다.
list 에는 tomcat를 여러개 관리할 경우 ","를 기준으로 나열하신다음에 아래 쪽에 worker를 추가하시면 됩니다.
만약 1개뿐이라면 크게 설정을 변경하실 건 없습니다.
(4) Apache 설정파일 수정
- Apache 설정파일을 수정할때 VirtualHost부분은 따로 언급하지 않겠습니다.
- 이 부분은 다른 좋은글이 많으니 참조해주세요.
- 아래 설정중에 JkMount 쪽만 보시면 됩니다.
# sudo vim /etc/apache2/sites-available/000-default.conf
~~~~~
~~~~~ (파일열었습니다.)
~~~~~
<VirtualHost *:80>
# 여기에다가 접속하는 도메인명을 넣어주세요.
ServerName abc.testdomain.com
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
# 아래 내용은 걍 http -> hhtps로 넘겨라 라는 표현입니다.(신경쓰지마셈)
RewriteEngine on
RewriteCond "%{HTTPS}" "!on"
RewriteRule ^.+ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>
# HTTPS access
<VirtualHost *:443>
# 여기에다가 접속하는 도메인명을 넣어주세요.
ServerName abc.testdomain.com
# 여기에는 SSL 인증서가 있다면 경로를 넣어주세요
SSLEngine on
SSLCertificateKeyFile /was/apache-tomcat-9.0.58/conf/ssl/KeyFile_Wildcard.testdomain.com_apache.pem
SSLCertificateFile /was/apache-tomcat-9.0.58/conf/ssl/File_Wildcard.testdomain.com_apache.pem
SSLCACertificateFile /was/apache-tomcat-9.0.58/conf/ssl/CA_GLOBALSIGN_ROOT_CA.pem
CustomLog ${APACHE_LOG_DIR}/uc_access.log combined
ErrorLog ${APACHE_LOG_DIR}/uc_error.log
# JkMount 뒤에 alias명은 works.properties에서 작성한 list이름을 넣어주세요.
JkMount /* tomcat1
JkMount / tomcat1
</VirtualHost>
(5) Tomcat 의 설정파일을 열어서 AJP 설정을 OPEN 함.
- 자~ Apache까지 작업이 끝났으니 이제 Tomcat에서 AJP 설정을 해봅시다.
vim /was/apache-tomcat-9.0.58/conf/server.xml
~~~ (파일 열었습니다.)
~~~
~~~~
<!--
아래 Connector 정보는 안쓸꺼기 때문에 주석 처리합니다.
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
-->
<!-- Define an AJP 1.3 Connector on port 8009 -->
<!-- 기존 주석 처리 되어 있던 아래 내용을 오픈 합니다. -->
<Connector protocol="AJP/1.3"
address="0.0.0.0"
port="8009"
redirectPort="8443"
secretRequired = "false"
/>
- 여기서 중요한 점은 address=":::1" 이라고 된 부분을 address="0.0.0.0" 으로 변경 해야 합니다.
- 또한 secretRequired = "false"를 해서 Apache에서 별도의 비밀번호 없이 접속할 수 있도록 합니다.
- True인 경우에는 workers.properties와 Tomcat의 server.xml에 서로 비밀번호를 넣어주어야 합니다.
(6) 재시작
자 이제 재시작 한번 하고 결과를 확인하시면 됩니다.
$ sudo /etc/init.d/apache2 restart
$ /was/apache-tomcat-9.0.58/bin/startup.sh
'Server > Linux' 카테고리의 다른 글
Apache2에 HttpS 를 적용하는 방법 - Ubuntu 18.04 기준 (0) | 2022.11.07 |
---|---|
rm -rf 로 삭제되지 않을때 (Device or resource busy) (1) | 2022.01.07 |
Apache2 패스워드(htpasswd) 처리하기 (0) | 2021.11.08 |
Ubuntu SFTP 설정 및 접속 방법 총정리 (2) | 2021.06.22 |
Ubuntu OpenJDK 설치 및 삭제 방법 (3) | 2020.09.09 |