본문 바로가기
Web/Server

기존 apache에 tomcat 연동 후 spring 프로젝트 배포

by 기저귀찬개발자 2019. 4. 19.

기존 프로젝트가 PHP로 이루어져 tomcat이 필요가 없었으나 신규 프로젝트를 JSP Spring 프레임워크를

사용하게 되면서 기존 apache 서버에 tomcat을 설치할 필요가 생겼다.

 

 

1. tomcat 8 설치

 - apt로 다운로드가 안될 경우 직접 파일을 받아 설치한다 (https://tomcat.apache.org/download-80.cgi)
 - 완료 메시지를 보면 tomcat 설치 경로를 확인할 수 있다.

apt-get install tomcat8

설치 경로

 

 - tomcat의 default 포트는 8080이다.

 - 정상적으로 설치가 완료되었다는 메시지를 확인할 수 있다.

 

설치 완료 화면

 

 - 해당 부분은 tomcat을 단독으로 사용할때 웹루트가 된다.

 - 하지만 Apache와 연동해서 사용할 것이니 tomcat의 웹루트따위 필요없다. 지워주자.

 - server config 파일은 설치환경에 따라 바뀌므로 위의 페이지에서 확인하여 사용자에 맞게 경로를 찾는다.

vim /var/lib/tomcat8/conf/server.xml

 

<!-- Apache를 통해 HTTP 프로토콜을 처리할 예정이므로 
사용하지 않는다. 주석처리하자  -->
<!--
<Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    URIEncoding="UTF-8"
    redirectPort="8443" />
-->

<!-- AJP는 Apache에서 서블릿 요청을 넘ㄴ길 프로토콜이므로 주석을 해제.-->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 

 

 

2. mod_jk 설치

apt-get install libapache2-mod-jk

 

 

 

3. mod_jk 설정 

 - 설정 파일 오픈 (workers.properties)

vim /etc/libapache2-mod-jk/workers.properties

 - 해당 파일의 아래 항목들을 사용자 tomcat 설치환경에 맞게 고쳐준다.

   workers.tomcat_home=/usr/share/tomcat8

   workers.java_home=/usr/lib/jvm/default-java

   worker.list=ajp13_worker

   worker.ajp13_worker.port=8009

   worker.ajp13_worker.host=localhost

   worker.ajp13_worker.type=ajp13

 - 본 게시글을 따라 왔다면 모든 값은 default로 따로 수정할 항목이 없다.

 - 로드밸런싱 목적으로 tomcat을 여러개 추가하여 해당 부분에서 설정할 수 있다.

 

4. Apache 설정

 - apache를 설치하고 위와 같이 mod-jk를 설치하게 될 경우 자동으로 default 값으로 jk.con 모듈이 설정된다.

 - mod_jk 설정은 /etc/apache2/mods-available/jk.conf 를 살펴보면 위에서 살펴본 workers.properties 가 추가되어

   있는 것을 확인할 수 있다.

    # We need a workers file exactly once
    # and in the global server
    JkWorkersFile /etc/libapache2-mod-jk/workers.properties

 - 아파치와 톰캣이 연동된 부분은 확인하였다. 

 

5. spring 프로젝트 war파일 생성

 - 프로젝트 성격에 따라 추출 방식이 다를 수 있다.

 - 해당 프로젝트는 spring-mvc(maven) 프로젝트이다

 

 

6. tomcat 설정

 - 추출한 war 파일을 /var/lib/tomcat8/webapps 하단에 위치한다 

 - 필자의 경우 /var/lib/tomcat8/webapps/sc.war 가 되겠다.

 - 해당 war 파일에 대한 context 설정을 해주어야 한다.

 

vim /var/lib/tomcat8/conf/server.xml
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <Context path="/" docBase="sc" reloadable="true"></Context>

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

 

7. apache 설정

 - 기존 php 프로젝트는 그대로 냅두고 8888포트를 사용해서 톰캣에 연결한다.

 -  /etc/apache2/sites-available/ 해당 위치에 기존 설정 파일을 복사해서 설정 파일을 추가하도록 하자

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/spring_exam.conf

 - 설정 파일의 내용을 현재 프로젝트에 맞게 수정해주자

 - 모든 요청에 대하여 mod_jk로 넘겨준다. ( 동적 요청만 넘겨주면 좋지만 아직 파악이 덜 됐다.. )

<VirtualHost *:8888>


        ServerAdmin webmaster@localhost
        DocumentRoot /var/lib/tomcat8/webapps/sc


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        JkMount /* ajp13_worker

</VirtualHost>

 

8. 재기동

 - 포트번호가 다를경우 /etc/apache2/ports.conf 부분에 listen 포트를 추가해주는 것을 잊지말자

service apache2 restart
service tomcat8 restart

 

 

테스트 프로젝트가 무사히 연동된 것을 확인할 수 있다.

댓글