오늘 포스팅은 톰캣의 기본포트인 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
포스팅이 도움 되셨다면, 커피 한잔 후원해주세요!
더 좋은 포스팅 작성에 큰 힘이 됩니다.