회사 업무로 인해 Tomcat를 설치할 일이 생겼습니다.
설치 환경은 CentOS인데 yum을 이용하여 설치하기로 마음을 먹었습니다.
이유는 패키지를 이용하면 이후 보안 문제 등으로 버전업을 해야 할 경우 이후 관리가 용이하고,
표준화된 디렉토리 구조로 인해 후임자가 설치 환경을 파악히기 쉽다는 점 때문입니다.
그러나 톰캣 설치를 해 본적이 없는 저는 이번 일로..고생 좀 했습니다..
아래는 CentOS 설치시 개발 관련된 선택 설치는 한 상태에서 Tomcat 관련에서 추가로 설치한 패키지들입니다.
## Tomcat Package ##
tomcat5 ; Tomcat
tomcat5-webapps ; Tomcat Webapps ( /usr/share/tomcat5/webapps/ROOT 설치 화일 )
tomcat5-admin-webapps : Tomcat Admin Webapps ( http://HOST/admin 설치화일 )
tomcat5-servlet-2.4-api : Servlet API
tomcat5-jsp-2.0-api.i386 : JSP API
struts-webapps-tomcat5.i386 : Struts
## JDK ##
java-1.6.0-openjdk-devel
## MySQL ##
mysql-server.i386
mysql-server.i386
mysql-connector-odbc.i386
mysql-devel
설정 환경
- localhost를 사용하지 않고 추가 host를 이용하고 기본 ROOT ( /usr/share/tomcat5/webapps/ROOT )를 변경하는 설정
[ 설정 방법 ]
1. /etc/tomcat5/web.xml
아래 두 부분이 기본적으로 보안으로 인해 주석처리 되어 있는데 주석을 지워준다.
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
2. /etc/tomcat5/server.xml
설정 화일 맨 끝부분 </Engine>이 닫히기 전에 아래 부분을 삽입한다.
<Host name="hostname" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Alias>10.0.0.1</Alias>
<Alias>test.domain.co.kr</Alias>
</Host>
3. /etc/tomcat5/Catalina/hostname/ROOT.xml
기본적으로 설정 디렉토리 밑에 있는 Catalina 디렉토리를 이동하면 localhost 디렉토리가 있다.
그러나 server.xml에서 설정한 <Host> name과 동일한 디렉토리를 만들고 거기에 ROOT.xml을 생성하여 아래 내용을 넣는다.
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/App/wcms/dist/webapp"
privileged="true" antiResourceLocking="false" antiJARLocking="false"
reloadable="false" >
</Context>
4. /etc/profile
패키지로 설치할 때 가장 고민하는 부분이죠... 패키지의 디렉토리 구조를 정확하게 파악해야 한다는...
제가 몇 차례 시행 착오 끝에 얻어낸 설정 내용입니다.. ( CentOS 5.5에서 패키지로만 설치했을 때 설정내용입니다. )
export JAVA_HOME="/usr/lib/jvm/java"
export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/common/lib:/usr/share/java/tomcat5- servlet-2.4-api.jar:/usr/share/java/tomcat5-jsp-2.0-api.jar
export PATH=$PATH:$CATALINA_HOME/bin:/usr/bin
5. $ROOT/WEB-INF/lib/mysql-connector-java-5.1.15-bin.jar
http://www.mysql.com/downloads/connector/j 에서 mysql-connect를 다운 받아... WEB-INF/lib 밑에 복사해 넣는다.
[ 설정 관련된 정보 ]
설정에 관해서 인터넷 검색을 통해서 찾아본 자료들이 많이 틀리더군요..
나중에 안 것인데.... 버전 별로 설정들이 조금씩 다르더군요....
최근 Tomcat 5.5를 기준으로 설정 관련해서..제가 정리한 자료들입니다.....
1. servlet-api
인터넷 검색을 통해서 보니.. servlet-api.jar 설정 관련된 부분이 나옵니다..
그런데 yum을 설치한 시스템에서는
tomcat5-servlet-2.4-api.jar
servletapi5.jar
있더군요..뭐가 틀린지 궁금했었는데...http://blog.naver.com/webpro000/60035380483 에 아래와 같은 내용이 있더군요..
servlet-api.jar 와 servlet.jar 파일은 tomcat에서 servlet 엔진 역할을 하는 모듈로서
servlet.jar 는 톰켓 4.x 이전 버젼,
servlet-api.jar는 톰켓 5.x 버전 부터 사용된다.
Tomcat 버젼별 지원하는 Servlet 버젼
3.x 대.. Java Servlet 2.2 and JSP 1.1
4.x 대.. Java Servlet 2.3 and JSP 1.2
자세한 내용은 다음 사이트를 참고 하세요
http://java.sun.com/products/servlet/download.html
서블릿을 개발하려면 이런 설정이 필요하다.
tomcat 4.x
tomcat_4.x_home/common/lib에 있는 servlet.jar -> java_home/jre/lib/ext에 copy
tomcat_5.x_home/common/lib에 있는 servlet-api.jar, jsp-api.jar -> java_home/jre/lib/ext에 copy
5.0 부터는 servlet-api.jar 와 jsp-api.jar 로 나뉘어서 같은 디렉토리에 존재합니다.
2. Context 설정
톰캣 초기에는 server.xml에서 context를 설정했으나...
지금은 조금은 바뀌어 context.xml 또는 $TOMCAT_CONFIG/Catalina/HOST/ROOT.xml 에서 설정한다.
물론 server.xml / context.xml에서 설정해도 된다.
3. Tomcat Admin 설정 ( /etc/tomcat5/tomcat-users.xml )
tomcat5-admin-webapps 패키지를 설치하면 웹 상에서 톰캣의 설정을 할 수 있다. Host나 Context 추가도 웹으로도 가능하다.
그러나 실제로 해 보니...부분적으로 에러 나는 부분이 있고, 설정을 한 후에는 설정 내용으 바로 반영이 안되는 단점이 있어 "다시 읽기"를 해야 한다.
http://hostname/admin 로 접속하면 아이디와 암호를 물어보는데 관리자 권한이 있는 아이디를 입력해야 한다.
예를 들어 tomcat이란 계정에 그 권한을 부여하려면 roles에 admin,manager를 추가시켜준다.
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomca,admin,manager"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>
4. 각종 다운로드 위치
[Apache] http://httpd.apache.org/download.cgi
[MySQL] http://dev.mysql.com/downloads
[MySQL-Connector] http://www.mysql.com
[PHP] http://www.php.net/
[JDK ] http://java.sun.com/
[Tomcat] http://jakarta.apache.org/
[Tomcat-connector] http://jakarta.apache.org/site/downloads/downloads_tomcat.html
5. Apache와 Tomcat을 같이 쓰는 이유
Web 컨테이너는 웹 서버 기능이 있다. 톰캣도 마찬가지로 웹 서버기능이 있으나...아파치를 연동해서 쓴다.
이는 정적인 페이지는 아파치가 빠르기 때문에, JSP나 Servlet 부분을 제외한 페이지는 아파치를 이용한다.
6. WEB-INF/lib
라이브러리를 쓰기 위해서는 환경변수 $CLASSPATH에 넣어야 하는데 WEB-INF/lib에 밑에 복사해 넣으면 동일한 효과가 있다.
Tomcat을 전혀 모르는 상황에서 설치한 것이기 때문에 전체적인 이해가 부족하더라도 조금이나마 도움이 되시길 바랍니다.