본문으로 바로가기








아파치와 톰캣을 연동하는 이유는?



톰캣은 WAS이지만 Web 서버의 기능도 갖고 있다. 그러나 톰캣의 Web 서버 기능은 아파치보다 처리 속도가 느리기 때문에 정적인 페이지는 아파치가 처리하고, 동적인 페이지는 톰캣이 처리하도록 한다. 이렇게 하므로 부하를 분산시킬 수 있다.




우분투 서버에 아파치(Apache) 설치하기



설치 전 패키지 업데이트를 먼저 한다. 그리고 아파치를 설치한다.


[mgt@localserver: ~$sudo apt-get update
[mgt@localserver: ~$sudo apt-get install apache2




아파치 설치는 정말 간단하다. 설치가 되었으면 확인을 해보자.


[mgt@localserver: ~$] apache2 -v
Server version: Apache/2.4.18 (Ubuntu)
Server built:   2017-07-27T14:34:01



[mgt@localserver: ~$sudo netstat -ntlp | grep apache2
tcp6       0      0 :::80         :::*          LISTEN      2260/apache2




다음으로 아파치 포트로 접속할 수 있도록 방화벽에 등록을 한다. (80은 아파치의 기본 포트이다.)


[mgt@localserver: ~$sudo ufw allow 80/tcp




그러면 아파치를 실행해 보자.


[mgt@localserver: ~$sudo /etc/init.d/apache2 start
[ ok ] Starting apache2 (via systemctl): apache2.service.
 
또는
 
[mgt@localserver: ~$sudo service apache2 start




아파치가 실행되면 브라우저 주소창에 IP 주소를 입력한다. 서버가 아닌 로컬에 설치했을 경우 http://localhost 를 입력한다.





위와 같은 화면이 나타나면 정상적으로 설치가 완료된 것이다.




아파치(Apache2) 와 톰캣(Tomcat8) 연동하기



1. 연동 커넥터 mod_jk 설치


톰캣과의 연동을 위해 mod_jk를 설치한다.


[mgt@localserver: ~$sudo apt-get install libapache2-mod-jk





2. workers.properties 파일 생성


다음으로 /etc/apache2/ 경로에 properties 파일을 생성한다. (아래 명령어 입력시 workers.properties 파일 생성됨)


[mgt@localserver: ~$sudo nano /etc/apache2/workers.properties




생성한 workers.properties에 아래의 내용을 입력한다.


workers.tomcat_home=톰캣 설치경로
workers.java_home=jdk 설치경로
 
# Define 1 real worker ajp13
worker.list=임의의 이름
 
# Set properties for tomcat1 (ajp13)
worker.임의의 이름.port = 포트      # tomat server.xml 파일 AJP/1.3 Connector의 Port 입력
worker.임의의 이름.host = 톰캣서버 아이피 주소
worker.임의의 이름.type = ajp13     # apache + tomcat 통신 프로토콜
worker.임의의 이름.lbfactor = 1




workers.tomcat_home=/usr/share/tomcat8
workers.java_home=/usr/lib/jvm/java-8-openjdk-amd64
# oracle jdk 사용시
# workers.java_home=/usr/lib/jvm//java-8-oracle/
 
# Define 1 real worker ajp13
worker.list=tomcat1
 
# Set properties for tomcat1 (ajp13)
worker.tomcat1.port = 8009
worker.tomcat1.host = 192.168.123.120 
# 로컬일 경우
# worker.tomcat1.host = localhost
worker.tomcat1.type = ajp13
worker.tomcat1.lbfactor = 20




입력 내용을 보면 톰캣과 jdk 설치 경로를 입력하는 tomcat_home과 java_home 부분이 있다. 별도로 경로를 변경하지 않았다면 위의 경로를 그대로 사용하면 된다.


만약 자바 설치 시 openjdk가 아니라 oracle jdk를 설치했다면 #으로 된 주석 부분을 사용하면 된다.



workers.properties 파일 설정 예시



다음으로 worker.list 부분에는 연동할 톰캣의 이름을 임의로 지정하면 된다. 여기에서는 tomcat1로 지정하였다. 만약 1개의 아파치에 여러 개의 톰캣을 연동하려면 아래와 같이 입력하면 된다.


worker.list= tomcat1, tomcat2 # 이름은 임의로 설정
 
worker.tomcat1.type=ajp13
worker.tomcat1.host=톰캣서버 IP
worker.tomcat1.port=8009
worker.tomcat1.lbfactor=1
 
 
worker.tomcat2.type=ajp13
worker.tomcat2.host=톰캣서버 IP
# 포트를 변경해준다. 두번째 톰캣의 server.xml 의 AJP/1.3 Connector의 Port 수정한다.
worker.tomcat2.port=8010   
worker.tomcat2.lbfactor=2
 





3.  jk.conf  파일 수정


명령어를 실행하여 jk.conf 파일을 연다.


[mgt@localserver: ~$sudo nano /etc/apache2/mods-available/jk.conf 






jk.conf 파일에서 빨간색으로 표시된 부분을 찾아준다.





그 부분을 주석(#)으로 막아주고 바로 아래, 위의 내용을 입력한다. 이렇게 하는 것은 /etc/apache2/ 경로에 생성한 workers.properties로부터 설정 정보를 가져오기 위한 것이다.




4.  000-default.conf 파일 수정


명령어를 실행하여 000-default.conf 파일을 연다


[mgt@localserver: ~$sudo nano /etc/apache2/sites-available/000-default.conf






000-default.conf 파일을 보면 DocumentRoot /var/www 라고 적힌 부분이 있다. 이 부분에 #을 적어 주석으로 변경한다. 그리고 아래에 톰캣의 webapps 아래 실행할 웹프로젝트 경로를 적어준다.


위에서는 DocumentRoot /var/lib/tomcat8/webapps/ROOT/ 로 하였는데 webapps 아래에 기본적으로 있는 ROOT 폴더가 웹프로젝트가 있는 경로이기 때문에 이렇게 하였다.


만약 webapps 아래에 project 라는 폴더에 프로젝트를 배포한다면 DocumentRoot /var/lib/tomcat8/webapps/project 라고 입력해주면 된다.


JkMount /* tomcat1 부분은 모든 URL ( /* )을 톰캣에게 바인딩 하는 부분이다. tomcat1은 workers.properties에 입력한 연동할 톰캣의 이름이다. 


만약 톰캣에 배포된 프로젝트가 여러 개이고 특정 프로젝트만 URL을 바인딩 해야 한다면 /* 부분을 수정해 주면 된다. 예를 들어  배포된 프로젝트가 project1, project2 이렇게 있는데 project1만 바인딩 하려면 JkMount /project1/* tomcat1 이렇게 수정하면 된다.



※ 특정 유형의 파일만 아파치에서 처리할 경우


SetEnvIf Request_URI "/*.js$" no-jk 
JkMount /* tomcat1



위는 모든 유형(JkMount /*)은 톰캣에서 처리하지만 .js 파일만 아파치에서 처리하겠다는 설정이다. 위 설정에서 .js 뒤에 $가 없을 경우 .jsp도 아파치에서 처리하게 되므로 $를 붙여 문자의 끝을 지정한 것이다.




5. 톰캣의 server.xml 파일 수정


다음으로 톰캣의 server.xml 파일을 수정해야 한다. 아래 명령어를 실행하여 server.xml 파일을 연다.


[mgt@localserver: ~$sudo nano /etc/tomcat8/server.xml






server.xml 파일을 보면 위처럼 빨간색 박스로 표시된 부분이 있다. 주석으로 처리되 있는데, 주석을 없애준다.






6. 아파치와 톰캣 재시작


[mgt@localserver: ~$sudo /etc/init.d/apache2 restart
 
[mgt@localserver: ~$sudo /etc/init.d/tomcat8 restart





7. 브라우저에서 확인




서버에 배포된 웹프로젝트를 실행하기 위해 주소창에  http://IP 주소:8080으로 입력한다.





주소창에서 8080을 지우고 엔터를 누르면 배포된 웹프로젝트가 실행되는 것을 확인할 수 있다. 이렇게 되면 정상적으로 연동된 것이다.




RSS구독 링크추가 트위터 이메일 구독