Linux
CentOS 5.3에서 Java와 Tomcat 설치 - Tomcat을 서비스로 관리하기..
마니씨
2010. 1. 13. 09:20
CentOS에서 Tomcat을 설치하려면 Java가 필요한데..
솔직히 Java와 Tomcat만은 도저히 yum패키지를 설치하기가 그렇다..
Java Download : http://java.sun.com/javase/downloads/index.jsp
위 사이트에서 jdk-6u17-linux-i586.bin 를 다운받아서 실행한다.
Java 패키지는 /usr/local/jdk/ 밑에 버젼별로 두고...
심볼릭 링크로 /usr/java 로 둔다... 나중에 Java의 버젼을 관리할때 다른 버젼을 /usr/local/jdk에 둔 뒤에 java의 심볼릭 링크 대상만 변경하면 된다.
이는 시스템 관리자마다 각각 편한 방식으로 사용하면 된다.
Java의 환경설정을 별도의 profile을 만들어서 등록한다.
이후 Java에 의존적인 어플리케이션에 대한 환경 변수는 java.sh 파일에 추가만 해주면 된다.
/etc/profile 의 최하단에 설정을 직접 추가할 수도 있겠지만..
실제로 /etc/profile은 /etc/profile.d 밑에 있는 모든 파일을 실행해서 환경변수를 등록하는 스크립트 일 뿐이므로.. 이 방식이 보다 센스 있는 방법이라고 할 수 있다.
이제 저장한 환경변수를 실행해서 등록한다. (환경변수 등록하자고 재부팅 할수는 없다...)
자... 자바 설치는 이걸로 끝이다.... 참 쉽다.... ㅡㅡㅋ;
이제 Tomcat 설치....
Tomcat을 core에 tar.gz로 다운 받는다. (http://tomcat.apache.org/download-60.cgi)
심볼릭링크로 /usr/local/tomcat 경로를 만들어서 접근한다...
이렇게 하면 tomcat버젼을 바꿀때마다 환경설정을 바꿀 필요도 없으면서..
현재 설치된 톰캣의 버젼을 바로 확인할 수 있어서 자주 이용한다.
아래와 같은 service 파일을 /etc/init.d 에 등록한다.
httpd 의 시작 스크립트의 내용을 기본으로 해서 사알~~~짝 고친 내용이다.
pid를 status를 이용해서 알 수 있도록 추가했다..
아마 PID에 대한 내용은 catalina.sh 에서 지원하는 기능을 그대로 추가한것 뿐이니까 멀티프로세스에서도 잘 될거라고 생각은 하지만...
catalina.sh 스크립트의 초반 주석을 보면 자신의 구미에 맞게 설정을 바꿀 수도 있을 것이다..
이제 이 스크립트를 서비스에 등록하고 자동으로 시작되도록 한다.
출처 : http://idkook.tistory.com/34
솔직히 Java와 Tomcat만은 도저히 yum패키지를 설치하기가 그렇다..
Java Download : http://java.sun.com/javase/downloads/index.jsp
위 사이트에서 jdk-6u17-linux-i586.bin 를 다운받아서 실행한다.
cd /usr/local/src
sh jdk-6u17-linux-i586.bin
# 라이센스 전문이 출력되면 q를 누르고 yes를 입력하면 파일 압축이 해제된다.
mkdir /usr/local/jdk
mv jdk1.6.0_17 /usr/local/jdk
ln -s /usr/local/jdk/jdk1.6.0_17 /usr/java
sh jdk-6u17-linux-i586.bin
# 라이센스 전문이 출력되면 q를 누르고 yes를 입력하면 파일 압축이 해제된다.
mkdir /usr/local/jdk
mv jdk1.6.0_17 /usr/local/jdk
ln -s /usr/local/jdk/jdk1.6.0_17 /usr/java
Java 패키지는 /usr/local/jdk/ 밑에 버젼별로 두고...
심볼릭 링크로 /usr/java 로 둔다... 나중에 Java의 버젼을 관리할때 다른 버젼을 /usr/local/jdk에 둔 뒤에 java의 심볼릭 링크 대상만 변경하면 된다.
이는 시스템 관리자마다 각각 편한 방식으로 사용하면 된다.
Java의 환경설정을 별도의 profile을 만들어서 등록한다.
touch /etc/profile.d/java.sh
chmod 755 /etc/profile.d/java.sh
vi /etc/profile.d/java.sh
### 아래의 내용을 입력한뒤 저장
#!/bin/sh
JAVA_HOME=/usr/java
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH
### 저장 내용 끝
chmod 755 /etc/profile.d/java.sh
vi /etc/profile.d/java.sh
### 아래의 내용을 입력한뒤 저장
#!/bin/sh
JAVA_HOME=/usr/java
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH
### 저장 내용 끝
이후 Java에 의존적인 어플리케이션에 대한 환경 변수는 java.sh 파일에 추가만 해주면 된다.
/etc/profile 의 최하단에 설정을 직접 추가할 수도 있겠지만..
실제로 /etc/profile은 /etc/profile.d 밑에 있는 모든 파일을 실행해서 환경변수를 등록하는 스크립트 일 뿐이므로.. 이 방식이 보다 센스 있는 방법이라고 할 수 있다.
이제 저장한 환경변수를 실행해서 등록한다. (환경변수 등록하자고 재부팅 할수는 없다...)
source /etc/profile.d/java.sh
env | grep JAVA
# JAVA_HOME의 경로가 나온다...
java -version
# JAVA 의 버젼이 3줄 출력된다. (1.6.0_17 이다...)
env | grep JAVA
# JAVA_HOME의 경로가 나온다...
java -version
# JAVA 의 버젼이 3줄 출력된다. (1.6.0_17 이다...)
자... 자바 설치는 이걸로 끝이다.... 참 쉽다.... ㅡㅡㅋ;
이제 Tomcat 설치....
Tomcat을 core에 tar.gz로 다운 받는다. (http://tomcat.apache.org/download-60.cgi)
cd /usr/local/src
wget http://apache.tt.co.kr/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
tar xvzpf apache-tomcat-6.0.20.tar.gz
mkdir /usr/local/apache-tomcat
mv apache-tomcat-6.0.20 /usr/local/apache-tomcat
cd /usr/local
ln -s apache-tomcat/apache-tomcat-6.0.20 tomcat
/usr/local/apache-tomcat 밑에 tomcat의 소스를 두고... wget http://apache.tt.co.kr/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.tar.gz
tar xvzpf apache-tomcat-6.0.20.tar.gz
mkdir /usr/local/apache-tomcat
mv apache-tomcat-6.0.20 /usr/local/apache-tomcat
cd /usr/local
ln -s apache-tomcat/apache-tomcat-6.0.20 tomcat
심볼릭링크로 /usr/local/tomcat 경로를 만들어서 접근한다...
이렇게 하면 tomcat버젼을 바꿀때마다 환경설정을 바꿀 필요도 없으면서..
현재 설치된 톰캣의 버젼을 바로 확인할 수 있어서 자주 이용한다.
아래와 같은 service 파일을 /etc/init.d 에 등록한다.
vi /etc/init.d/tomcat
#### 이하 tomcat 파일의 내용..
#!/bin/bash
#
# httpd Startup script for the Apache Tomcat Server
#
# chkconfig: - 80 20
# description: Release implementation for Servlet 2.4 and JSP 2.0
# processname: tomcat
# lockfile: /var/lock/subsys/tomcat
# pidfile: /var/run/tomcat.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Java의 환경설정을 가져온다.
if [ -f /etc/profile.d/java.sh ]; then
. /etc/profile.d/java.sh
fi
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
prog=Tomcat
lockfile=${LOCKFILE-/var/lock/subsys/tomcat}
pidfile=${PIDFILE-/var/run/tomcat.pid}
# CATALINA_PID파일을 지정하면, startup.sh 에서 pid를 기록.
export CATALINA_PID=$pidfile
start() {
echo $"Starting $prog: "
$CATALINA_HOME/bin/catalina.sh start
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo $"Stopping $prog: "
$CATALINA_HOME/bin/catalina.sh stop
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${pidfile} && rm -f ${lockfile}
}
status() {
RETVAL="1"
if [ -f "$CATALINA_PID" ]; then
read kpid < $CATALINA_PID
if checkpid $kpid 2>&1; then
echo "$prog is already running (${kpid})"
RETVAL="0"
else
echo "lock file found but no process running for pid $kpid"
fi
else
pid="$(pgrep java)"
if [ -n "$pid" ]; then
echo "$prog running (${pid}) but no PID file exists"
RETVAL="0"
else
echo "$prog is stopped"
fi
fi
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
### tomcat 내용 끝.
#### 이하 tomcat 파일의 내용..
#!/bin/bash
#
# httpd Startup script for the Apache Tomcat Server
#
# chkconfig: - 80 20
# description: Release implementation for Servlet 2.4 and JSP 2.0
# processname: tomcat
# lockfile: /var/lock/subsys/tomcat
# pidfile: /var/run/tomcat.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Java의 환경설정을 가져온다.
if [ -f /etc/profile.d/java.sh ]; then
. /etc/profile.d/java.sh
fi
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
prog=Tomcat
lockfile=${LOCKFILE-/var/lock/subsys/tomcat}
pidfile=${PIDFILE-/var/run/tomcat.pid}
# CATALINA_PID파일을 지정하면, startup.sh 에서 pid를 기록.
export CATALINA_PID=$pidfile
start() {
echo $"Starting $prog: "
$CATALINA_HOME/bin/catalina.sh start
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo $"Stopping $prog: "
$CATALINA_HOME/bin/catalina.sh stop
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${pidfile} && rm -f ${lockfile}
}
status() {
RETVAL="1"
if [ -f "$CATALINA_PID" ]; then
read kpid < $CATALINA_PID
if checkpid $kpid 2>&1; then
echo "$prog is already running (${kpid})"
RETVAL="0"
else
echo "lock file found but no process running for pid $kpid"
fi
else
pid="$(pgrep java)"
if [ -n "$pid" ]; then
echo "$prog running (${pid}) but no PID file exists"
RETVAL="0"
else
echo "$prog is stopped"
fi
fi
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 2
start
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
### tomcat 내용 끝.
httpd 의 시작 스크립트의 내용을 기본으로 해서 사알~~~짝 고친 내용이다.
pid를 status를 이용해서 알 수 있도록 추가했다..
아마 PID에 대한 내용은 catalina.sh 에서 지원하는 기능을 그대로 추가한것 뿐이니까 멀티프로세스에서도 잘 될거라고 생각은 하지만...
catalina.sh 스크립트의 초반 주석을 보면 자신의 구미에 맞게 설정을 바꿀 수도 있을 것이다..
이제 이 스크립트를 서비스에 등록하고 자동으로 시작되도록 한다.
cd /etc/init.d
chmod 755 tomcat
chown root.root tomcat
chkconfig --add tomcat
chkconfig --level 3 tomcat on
chkconfig --level 5 tomcat on # 런레벨 5를 기본으로 사용할 경우...
service tomcat start
service tomcat status
### tomcat 의 pid와 함깨 실행중 매시지가 출력된다.
chmod 755 tomcat
chown root.root tomcat
chkconfig --add tomcat
chkconfig --level 3 tomcat on
chkconfig --level 5 tomcat on # 런레벨 5를 기본으로 사용할 경우...
service tomcat start
service tomcat status
### tomcat 의 pid와 함깨 실행중 매시지가 출력된다.
출처 : http://idkook.tistory.com/34