블로그 이미지
BJcomm
bjcomm

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
11-21 14:28

[CentOS] Tomcat 7.0.4 설치 (수정1)

2014. 11. 25. 17:36 | Posted by bjcomm

1. 톰캣 설치를 위한 파일 내려받기
wget http://mirror.apache-kr.org//tomcat/tomcat-7/v7.0.4-beta/bin/apache-tomcat-7.0.4.tar.gz
Tomcat 공식 사이트로 부터 apache-tomcat-7.0.4.tar.gz 파일을 내려 받습니다
(http://tomcat.apache.org/)

시스템에 설치된 아파치 버젼에 맞는jk_connentor 파일을 내려 받습니다
wget http://mirror.apache-kr.org//tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.31/x86_64/mod_jk-1.2.31-httpd-2.2.x.so
(CentOS 5.5 x86_64의 기본 설치된 아파치에 맞는 버젼입니다)



2. 압축 해제 및 설치
tar xvfz apache-tomcat-7.0.4.tar.gz
압축을 해제

mv apache-tomcat-7.0.4 /usr/local/tomcat
/usr/local 로 이동 시키면서 폴더명을 tomcat으로 변경

mv mod_jk-1.2.31-httpd-2.2.x.so /usr/lib64/httpd/modules/mod_jk.so
다운로드 받은 jk_connector 바이너리 파일을 아파치 모듈 폴더로 이동

* yum을 통해 설치하면 /usr/lib64/httpd/modules 입니다 (32비트 버젼의 경우 lib64 -> lib 입니다)
* /etc/httpd/modules 가 위 경로를 링크하고 있으므로 역시 이쪽으로 걸어도 무방합니다

chmod +x mod_jk.so
파일에 실행권한 설정


vim /etc/httpd/conf/httpd.conf

LoadModule jk_module modules/mod_jk.so

<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]"
JkMount /manager/* ajp13
JkMount /host-manager/* ajp13
JkMount /example/* ajp13
< /ifModule>

JkMount /*.jsp ajp13
< Directory />
Options FollowSymLinks
AllowOverride None
< /Directory>

* 위 내용을 적절하게 설정합니다(시스템에 따라 서 경로는 다를 수 있습니다)



vim /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
* list 에 ajp13이 아파치톰캣 홈페이지 에서 찾아보니 디폴트 값으로 되어있네요. (의미는 모름...)
* host 부분에 도메인 주소를 적으면 됩니다. (전 그냥 localhost로 셋팅~)



3. 서버 실행
sh /usr/local/tomcat/bin/catalina.sh start
Tomcat 서버 스타트

service httpd restart
Apache 서버 리스타트

여기 까지 성공적으로 마쳤다면, 이제 웹브라우저 열고
서버IP
서버IP/index.jsp
각각 아파치 테스트 페이지 및 톰캣 테스트 페이지가 열리는 것을 볼 수 있습니다.
(현재 톰캣 테스트페이지는 사진이 x로 표시되지 않습니다. 이는 경로가 틀려져서 그런것입니다)



그런데 혹시 아파치 서버 시작시 아래와 같은 오류가 뜬다면...


* 방법1 : SELinux관련으로 오류가 발생한 모듈의 보안문맥을 수정합니다 (권장)
chcon -u system_u -t httpd_modules_t mod_jk.so

* 방법2 : SELinux 를 Disabled 합니다... (대부분의 보안 관련 충돌문제 해결 가능하지만... 보안관계상 좋은 방법은 아닙니다)



4. 루트폴더 통합(옵션)
Tomcat과 Apache의 루트폴더를 통합하는 설정입니다.

Apache의 루트폴더를 Tomcat의 루트 폴더로 지정합니다
vim /etc/httpd/conf/httpd.conf

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/local/tomcat/webapps/ROOT"



#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/usr/local/tomcat/webapps/ROOT">

service httpd restart
아파치 서버 재시작

혹시 또 다시 아래의 실패 메시지를 접하게 된다면...


DocumentRoot must be a directory
디렉토리 설정이 잘못된 경우 이거나 SELinux 에의한 접근거부 에 따른 문제입니다.

확인 방법 : setup 들어가서 SELinux 부분 Disable 설정 후 다시 아파치 서버 재시작
성공이면 SELinux 가 원인, 그래도 실패면 다른 부분에 원인이 있다는 것

Apache 에 설정한 DocumentRoot 의 위치는 아래와 같습니다
/usr/local/tomcat/webapps/ROOT

chcon 으로 폴더의 보안문맥을 변경합시다
소유자 system_u, 바이너리 템블릿 bin_t 를 tomcat및 하위폴더 전체 적용해주고
tomcat/webapps및 하위폴더전체에 httpd_sys_content_t를 적용합니다.

chcon -R -u system_u -t bin_t /usr/local/tomcat
chcon -R -t httpd_sys_content_t /usr/local/tomcat/webapps



5. 서비스 등록 및 부팅시 자동시작
vim /etc/init.d/tomcat

#!/bin/sh
#
# Tomcat7 auto-start
#
# chkconfig: 2345 90 90
# description: Auto-starts tomcat7
# processname: tomcat7
# pidfile: /var/run/tomcat7.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

chmod 755 /etc/init.d/tomcat
실행권한 설정

chkconfig --add tomcat
서비스 자동시작 설정

setup으로 들어가면 service 항목에 tomcat 에 * 표시 되어있음을 확인할 수 있습니다.



수정 내역...

접기

[수정1 - 진행중]
2 항에서...
<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]"
JkMount /manager/* ajp13
JkMount /host-manager/* ajp13
JkMount /example/* ajp13
</ifModule>
굵게 표시된 부분 3줄이 추가되었습니다.

webapps 하단의 각 폴더별로 접근 가능하도록 JkMount를 설정합니다.

WAR 파일을 이용한 자동 배포 시, 해당 폴더에 대한 경로 설정을 위해서 JkMount를 추가로 작성하면 됩니다.

- JkMount /* ajp13 을 추가하면 jsp만 되는 현상이 생겨서 다시 수정하였습니다.
- Tomcat 화면에서 manager 및 기타 영역 접근시 연결이 안되던 문제가 해결.
- WAR파일을 이용한 배포 시, webapps에 넣으면 여기에 바로 풀리는데 루트 밑이라서 접근 안되던 문제가 해결.