아파치 + 톰캣 연동
1. 프로그램의 설치
============================================================
- Apache 설치
: apache_2.0.55-win32-x86-no_ssl.exe 를 다운받아 설치한다.
- Php 설치
: php-5.1.2-Win32.zip 를 다운받아 적당한 위치(본인의 경우는 c:\php)에 압축을 해제 하고 php-5.1.2-installer.exe 를 다운받아 실행시킨다.
- Mysql 설치
: mysql-4.1.16-win32 를 다운받아 압축 해제후 Setup.exe를 실행시킨다.
- JDK 설치
: j2sdk-1_4_2_10-windows-i586-p.exe 를 다운받아 설치한다.
- Tomcat 설치
: jakarta-tomcat-5.0.28.exe 를 다운받아 설치한다.
- Apache/Tomcat Connector 설치
: jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip 를 다운받아 압축 해제한후 modules 디렉토리 밑에 있는 mod_jk2.so 를 위에서 설치한 Apache 디렉토리의 modules 디렉토리로 복사한다.
- Perl 설치
: ActivePerl-5.8.7.815-MSWin32-x86-211909.msi 를 다운받아 설치한다.
============================================================
2. Apache+Php+Mysql 의 연동 설정
============================================================
- php 연동 개념
: php 연동의 기본개념은 서버내에 파일확장자 php를 가진 파일의 경우는 Apache 서버가 해당 파일을 처리하지 않고 php엔진으로 먼저 보내 요청을 해석한후 그 결과만을 html로 받아 요청한 클라이언트에게로 보내는 절차를 따른다.
- Apache와 php 연결설정.
: Apache의 httpd.conf 파일에 아래의 항목들을 작업한다.
===httpd.conf(일부)==========================================
# php 해석모듈을 로드토록 설정.
LoadModule php5_module "c:/php/php5apache2.dll"
# 디렉토리 인덱스 파일에 index.php 파일을 추가
DirectoryIndex index.html index.html.var index.php
# mime 타입에 php 파일을 추가
AddType application/x-httpd-php .php
# php 파일에 대한 해석엔진 선언!.
Action application/x-httpd-php "/php/php-cgi.exe"
# php 환경설정 파일인 php.ini 의 경로를 선언.
PHPIniDir "c:/windows"
============================================================
- php와 mysql의 연결설정.
: "c:/windows" 경로에 있는 php.ini 파일에 다음항목을 확인 한다.
===php.ini(일부)=============================================
# 확장 dll 파일의 경로를 설정한다.
extension_dir = "c:\php\ext\"
# mysql 모듈을 포함하도록 수정!.
extension=php_mysql.dll
============================================================
- Apache+php+Mysql 설정완료 테스트
: 설정이 완료 되었으면 <? phpinfo() ?>의 내용을 담은 index.php 파일을 생성한후 웹브라우저로 호출해 본다.
============================================================
3. Apache + Tomcat 의 연동 설정
============================================================
- tomcat 연동 개념
: tomcat 연동의 기본원리는 apache 내에 worker 역할을 하는 channel.socket을 특정포트(대개 8009)로 tomcat과 연결해 놓은 후 요청되는 jsp 를 8009 포트를 통해 톰캣엔진과 통신하여 해석시킨후 결과를 html 로 받아 client 에게 전송하는 과정을 거치게 된다.
자칫 연동에서 오해를 가지고 있는 부분은 아파치는 80포트를 통해 서비스를 하고 8080 포트를 통해 jsp 가 서비스가 되는 데 http://localhost/ 와 http://localhost:8080 페이지가 모두 브라우저로 접근이 되는 걸 보고 연동이 된 걸로 아는 경우가 있는데 이는 연동이 아니며 전혀 다른 두개의 포트로 두개의 어플리케이션이 실행되고 있는 형태일 뿐이다.
올바른 연동은 같은 80포트의 아파치를 통해 서비스를 하고 특정 uri 패턴들... 즉 jsp, do 등의 요청만을 worker 연결을 통해 톰캣에게 해석을 요청한 후 결과를 받아 Apache 가 서비스 하는 형태를 말한다. 이 경우 브라우저는 모두 http://locahost 의 경로내에서 서비스 되게 된다.
또한 Tomcat 의 경우 JSP페이지가 참조하는 클래스들을 포함하는 WEB-INF 디렉토리를 필요하므로 server.xml 파일에 apache 의 context를 마찬가지로 추가해 주고 해당 context 디렉토리에 WEB-INF 를 두면 된다. 단, apache 의 경우에는 WEB-INF 디렉토리를 다른 디렉토리와 구분하지 않으므로 그냥 나두면 브라우저로 접근이 가능하여 보안상 문제가 발생하므로 httpd.conf 파일에 접근이 불가하도록 막아줘야 한다.
- Apache와 tomcat 연결설정.
: Apache의 httpd.conf 파일에 아래의 항목들을 작업한다.
===httpd.conf(일부)==========================================
# tomcat connector 모듈을 로드토록 설정.
LoadModule jk2_module modules/mod_jk2.so
# 디렉토리 인덱스 파일에 index.jsp 파일을 추가
DirectoryIndex index.html index.html.var index.php index.jsp
# tomcat worker 연결 환경설정 파일의 경로를 선언.
JkSet config.file "C:/Program Files/Apache Group/Apache2/conf/workers2.properties"
#alias 설정 및 WEB-INF 접근 막음
Alias /hanulit/ "E:/2006_my_web/hanulit/"
<Directory "E:/2006_my_web/hanulit/">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# WEB-INF 접근을 못하게 막음
<Directory "E:/2006_my_web/hanulit/WEB-INF/">
Order allow,deny
Deny from all
</Directory>
============================================================
- worker2.properties 작성
: 가장 중요한 부분은 uri 패턴부분은 해당 uri 의 경우만을 apache 는 tomcat 에게 요청하게 된다.
===worker2.properties=======================================
[logger.apache2]
level=DEBUG
[shm]
file=C:/Program Files/Apache Group/Apache2/logs/jk2.shm
size=1048576
debug=0
disabled=0
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
[uri:/hanulit/*.jsp]
worker=ajp13:localhost:8009
[uri:/hanulit/*.do]
worker=ajp13:localhost:8009
============================================================
- jk2.properties 의 생성(tomcat 의 cont 디렉토리)
: Apache 의 요청을 받을 channelSocket의 설정을 한다.
===jk2.properties============================================
handler.list=apr,channelSocket,request,shm
channelSocket.port=8009
============================================================
- tomcat 의 server.xml 설정
: 위의 설명 내용데로 tomcat 에서 jsp 실행에 필요한 파일들의 참조를 위해 context 를 추가해 주어야 한다.
===server.xml(일부)==========================================
<Context path="/hanulit" reloadable="true" docBase="E:\2006_my_web\hanulit" workDir="E:\2006_my_web\hanulit\work" />
============================================================
: 참고로 Tomcat 의 server.xml 을 열어보면 아래와 같이 ajp 컨넥터가 기본적으로 열려 있는 것을 확인 할 수 있다.
===server.xml(일부)==========================================
<!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />
============================================================
4. Apache + Perl 의 연동 설정
============================================================
: 지금은 perl 이나 cgi 등의 파일들이 거의 쓰이지 않으나 나의 경우 처럼 이전 웹서버에서 실행되던 파일들을 백업받아 둔 상태에서 웹 상에서 잠시 둘러봐야 할 경우.. 유닉스계열의 운영체제에는 기본적으로 실행이 가능하지만 windows 에 apache의 환경일 경우 별다른 작업이 필요하기에 정리해 본다.
- In the main directory section, add ExecCGI to the Options line
===httpd.conf(일부)==========================================
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
</Directory>
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
============================================================