반응형

오늘은 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

 

반응형

+ Recent posts