티스토리 뷰

리눅스

Apache와 Tomcat 연동

토마's 2018. 2. 4. 11:56

안녕하세요. 오늘은 앞서 설치 했던 Apache(web server)와 Tomcat(was server)을 연동하는 방법에 대해서 포스팅하려고 합니다. 


1. Apache와 Tomcat을 연동하는 이유 ?


로드밸런싱(열로 운용되고 있는 기기 사이에서의 부하가 가능한 한 균등하게 되도록 작업 처리를 분산하여 할당하는 것을 말한다. 컴퓨터 내에서 여러 개의 마이크로프로세서에 작업의 처리를 균등하게 배정하거나 네트워크 상에서의 접속요구를 여력이 있는 서버로 돌리거나 하는 등 여러 분야에서 광범위하게 사용되고 있는 개념입니다. by 네이버 백과사전)이 가능하고, 서버 분리가 가능하다는 이유입니다. 



2. 연동 방법 3가지


 방식

장점 

단점 

 mod_jk

 - 관련 자료가 많음

 - JkMount 옵션을 이용하면 URL이나 컨텐츠별로 유연한 설정이 가능

   (이미지는 웹서버, 서블릿은 톰켓)

 - 별도의 모듈을 설치해야 됨

 - 설정의 어려움

 - Tomcat 전용

 mod_proxy

 - 별도 모듈 설치가 필요없고(apache 기본 모듈) 설정이 간편

 - 특정 WAS에 의존적이지 않으므로 모든 WAS에 적용 가능

 - URL 별 유연한 설정이 어려움

 - ProxyPassMatch 사용 필요 

 mod_proxy_ajp 

 - 별도 모듈 설치가 필요없고(apache 기본 모듈) 설정이 간편

 - 특정 WAS에 의존적이지 않으므로 모든 WAS에 적용 가능

 - URL 별 유연한 설정이 어려움

 - ProxyPassMatch 사용 필요 


위 3가지 방법 중 여기서는 관련자료가 많은 mod_jk의 사용방법에 대해서 진행해보도록 하겠습니다.


3. mod_jk 사용

mod_jk 모듈을 설치하고 선행적으로 apxs 모듈이 설치되어 있어야 합니다.


1) yum install httpd-devel 명령어를 입력하고 y를 눌러 설치를 진행

2) cd /opt 명령어로 opt 디렉토리로 이동

3) wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz 명령어로 다운로드

4) tar xzf tomcat-connectors-1.2.42-src.tar.gz 명령어로 압축 해제

5) cd /opt/tomcat-connectors-1.2.42-src/native  <<< 다음 경로로 이동

6) ./configure --with-apxs=/usr/bin/apxs

7) make

8) make install


만약, SELinux를 사용한다면 mod_jk.so에 httpd_modules_t Context가 설정되어야 apache httpd가 읽을 수 있습니다. 다음 명령어를 사용해서 설정해주면 됩니다.

chcon -u system_u -r object_r -t httpd_modules_t /etc/httpd/modules/mod_jk.so


4. vi /etc/httpd/conf.modules.d/00-base.conf 명령어를 사용해 아래 내용을 추가해줍니다.

LoadModule jk_module modules/mod_jk.so


5. vi /etc/httpd/conf.d/mod_jk.conf 명령어를 사용해 아래 내용을 추가해줍니다.

<IfModule mod_jk.c> 

  # Where to find workers.properties 

  JkWorkersFile conf/workers_jk.properties 


  # Where to put jk shared memory 

  JkShmFile run/mod_jk.shm 


  # Where to put jk logs 

  JkLogFile logs/mod_jk.log 


  # Set the jk log level [debug/error/info] 

  JkLogLevel info 


  # Select the timestamp log format 

  JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " 


  ## url pattern 에 따른 connector mapping 

  JkMountFile conf/uriworkermap.properties 

</IfModule> 


6. vi /etc/httpd/conf/workers_jk.properties 명령어를 사용해 아래 내용을 추가해줍니다.

worker.list=worker1 

worker.worker1.port=8009 

worker.worker1.host=localhost 

worker.worker1.type=ajp13 

worker.worker1.lbfactor=1 


tomcat의 server.xml을 참조

tomcat의 기본 Encoding은 ISO-8859-1이기 때문에 UTF-8 ( URIEncoding="UTF-8" )로 변경해줍니다. (:set nu 또는 :set number로 줄 번호 확인 가능)


7. vi [CATALINA_HOME]/conf/server.xml 명령어를 사용해서 다음 내용과 같이 수정합니다.



8. vi /etc/httpd/conf/uriworkermap.properties 명령어를 사용해서 다음을 추가해줍니다.

/*=worker1


9. systemctl restart httpd.service 명령어를 사용해서 서버를 restart 합니다.


그리고 마지막으로 apache와 tomcat이 제대로 연동되었는지 확인하기 위해서 톰켓을 실행시키고, 웹 브라우저를 키고 기존의 ip:8080 의 형태로 포트 번호를 입력해야 됬지만, ip만 주소창에 입력해도 다음과 같은 창이 뜨면 성공적으로 연동된 것을 확인할 수 있습니다.



그럼 이것으로 mod_jk 방법을 사용해서 apache와 tomcat을 연동하는 포스팅을 마치도록 하겠습니다.