....

CentOS 5.3에서 Java와 Tomcat 설치 - Tomcat을 서비스로 관리하기.. 본문

Linux

CentOS 5.3에서 Java와 Tomcat 설치 - Tomcat을 서비스로 관리하기..

idkook 2010. 1. 11. 14:05

CentOS에서 Tomcat을 설치하려면 Java가 필요한데..

솔직히 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

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
### 저장 내용 끝

이후 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 이다...)

자... 자바 설치는 이걸로 끝이다.... 참 쉽다.... ㅡㅡㅋ;

이제 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의 소스를 두고...
심볼릭링크로 /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 내용 끝.

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와 함깨 실행중 매시지가 출력된다.

이상 Tomcat 설치 끝~

아파치와 연동은 다음 아티클로~~~
Comments