연동 방법은 다양하게 있는데
보통 검색하면 mod_jk 방법을 많이 사용한다.
mod_jk를 사용하고 싶으면
http://noviceany.tistory.com/37 여기에 들어가서 따라하면 된다.
연동을 하는 이유는 80포트를 아파치가 받아 처리하고,
jsp처리가 필요할 때 톰캣에게 작업을 넘겨주고 반환받는 방식인데
mod_jk를 사용하니까 완전히 톰캣처리만 가능하게 되버린 것 같다.
내가 부족한 탓도 있겠지만, blog.lael.be에서 친절하게 설명해 준 더 좋은 방법을 찾을 수 있었고
프록시를 사용해 php와 jsp를 한번에 처리할 수 있도록 했다.
크게 3가지로 설정할 수 있는데
1. 사이트의 모든 요청을 Tomcat 이 처리하도록 수정
2. 사이트의 특정 경로만 Tomcat 이 처리하도록 수정
3. PHP, JSP를 동시에 같은 경로에서 사용
중에서 나는 3번을 하기로 했다.
(1번과 2번은 https://blog.lael.be/post/1023 여기에서 읽어보면 된다.)
톰캣7 설치 https://blog.lael.be/post/858
#첫번째 단계
먼저 Apache 프로그램에서 ProxyPass 관련 구문을 해석할 수 있도록 설정
a2enmod proxy
http 로 proxy 할 수 있도록 변경
a2enmod proxy_http
#두번째 단계
/etc/apache2/sites-available 경로로 들어가 default 이름이 들어간 conf 파일을 열어준다.
아래와 같이 몇 가지만 변경 및 추가해주면 된다.
1. DocumentRoot 의 경로를 실제 톰캣서버의 베이스주소로 설정한다.
(나같은 경우는 /var/lib/tomcat7/webapps/ROOT/ 이다.)
2. 그 아래 ProxyPassMatch ^/(.*\.jsp(/.*)?)$ http://localhost:8080/$1 를 추가해 준다.
3. 그 아래
<Directory /var/lib/tomcat7/webapps/ROOT/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all #14.04 rules require all granted </Directory> |
를 추가해 준다.
Directory /var/lib/tomcat7/webapps/ROOT/ 이것도 자신에 맞게 변경해야 한다.
완성 본 (주석 및 다른코드는 생략) |
<VirtualHost *:80> DocumentRoot /var/lib/tomcat7/webapps/ROOT/ ProxyPassMatch ^/(.*\.jsp(/.*)?)$ http://localhost:8080/$1 <Directory /var/lib/tomcat7/webapps/ROOT/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all #14.04 rules require all granted </Directory> </VirtualHost> |
아래와 같이 php와 jsp를 톰캣안에 같은 경로에 넣어놓으면 동시에 처리할 수 있다.
(이미지 출처 https://blog.lael.be/post/1023)
http://ip/index.jsp
http://ip/index.php
로 둘다 접근이 가능하다.
#선택 사항
/etc/tomcat7/server.xml 에서
(이미지 출처 https://blog.lael.be/post/1023)
이렇게 주소를 한정시키면, 서버에서만 8080포트를 접근할 수 있어 보안에 좋단다.
외부에서는 8080로 직접 접근할 수 없고, 80포트를 이용해서 접근하면 아파치가 8080작업으로 넘겨준다.
#마지막 단계
service apache2 restart
service tomcat7 restart
로 변경사항이 적용될 수 있게 아파치와 톰캣서비스를 재시작 해주자.
#결론
https://blog.lael.be 운영하시는분 항상 감사합니다.
모든 출처는 여기에 있습니다. 제가 이렇게 써도 될지 모르겠네요.