Tomcat6インストール+初期設定
目次
構成
サーバ構成
OSバージョン
CentOS 5.5 64bit
パッケージ一覧
apache-tomcat-6.0.32.tar.gz
環境構築
インストール
Tomcatのプログラム本体のダウロード
以下のウェブサイトから、Tomcat 6.0の最新のtar.gzファイルをダウンロードします。
【URL】
http://tomcat.apache.org/download-60.cgi
【ファイル名】
apache-tomcat-6.0.32.tar.gz ※2011/03/11時点での最新版
ダウンロードしたファイルを/tmpディレクトリに配置します。
OSユーザとグループの作成
Tomcat起動用のユーザを作成します。ユーザ名、グループ名共に「tomcat」とします。
# groupadd -g 1001 tomcat # useradd -u 1001 -g tomcat -s /bin/bash tomcat
Tomcatのプログラムの展開
tomcatユーザにスイッチした後、配置したファイルをtarコマンドで展開し、/usr/localディレクトリに移動させます。
# su - tomcat $ cd /tmp/ $ tar zxvf ./apache-tomcat-6.0.32.tar.gz apache-tomcat-6.0.32/bin/catalina.sh apache-tomcat-6.0.32/bin/digest.sh apache-tomcat-6.0.32/bin/setclasspath.sh apache-tomcat-6.0.32/bin/shutdown.sh apache-tomcat-6.0.32/bin/startup.sh (中略) apache-tomcat-6.0.32/webapps/manager/images/tomcat.gif apache-tomcat-6.0.32/webapps/manager/images/update.gif apache-tomcat-6.0.32/webapps/manager/images/void.gif apache-tomcat-6.0.32/webapps/manager/status.xsd apache-tomcat-6.0.32/webapps/manager/xform.xsl $ exit # mv /tmp/apache-tomcat-6.0.32 /usr/local/
設定
シンボリックリンクの作成
ディレクトリ名を簡略化させるためにtomcatという名でシンボリックリンクを作成します。 これによって、今後Tomcatをリビジョンアップさせた場合でも、シンボリックリンクを 張り直すだけで最新のTomcatを利用でき、関連シェル等の修正が不要となります。
# cd /usr/local/ # ln -s apache-tomcat-6.0.32 tomcat
ログディレクトリを/var/logディレクトリ以下へtomcat6という名前にリネームして移動し、 元のlogsディレクトリへシンボリックリンクを作成します。
# cd /usr/local/tomcat/ # mv logs /var/log/tomcat6 # ln -s /var/log/tomcat6 logs
Tomcatの起動
tomcatユーザで起動シェルを実行後、プロセスが起動したことを確認します。 その後、tomcatユーザで停止シェルを実行し、プロセスが停止したことを確認します。
# su - tomcat -c /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/jdk1.6.0_24 Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar # ps -ef | grep tomcat | grep -v grep tomcat 4328 1 4 00:23 ? 00:00:03 /usr/java/jdk1.6.0_24/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start # su - tomcat -c /usr/local/tomcat/bin/shutdown.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/java/jdk1.6.0_24 Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar # ps -ef | grep tomcat | grep -v grep
rcスクリプトの作成
Linux起動時にTomcatを自動起動させるためのrcスクリプトを作成します。 今回はCentOS5.5にバンドルされているTomcat5のrcスクリプトをベースにして作成しました。 一部バグ修正も行っていますが、ザッと作成しただけなので不具合があるかもしれませんがご了承ください。
# cd /etc/rc.d/init.d/ # vi tomcat6
#!/bin/bash # # tomcat6 This shell script takes care of starting and stopping Tomcat # # chkconfig: - 80 20 # ### BEGIN INIT INFO # Provides: tomcat6 # Required-Start: $network $syslog # Required-Stop: $network $syslog # Default-Start: # Default-Stop: # Description: Release implementation for Servlet 2.4 and JSP 2.0 # Short-Description: start and stop tomcat ### END INIT INFO # # - originally written by Henri Gomez, Keith Irwin, and Nicolas Mailhot # - heavily rewritten by Deepak Bhole and Jason Corley # # commented out until the RHEL and FC daemon functions converge # Source the function library #if [ -r "/etc/rc.d/init.d/functions" ]; then #. /etc/rc.d/init.d/functions #fi NAME="$(basename $0)" unset ISBOOT if [ "${NAME:0:1}" = "S" -o "${NAME:0:1}" = "K" ]; then NAME="${NAME:3}" ISBOOT="1" fi # For SELinux we need to use 'runuser' not 'su' if [ -x "/sbin/runuser" ]; then SU="/sbin/runuser" else SU="su" fi # Define which connector port to use CONNECTOR_PORT="${CONNECTOR_PORT:-8080}" # Tomcat program name TOMCAT_PROG="$NAME" # Define the tomcat username TOMCAT_USER="${TOMCAT_USER:-tomcat}" # Define the tomcat log file TOMCAT_LOG="${TOMCAT_LOG:-/var/log/tomcat6/catalina.out}" # Time to wait in seconds, before killing process SHUTDOWN_WAIT=30 RETVAL="0" # remove when the RHEL and FC daemon functions converge # (pulled from /etc/rc.d/init.d/functions) function checkpid() { local i for i in $* ; do if [ -d "/proc/${i}" ]; then return 0 fi done return 1 } # remove when the RHEL and FC daemon functions converge # (pulled from /etc/rc.d/init.d/functions) function echo_failure() { echo -en "\\033[60G" echo -n "[ " echo -n $"FAILED" echo -n " ]" echo -ne "\r" return 1 } # remove when the RHEL and FC daemon functions converge # (pulled from /etc/rc.d/init.d/functions) function echo_success() { echo -en "\\033[60G" echo -n "[ " echo -n $"OK" echo -n " ]" echo -ne "\r" return 0 } # See how we were called. function start() { echo -n "Starting ${TOMCAT_PROG}: " if [ -f "/var/lock/subsys/${NAME}" ] ; then if [ -f "/var/run/${NAME}.pid" ]; then read kpid < /var/run/${NAME}.pid if checkpid $kpid 2>&1; then echo "$NAME process already running" return -1 else echo "lock file found but no process running for" echo "pid $kpid, continuing" fi fi fi export CATALINA_PID="/var/run/${NAME}.pid" touch $CATALINA_PID chown ${TOMCAT_USER}:${TOMCAT_USER} $CATALINA_PID # $SU - $TOMCAT_USER -c "$TOMCAT_SCRIPT start" >> $TOMCAT_LOG 2>&1 $SU - $TOMCAT_USER -c "/usr/local/tomcat/bin/startup.sh" >> $TOMCAT_LOG 2>&1 RETVAL="$?" if [ "$RETVAL" -eq 0 ]; then echo_success pgrep -u tomcat java > $CATALINA_PID touch /var/lock/subsys/${NAME} else echo_failure fi echo return $RETVAL } function status() { RETVAL="1" if [ -f "/var/run/${NAME}.pid" ]; then read kpid < /var/run/${NAME}.pid if checkpid $kpid 2>&1; then echo "$0 is already running (${kpid})" RETVAL="0" else echo "lock file found but no process running for pid $kpid" fi else pid="$(pgrep -u tomcat java)" if [ -n "$pid" ]; then echo "$0 running (${pid}) but no PID file exists" RETVAL="0" else echo "$0 is stopped" fi fi return $RETVAL } function stop() { local STOP_VERBOSE="false" echo -n "Stopping $TOMCAT_PROG: " if [ -f "/var/lock/subsys/${NAME}" ]; then # $SU - $TOMCAT_USER -c "$TOMCAT_SCRIPT stop" >> $TOMCAT_LOG 2>&1 $SU - $TOMCAT_USER -c "/usr/local/tomcat/bin/shutdown.sh" >> $TOMCAT_LOG 2>&1 RETVAL="$?" if [ "$RETVAL" -eq "0" ]; then count="0" if [ -f "/var/run/${NAME}.pid" ]; then read kpid < /var/run/${NAME}.pid until [ "$(ps --pid $kpid | grep -c $kpid)" -eq "0" ] || \ [ "$count" -gt "$SHUTDOWN_WAIT" ]; do if [ "$STOP_VERBOSE" = "true" ]; then echo -n -e "\nwaiting for processes $kpid to exit" fi sleep 1 let count="${count}+1" done if [ "$count" -gt "$SHUTDOWN_WAIT" ]; then if [ "$STOP_VERBOSE" = "true" ]; then echo -n -e "\nkilling processes which didn't stop" echo -n -e "after " echo -n "$SHUTDOWN_WAIT seconds" fi kill -9 $kpid fi echo_success if [ "$count" -gt "0" ]; then echo -n -e "\n" fi fi rm -f /var/lock/subsys/$NAME /var/run/$NAME.pid else echo_failure fi fi } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop sleep 2 start ;; condrestart) if [ -f "/var/run/${NAME}.pid" ]; then stop start fi ;; status) status ;; *) echo "Usage: $TOMCAT_PROG {start|stop|restart|condrestart|status}" exit 1 esac exit $RETVAL
作成したrcスクリプトに実行権限を付与します。
# chmod 755 tomcat6
rcスクリプトの登録と自動起動の設定
作成したrcスクリプトを登録します。 その後自動起動するよう設定します。
# chkconfig --add tomcat6 # chkconfig --list tomcat6 tomcat6 0:off 1:off 2:off 3:off 4:off 5:off 6:off # chkconfig tomcat6 on # chkconfig --list tomcat6 tomcat6 0:off 1:off 2:on 3:on 4:on 5:on 6:off