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
