Linux/CentOS

Apache Web Server 2.4 와 Tomcat 8 연동하기

후뤼한잉여 2015. 11. 11. 10:31

Apache Web Server 2.4 와 Tomcat 8 연동하기

1) 개요

정적 페이지는 Apache Web Server에서 처리하고, 동적 페이지는 Tomcat에서 처리하기 위해 설정한 내용을 정리하기 위해 작성되었습니다.

2) 설치 방법

  1. 연동 커넥터 다운로드
    wget  http://apache.tt.co.kr/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz
    
  2. 의존 패키지 설치하기
    sudo yum install autoconf libtool
    
  3. 연동 커넥터 설치파일 압축 해제
    tar -zxvf tomcat-connectors-1.2.41-src.tar.gz
    
  4. 연동 커넥터 설치하기
    cd [설치파일 압축 해제한 디렉토리]/native/
    sudo ./buildconf.sh
    sudo ./configure --prefix=[Apache 설치된 디렉토리] --with-apxs=/usr/bin/apxs
    sudo make
    sudo make install
    
  5. 연동 커넥터 생성 확인 및 실행권한 부여
    ls [Apache 설치된 디렉토리]modules/mod_jk.so
    sudo chmod +x [Apache 설치된 디렉토리]/modules/mod_jk.so
    

3) 설정 방법

  1. mod_jk 모듈 관련 설정
    1-1. 톰캣과 연동 정보 설정

     vi [Apache 설치된 디렉토리]/conf/workers.properties
    

    workers.properties에 입력할 내용

     workers.tomcat_home="[Tomcat이 설치된 디렉토리]"
     workers.java_home="[JDK가 설치된 디렉토리]"
     ps=/
     worker.list=ajp13
     worker.ajp13.port=8009
     worker.ajp13.host=localhost
     worker.ajp13.type=ajp13
    

    1-2. 정적 페이지 패턴 및 로그 관련 설정

     vi [Apache 설치된 디렉토리]/conf/mod_jk.conf
    

    mod_jk.conf에 입력할 내용

     <IfModule mod_jk.c>
         JkWorkersFile "[Apache 설치된 디렉토리]/conf/workers.properties" //연동 정보 파일
         JkMount /*.jsp ajp13 //정적 페이지 처리할 패턴 설정
         JkLogFile "[Tomcat이 설치된 디렉토리]/logs/mod_jk.log" //로그 설정
         JkLogLevel info
         JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
         JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
         JkRequestLogFormat "%w %V %T"
         JkAutoAlias "[Tomcat이 설치된 디렉토리]/webapps"
     </IfModule>
    
    • 서블릿에서 특정 정적 패턴을 제외한 나머지 WAS가 처리하도록 설정 하는 팁
        SetEnvIf Request_URI "/*.js$" no-jk
        JkMount /* ajp13
      
      • 모든 유형은 톰캣에서 처리하지만 .js파일은 아파치에서 처리하겠다는 의미. Request_URI는 정규표현식을 이용해서 패턴을 정하는데 *.js까지만 하면 jsp파일도 아파치에서 처리해서 소스가 노출되는 문제가 있어 문자의 끝을 의미하는 $를 넣어주는것이 안전하다.
  2. Apache Web Server 설정

     vi [Apache 설치된 디렉토리]/conf/httpd.conf
    

    httpd.conf파일에 수정할 부분

     LoadModule jk_module modules/mod_jk.so //추가
     include conf/mod_jk.conf //추가
     DocumentRoot "[Tomcat이 설치된 디렉토리]/webapps/ROOT"
     <Directory "[Tomcat이 설치된 디렉토리]/webapps/ROOT"> //ROOT 상위 디렉토리 접근 필요시 ROOT 제외
     Options -Indexes FollowSymLinks를 Options //Indexes앞에 - 붙이기.
    
    • Options Indexes FollowSymLinks를 Options -Indexes FollowSymLinks로 변경해야 WelcomePage 없을 때 indeox of 페이지를 못 보게 막을 수 있다.
    • -로 붙였는데 오류가 나면 Indexes자체를 지운다.
  3. Tomcat Native Library 설치하기

    • Native Library를 설치하기 위해서는 APR이 설치되어 있어야 하는데, 일반적으로 Apache를 설치하면 [Apache가 설치된 디렉토리]/bin/apr-1-config 에 설치 되는듯 하다.

      3-1. Native Library 다운로드

      wget http://apache.tt.co.kr/tomcat/tomcat-connectors/native/1.1.33/source/tomcat-native-1.1.33-src.tar.gz
      

      3-2. 압축 해제하기

      tar -xvf [설치파일].tar.gz
      

      3-3. Native Library 설치하기

      cd [설치파일 압축 풀린 디렉토리]/jni/native
      sudo ./configure  --prefix=[Tomcat 설치된 디렉토리] --with-apr=[Apache가 설치된 디렉토리]/bin/apr-1-config --with-java-home=$JAVA_HOME --with-ssl=/usr
      sudo make
      sudo make install
      

      3-4. Tomcat 8 설정 변경

      cd [Tomcat 설치된 디렉토리]/bin
      vi catalina.sh
      

      catalina.sh 파일에 추가할 부분

      export LD_LIBRARY_PATH=/app/tomcat8/lib:$LD_LIBRARY_PATH //시작 부분에 추가
      
      • 꼭 추가 해야하는지는 확인을 안해봐서 나중에 확인해보도록 하겠습니다.
    • Tomcat 시작 시 SSL 엔진을 못 찾는 다는 오류가 발생한다면 아래 내용 적용하기
      vi [Tomcat 설치된 디렉토리]/conf/server.xml
      
      server.xml 파일에 수정할 내용
      SSLEngine=“off" //기존 on에서 off로 변경