http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/i386/
http://apache.mirror.cdnetworks.com//tomcat/tomcat-7/v7.0.4-beta/bin/apache-tomcat-7.0.10.tar.gz
http://apache.mirror.cdnetworks.com//tomcat/tomcat-7/v7.0.4-beta/bin/apache-tomcat-7.0.10.tar.gz
보통 많이 사용하는 웹서버는 APM(apache + php + Mysql)이지만 여기에 tomcat을 추가해보도록 하겟다.
일단 기본적으로 APM이 설치된 환경이라는 가정하에 문서를 작성하겠다.
혹 APM이 설치가 되어 있지 않았다면, http://wory.tistory.com/139 에서 yum으로 간단히 설치하는 방법으로 설치해보자.
0. 준비하기
tomcat을 apache와 연동하기 위해서는 중간에 컨넥트 컨테이너가 필요하다.
보통 mod_jk를 많이 사용한다고 한다.
설치에 들어가기전에 tomcat과 tomcat connector를 다운받아 놓자.
tomcat을 apache와 연동하기 위해서는 중간에 컨넥트 컨테이너가 필요하다.
보통 mod_jk를 많이 사용한다고 한다.
설치에 들어가기전에 tomcat과 tomcat connector를 다운받아 놓자.
두가지 모드 아파치 소프트웨어 파운데이션에서 받을 수 있다. http://tomcat.apache.org/index.html
tomcat connector의 경우 아파치 버전에 맞는 바이너리로 다운받자.
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.30/i586/
tomcat connector의 경우 아파치 버전에 맞는 바이너리로 다운받자.
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.30/i586/
%> wget http://apache.mirror.cdnetworks.com//tomcat/tomcat-7/v7.0.4-beta/bin/apache-tomcat-7.0.4.tar.gz
%> wget http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.30/i586/mod_jk-1.2.30-httpd-2.2.X.so
두가지 모두 빠른 미러 사이트를 이용해 받도록 한다.
항상 버전 및 미러 사이트에 따라 주소는 다를 수 있다.
두가지 모두 빠른 미러 사이트를 이용해 받도록 한다.
항상 버전 및 미러 사이트에 따라 주소는 다를 수 있다.
1. jdk 설치하기
%> yum -y install java
간단하게 yum을 이용하여 jdk를 설치한다.
2. tomcat 설치하기
%> tar xvfz apache-tomcat-7.0.4.tar.gz
%> mv apache-tomcat-7.0.4 /usr/local/tomcat
%> mv apache-tomcat-7.0.4 /usr/local/tomcat
3. tomcat connector 설치하기
%> mv mod_jk-1.2.30-httpd-2.2.X.so /usr/lib/httpd/modules/mod_jk.so
%> chmod +x /usr/lib/httpd/modules/mod_jk.so
%> chmod +x /usr/lib/httpd/modules/mod_jk.so
mod_jk.so 바이너리 파일을 httpd 모듈 폴더에 옮겨넣는다.
여기서 httpd 모듈 폴더 위치는 설치에 따라 달라진다. yum으로 설치하였다면 /usr/lib/httpd/modules/가 된다.
여기서 httpd 모듈 폴더 위치는 설치에 따라 달라진다. yum으로 설치하였다면 /usr/lib/httpd/modules/가 된다.
그외에 위치는 whereis httpd 등으로 위치를 찾는다.
4. 아파치 환경설정 httpd.conf
%> vi /etc/httpd/conf/httpd.conf
//LoadModule가 모인 곳에.
LoadModule jk_module modules/mod_jk.so
LoadModule jk_module modules/mod_jk.so
//..ifModule 설정이 모인 곳에.
<ifModule jk_module>
JkWorkersFile /etc/httpd/conf/workers.properties
JkShmFile /etc/httpd/logs/mod_jk.shm
JkLogFile /etc/httpd/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>
JkWorkersFile /etc/httpd/conf/workers.properties
JkShmFile /etc/httpd/logs/mod_jk.shm
JkLogFile /etc/httpd/logs/mod_jk.log
JkLogLevel info
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>
JkMount /*.jsp ajp13
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
이곳에서 역시. httpd의 폴더 위치에 따라서 workersfile, logfile, shmfile의 위치는 변한다.
5. workers.properties 파일 생성 및 설정(httpd.conf에 WorkersFile 위치 설정한곳에 생성)
%> vi /etc/httpd/conf/workers.properties
worker.list=ajp13
worker.ajp13.type=ajp13
worker.ajp13.host=domain.co.kr
worker.ajp13.port=8009
worker.ajp13.lbfactor=1
worker.ajp13.connection_pool_timeout=600
worker.ajp13.socket_keepalive=1
worker.ajp13.type=ajp13
worker.ajp13.host=domain.co.kr
worker.ajp13.port=8009
worker.ajp13.lbfactor=1
worker.ajp13.connection_pool_timeout=600
worker.ajp13.socket_keepalive=1
worker.ajp13.host=domain.co.kr 이부분은 자신의 주소를 넣으면 된다.
6. 연동 테스트
tomcat 시작
%> /usr/local/tomcat/bin/catalina.sh stop
%> /usr/local/tomcat/bin/catalina.sh start
%> /usr/local/tomcat/bin/catalina.sh start
stop 명령을 내리면 컨넥션 오류를 출력할 것이다. 이것은 현재 실행이 되어 있지 않기 때문에 일어나는 것이므로 무시해도 된다. 그럼 왜 하느냐?? 혹시나 tomcat이 실행되어 있을지 모르는까.. 껏다 켜기 위해서 ^^ ;
아파치 재시작
# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
혹시나 아파치 재실행중 다음과 같이 퍼미션 문제로 오류가 발생할 때.
Stopping httpd: [ OK ]
Starting httpd: httpd: Syntax error on line 200 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_jk.so into server: /etc/httpd/modules/mod_jk.so: cannot open shared object file: Permission denied
[FAILED]
Starting httpd: httpd: Syntax error on line 200 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_jk.so into server: /etc/httpd/modules/mod_jk.so: cannot open shared object file: Permission denied
[FAILED]
혹시나 Selinux 보안 정책을 사용하고 있다면 다음과 같이 퍼미션을 변경해 준다.
%> chcon -t textrel_shlib_t /usr/lib/httpd/module/mod_jk.so
%> service httpd start
%> service httpd start
http://domain/을 접속하면?? 일반 아파치 환영 페이지가 ^^
7. 가상호스트 연동
httpd.conf에 하거나 또는 extra/httpd-vhost.conf에 가상호스트 설정을 한다.
httpd.conf에 하거나 또는 extra/httpd-vhost.conf에 가상호스트 설정을 한다.
ㄴㅁㅇㄹ
NameVirtualHost *
<VirtualHost *>
ServerAdmin id@domain.com
DocumentRoot "/var/www/html"
ServerName domain.com
ErrorLog "logs/domain.com-error_log"
CustomLog "logs/domain.com-access_log" common
JkMount /*.jsp ajp13
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
NameVirtualHost *
<VirtualHost *>
ServerAdmin id@domain.com
DocumentRoot "/var/www/html"
ServerName domain.com
ErrorLog "logs/domain.com-error_log"
CustomLog "logs/domain.com-access_log" common
JkMount /*.jsp ajp13
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *>
ServerAdmin ID@domain.com
DocumentRoot "/home/update/www"
ServerName sub.domain.com
JkMount /*.jsp ajp13
</VirtualHost>
ServerAdmin ID@domain.com
DocumentRoot "/home/update/www"
ServerName sub.domain.com
JkMount /*.jsp ajp13
</VirtualHost>
다음은 tomcat의 server.xml 설정
<Host name=localhost... >.... </Host>다음에 아래처럼 가상호스팅한 정보와 맞추어 넣는다
<Host name=localhost... >.... </Host>다음에 아래처럼 가상호스팅한 정보와 맞추어 넣는다
<!--########################### VirtualHost ###########################-->
<Host name="domain.com" appBase="/home/update/www"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="" debug="1"/>
</Host>
<!--######################## VirtualHost End ##########################-->
8.tomcat 데몬 등록
#> vi /etc/init.d/tomcat
vi /etc/init.d/tomcat 으로 다음과 같이 쉘스크립트를 짠다.
#!/bin/sh
#
# Tomcat6 auto-start
#
# chkconfig: 2345 90 90
# description: Auto-starts tomcat6
# processname: tomcat6
# pidfile: /var/run/tomcat6.pid
case $1 in
start)
sh /usr/local/tomcat/bin/startup.sh
;;
stop)
sh /usr/local/tomcat/bin/shutdown.sh
;;
restart)
sh /usr/local/tomcat/bin/shutdown.sh
sh /usr/local/tomcat/bin/startup.sh
;;
esac
exit 0
이후 권한 설정과 chkconfig 리스트에 추가한다.
#> chmod 755 /etc/init.d/tomcat
#> chkconfig --add tomcat
#> chkconfig --add tomcat
#> service tomcat restart