서론

최근 페도라코어10 리눅스 시스템에 apache+ajp+tomcat 를 셋팅할 일이 생겨서 삽질끝에 작업을 완료하였다. 그래서 이번에 내 gentoo 리눅스 서버에도 미뤄두었던 tomcat 연동을 하기로 맘을 먹었다.

 

본론

1. apache 업그레이드 하기

mod_proxy_ajp 는 apache 2.2 버젼에서 추가된 모듈이기 때문에 그 이하의 버젼이라면 업그레이드 해야한다. gentoo 에서 아파치 업그레이드 하는방법은 아래 사이트를 참조하기 바란다. 여기서 중요한건 업그레이드 중에 make.conf 설정에서 APACHE2_MODULES 셋팅에 proxy_ajp 를 추가하고 나머지를 알맞게 변경해야 한다는 것이다.

http://www.gentoo.org/proj/en/apache/doc/upgrading.xml

2. 가상호스트 설정하기

아파치와 연동한 이유는 아파치의 다른 기능들을 그대로 쓰면서 톰켓도 돌아가게 하기 위해서 이다. 그래서 아파치의 가상호스트 설정으로 특정 서브도메인을 지정해서 해당 가상호스트로 들어오는 모든 요청은 톰켓으로 돌리도록 만들겠다. 먼저 아파치 가상호스트 설정에 아래와같이 추가해서 apps.cranix.net 으로 들어오는 모든 요청을 톰켓으로 돌리도록 한다.

<VirtualHost apps.cranix.net:80>
        ServerName apps.cranix.net
        ServerAdmin cranix@cranix.net
        ErrorLog "/home/users/admins/cranix/logs/apps_error_log"
        RewriteEngine On
        RewriteRule (.*) ajp://localhost:8009$1 [P]
</VirtualHost>

가상호스트 설정은 아파치에만 있는것이 아니다 톰켓 역시 하나의 서버이고 가상호스트 설정을 가지고 있다. 위에서 설정한 설정대로 아파치에서 먼저 요청을 받아서 톰켓으로 넘기게 되면 톰켓 역시 apps.cranix.net  이라는 도메인으로 받게 됨으로 가상호스트 설정을 해 주어야 한다. 톰켓 설정은 server.xml 파일을 열어서 아래 부분을 추가한다.

<Host name="apps.cranix.net" appBase="/home/users/admins/cranix/webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
                <Context path="" docBase="/home/users/admins/cranix/public_html" privileged="true"/>
</Host>

그리고 톰켓의 기본 http 포트인 8080 번은 쓰지 않을것이기 때문에 해당 Connector 태그는 주석을 걸어준다.

이제 /home/users/admins/cranix/webapps 디렉토리에 톰켓 어플리케이션을 올리게되면 http://apps.cranix.net/[어플리케이션명] 형태로 접근이 가능하게 된다.

3. 보안관련 셋팅하기

톰켓 혼자서 실행시키면 알아서 /WEB-INF 디렉토리나 /META-INF 디렉토리의 접근을 금지했지만 apache 와 같이 실행하면 설정을 해 주어야 한다. apache 의 설정파일에 아래 내용을 추가한다.

<LocationMatch “/WEB-INF”>

deny from all

</LocationMatch>

<LocationMatch “/META-INF”>

deny from all

</LocationMatch>

 

결론

서버작업은 언제나 삽질의 연속이다. 이 작업도 써놓은것은 얼마 안되지만 이 결과를 얻기 위해서 수많은 삽질을 했다. 그래도 역시나 깔끔해진 서버를 보면 뿌듯하긴 하다.

by cranix 2009. 8. 7. 15:47