📚 [Tomcat] Apache + tomcat 연동하기
Category: Tomcat | 📅 July 12, 2021
- 왜 연동인가?
- 준비물
- 아파치 설치하기
- mod_jk 설치하기
- Tomcat 설치하기
- workers.properties 파일 생성
- WEB 환경 파일 수정
- WAS 환경 파일 수정
- 서버 재시작
- Test
왜 연동인가?
WAS의 움을 받는 경우, Web 서버 역할인 Apache가 client가 되므로 연동
이라고 쓰는게 맞음
Client -> Apache <-> AJP <-> Tomcat
Call Flow
[APP] -> [Web] ...
[Web] -> [AJP] ...
[AJP] -> [WAS] ...
[AJP] <- [WAS] ...
[Web] <- [AJP] ...
[APP] <- [Web] ...
Proxy로 동작하면? 연계
가 맞음.
준비물
- Apache2
- tomcat8 이상
- mod_jk
아파치 설치하기
이 문서에서는 소스를 다운로드 하여 컴파일 하고, make 하는 설치 동작은 제외함.
왜? 구찮음 ㅋㅋㅋㅋㅋ 🤪🤪
그래도 소스 설치가 궁금하신 분들은… 다른 인터넷을 찾아보시라!! 🤪
사실, 컴파일 하기 위한 관련 시스템 패키지 설치가 까다롭고, 패키지로 설치하기위해서는 root 권한인 sudo
를 사용해야 하는데
대부분의 대기업(?) 인프라에서 root 권한을 줄리가 없다.
이럴때 패키지를 일일이 설치해야 하는 경우가 있으니, 미리 docker같은 컨테이너로 만들어 두고 docker로 협의 보는 편이 정신 건강에 좋다. (이거 강추 👍👍👍)
mod_jk 설치하기
mod_jk
는 아파치 , 톰캣 연동에서 가장 필요한 설정 파일임.
이 놈으로 설정파일을 이것저것 건드리는게 싫어서 Nginx
를 사용하는 경우도 많음. (내 경우임 ㅋ)
$sudo apt install libapache2-mod-jk
# 이 부분은 반드시 확인 한다
Setting up libapache2-mod-jk (1:1.2.46-1) ...
apache2_invoke: Enable module jk
...
Tomcat 설치하기
workers.properties 파일 생성
이 파일은 jk 연동을 위한 파일이므로 생성하여 등등등~을 기록한다.
- 생성위치 확인 :
cat /etc/apache2/mods-available/httpd-jk.conf | grep workers.properties
$sudo cp /etc/libapache2-mod-jk/workes.properties /etc/libapache2-mod-jk/workes.properties.bak
$sudo vim /etc/libapache2-mod-jk/workes.properties
필요항목
- workers.tomcat_home
- workers.java_home
- workers.list
- worker.digwas.port
- worker.digwas.host
- worker.digwas.type
- worker.digwas.lbfactor
위의 설정 중 workers_name 인 digwas
는 임의의 값으로 여러개의 톰캣이 쓰이는 경우 ,
로 구분한다.
ex)
workers.tomcat.home=/usr/share/tomcat9
workers.java_home=$(dirname $(dirname $(readlink -f $(which java))))
workers.list=digwas
worker.digwas.port = 8009
worker.digwas.host = 127.0.0.1
worker.digwas.type = ajp13
worker.digwas.lbfactor = 1
2번째 줄의 명령어가 동작을 하지 않는 경우, .profile
파일에 위 내용을 명시하여, 표시해도 됨.
WEB 환경 파일 수정
$sudo ln -s /etc/apache2/mods-available/httpd-jk.conf /etc/apache2/mods-enabled/jk.conf
$sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.bak
$sudo vim /etc/apache2/sites-available/000-default.conf
#수정할 부분만 표시함.
DoucumentRoot /usr/share/tomcat9/webapps/ROOT
SetEnvIf Request_URI "/*.html$" no-jk
JKMount /* digwas
테스트하기위해 html파일은 tomcat에서 처리하지 않도록함.
WAS 환경 파일 수정
- 대상파일 : /usr/share/tomcat9/conf/server.xml
tomcat9를 패키지로 설치했으므로, conf 혹은 webapps 디렉토리가 없다.
따라서, 뒤져서 찾아야 함 -_-;;;
$sudo mkdir -P webapps/ROOT
$sudo mkdir -p logs
$sudo ln -s /etc/tomcat9 /usr/share/tomcat9/conf
<Engine name="Catalina" defaultHost="localhost" jvmRoute="digwas">
#8080은 안쓸꺼라 그냥 주석처리함.
<!--Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /-->
여기서는 SSL 을 사용하지 않고 있으므로, 아래 내용 참고 하여 설정할 것. ( 톰캣 시작 안됨 )
서버 재시작
$sudo service apache2 restart
$sudo /usr/share/tomcat9/bin/shutdown.sh
$sudo /usr/share/tomcat9/bin/startup.sh
패키지로 설치하여 root 권한을 이용하였으나, 사용자의 계정을 생성하여 시작해도 무방함.
Test
webapps 디렉토리에 index.html , index.jsp 이렇게 두 개의 테스트용 파일을 만든다. 내용을 구분하기 위해 대충 쓰자.
index.html
apache
index.jsp
<%-- test.jsp --%>
<%@ page language="java"%>
<%
int a= 100;
int b= 200;
%>
<%
int c= 0;
c=a+b;
%>
a= <%=a%><br>
b= <%=b%><br>
c= <%=c%>
curl을 이용한 테스트
$curl http://localhost/index.html
$curl http://localhost/index.jsp