오늘 포스팅은 톰캣의 기본포트인 8080으로 접속하지 않고


아파치가 소유한 포트 80번을 통해서 특정 포트로 바인딩 하여


마치 기본포트 80번을 사용하여 접속하는 것 처럼 할 것이다.


아래의 결과물이 최종 목표가 되겠다.


서버주소:8080/자바-웹어플리케이션 이 아닌, 


서버주소/자바-웹어플리케이션


먼저 아파치와 톰캣이 이미 깔려있다는 가정하에 시작한다.


서버 환경은 우분투 - 14.04/ tomcat8 / jdk8 버전으로 진행했다.


mod_jk 설치하기.


 아파치와 톰캣의 연동을 위해서 필요한 모듈이다.


아래의 명령어로 설치한다.


apt-get install libapache2-mod-jk


필요한 경로 알아오기.


설치를 완료했다면, mod_jk의 설정을 바꿔야 한다.


먼저, 필요한 경로 2가지가 있다. 하나는 톰캣경로,


하나는 자바경로가 필요하다.


보통 톰캣은 /usr/share/ 경로에 있다 ex) /usr/share/tomcat7


하지만, 귀찮은 나 같이 웹 다운로드로 받아 경로를 아무렇게나 저장한 유저들은


경로를 찾아와야 한다. (내 경로 /opt/apache-tomcat-8.0.39


경로 설정과 이름을 쉽게 바꾸지 않은 것에 엄청 후회했다. )


다음으로, 자바는 보통 /usr/lib/jvm/ 경로에 있다. ( 내 경로 usr/lib/jvm/java-8-oracle)


mod_jk 셋팅.


 서버에서 아래의 경로로 이동한다.


cd /etc/libapache2-mod-jk


그후 ls 명령어로 목록을 보면 workers.properties 가 있다.


그 파일을 수정해야 한다. 아래의 명령어를 사용한다.


sudo vi workers.properties


물론 경로로 이동하지 않고 아래와 같이 


sudo vi /etc/libapache2-mod-jk/workers.properties


한번에 가도 무방하다. 파일을 열어보면


아래와 같이 되있다. 여기서 변경해야 할 곳은 


workers.tomcat_home 과 workers.java_home 이다.


톰캣 경로 설명에서도 적혀 있드시, 톰캣 경로의 폴더 안에


conf, webapps, lib 과 같은 폴더들이 존재하는 톰캣 폴더여야 한다.


# OPTIONS ( very important for jni mode ) 


#

# workers.tomcat_home should point to the location where you

# installed tomcat. This is where you have your conf, webapps and lib

# directories.

#

workers.tomcat_home=/usr/share/tomcat6


#

# workers.java_home should point to your Java installation. Normally

# you should have a bin and lib directories beneath it.

#

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


#

# You should configure your environment slash... ps=\ on NT and / on UNIX

# and maybe something different elsewhere.

#

ps=/

...

....

....

....

#

# The workers that your plugins should create and work with

worker.list=ajp13_worker


주황 배경의 속성들을 바꿨다면, mod_jk의 설정은 끝났다.


tomcat 설정.


 아래의 명령어로


sudo vi 톰캣경로/conf/server.xml


server.xml 파일을 들어가 보면,


아래의 설정 텍스트가 보일텐데, 바로 아래 빨간 배경의 설정 텍스트가 중요하다.


원래 있을 수 도 있고 없을 수 도 있다. 없다면 적어주자.


 <Service name="Catalina">

  <Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               URIEncoding="UTF-8"

               redirectPort="8443" />


  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />



Apache 설정.


 마지막으로 Apache만 설정하면 끝이다. 아파치가 URL을 받았을시, 어떤 URL을 톰캣에게 바인딩 할 것인가


알려주는 셋팅이 되겠다. 이 부분이 중요하다. 잘못 셋팅하여, 기존의 프로젝트가 실행이 안되는 경우가 발생한다.


왜 기존의 프로젝트의 영향을 주는지는 아래에서 설명한다.


아래의 명령어로 설정해야할 파일로 접근한다.


vi /etc/apache2/sites-available/000-default.conf


접근후, 아래와 같이 한줄만 추가 하면 된다.


.............

.............

.............

.............

.............

............. 

JKMount /* ajp13_worker


</VirtualHost>


중요한 점은 JKMount /* ajp13_worker 이렇게 적었을 경우, 모든 URL을 톰캣에게 바인딩 한다 ( /* ).


모든 request가 톰캣으로 가기 때문에,


기존의 프로젝트들 ( ex) 서버주소/프로젝트.php , 서버주소/프로젝트html 등등)이 request를 못받기에,


실행이 되질 않는다.


따라서, 해당 설정은 자신의 자바-어플리케이션에 한정 지어야 한다.


즉, 자신의 자바 어플리케이션 (webapps에 있는 폴더)의 이름이 test고, 그 test만 바인딩 해야,


다른 프로젝트에 영향을 주질 않는 것이다.


즉 아래와 같이 고친다.


JKMount /* ajp13_worker -> JKMount /test/* ajp13_worker


추후에 웹어플리케이션 프로젝트가 더 생기면 윗 방식데로 한 줄씩 추가해나가면 된다.


재시작.


 모든 설정이 끝났다. 아파치와 톰캣의 재시작 후, 테스트 해본다.


아파치 재시작 - service apache2 restart


톰캣 재시작    - ./톰캣경로/bin/shutdown.sh

                     ./톰캣경로/bin/startup.sh



포스팅이 도움 되셨다면, 커피 한잔 후원해주세요!
더 좋은 포스팅 작성에 큰 힘이 됩니다.

Buy me a coffeeBuy me a coffee
  1. 초보... 2018.09.07 01:15

    정말 감사합니다. 정상적으로 연동 되었습니다.

  2. 익명 2022.06.08 22:10

    정말 감사합니다. 2022년에 잘 사용하였습니다!

+ Recent posts