하은양 믿음군 효실맘 호홍홍집s

Centos Tomcat 설치하기 본문

가벼운 배움/서버관련

Centos Tomcat 설치하기

호홍홍집 2016. 4. 26. 20:22

참고 : http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%ED%86%B0%EC%BA%A37_%EC%84%A4%EC%B9%98

1. 사전 작업 : 리눅스 JDK 설치되어 있어야한다.

2. 다운로드 및 설치
wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-7/v7.0.69/bin/apache-tomcat-7.0.69.tar.gz
tar xzf apache-tomcat-7.0.69.tar.gz
mv apache-tomcat-7.0.69 /usr/local/tomcat7

만약 wget으로 다운로드할 수 없다면 http://apache.mirror.cdnetworks.com/tomcat/tomcat-7 에 다른 버전이 있는지 확인해보자..

3. (참고)서비스 구성(추가구성)
/etc/init.d/tomcat7 파일을 만들어 service로 등록한다.

wget http://zetawiki.com/ex/tomcat/%etc%init.d%tomcat7 -O /etc/init.d/tomcat7
chmod 755 /etc/init.d/tomcat7

4. 시작 및 확인
서비스 등록되었을 시 :
service tomcat7 start
그냥 가동시 :
/usr/local/tomcat7/bin/startup.sh

tomcat 포트 확인
netstat -anp | grep :8080

tomcat process 확인
ps -ef | grep tomcat

5. (참고) 방화벽 열기
위 문단에서 접속이 되었다면 이 문단은 넘어가시라. 실패시에만 참고.

iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart

6. 튜닝...
(참고 : http://linuxism.tistory.com/236)

6-1. 인코딩설정
$ vi $CATALINA_HOME/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>

6-2. JVM heap 메모리 크기 변경

- $CATALINA_HOME/bin/catalina.sh 파일에 아래 내용을 추가한다.
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"
(*) JVM의 기본 heap 메모리 사이즈는 64MB 이므로 최소한 -server, -Xms, -Xmx 옵션은 설정해야 한다.
(*) JVM 옵션 목록: http://blogs.sun.com/watt/resource/jvm-options-list.html

※ CATALINA_OPTS="-server -Xms256M -Xmx384M" : 정말로 이옵션이 꼭 필요하지 않는이상 적용하지 말아야 합니다.
이 옵션은 힙사이즈를 늘려주는대신 GC 시간을 잡아먹기때문에 사용자수가 유독 많은 웹사이트의 경우 절대 추천하지 않습니다.

※ CATALINA_OPTS : 멀티로 톰캣을 운영시 사용되는 옵션도 있네요
(참조 : https://beyondj2ee.wordpress.com/2012/07/03/%EB%A9%80%ED%8B%B0-%ED%86%B0%EC%BA%A3-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EB%A1%9C-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0-multiple-tomcat-instances/)
export CATALINA_OPTS="-Denv=product -Denv.servername=instance1"

6-3. JRE 메모리 누수 처리
- Tomcat 6.0.26부터 메모리 누수를 탐지하는 기능이 추가되었다.
- $CATALINA_HOME/conf/server.xml 파일에서 아래 코드를 찾아 주석을 해제한다.
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

6-4. 스레드 풀(thread pool) 설정
- 클라이언트의 요청을 처리하는 스레드 수 설정. 기본 값은 200이며 그 이상의 요청이 있을 경우 "connection refused" 메시지를 리턴한다.
- $CATALINA_HOME/conf/server.xml 파일에서 <Connector />의 속성을 수정한다.
<Connector port="8080" address="localhost" maxThreads="250" maxHttpHeaderSize="8192" emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8181" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
- 만약 maxThreads 값이 최대 값인 750을 넘을 경우 두 대의 Tomcat을 이용해 클러스터링 구성을 하는 것이 좋다.
하나의 Tomcat에 maxThreads=1000을 설정하지 말고 두 개의 Tomcat에 각각 maxThreads=500 설정을 하라는 뜻이다.

7. catalina.sh의 JAVA_HOME, JRE_HOME .. 설정
7-1. 별도의 jdk 이용시 :
JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80

7-2. 클래스 파일 (Class File)을 컴파일한 JDK보다 톰캣 JRE 버전이 낮아서 발생한 문제 : 톰캣 JRE를 어떻게 변경할까?
사용하는 java 파일을 찾아보면 setclasspath.sh 파일 내에 다음과 같이 설정되어 있다.
_RUNJAVA="$JRE_HOME"/bin/java
startup.sh 파일 실행 시에 다음과 같은 메시지를 볼 수 있다.
Using JRE_HOME:        /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
위 값이 현재 설정된 JRE_HOME으로

만약에 java의 위치가 /usr/bin/java라면
catalina.sh에서 setclasspath.sh를 실행하기 전에 다음을 추가해주면 된다.
JRE_HOME=/usr