参考:https://hirooka.pro/?p=6698
モジュールを最新にする
# apt-get update
# apt-get upgrade
Tomcat用のアカウントを作る
# adduser tomcat
Tomcat8をダウンロードして展開
# wget http://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-8/v8.0.15/bin/apache-tomcat-8.0.15.tar.gz
# tar zxvf apache-tomcat-8.0.15.tar.gz
# chown tomcat:tomcat apache-tomcat-8.0.15
/usr/localに移す
# mv apache-tomcat-8.0.8 /usr/local/
※気のせいか、/usr/local/ 以外の場所に移すとちゃんと動かない。
パスにバージョンが付くと後々、不便なのでシンボリックリンクを作る
# ln -s /usr/local/apache-tomcat-8.0.15 /usr/local/tomcat8
サービスっぽい起動用のシェルスクリプトを作る
# vi /etc/init.d/tomcat8
# chmod 755 /etc/init.d/tomcat8
起動してみる
# /etc/init.d/tomcat8 start
ブラウザから観てみる
http://192.168.*.*:8080
画面に
Apache Tomcat/8.0.15
If you’re seeing this, you’ve successfully installed Tomcat. Congratulations!
と出ていればOKらしい。
conf/tomcat-users.xmlに
<role rolename=”manager-gui”/>
<user username=”tomcat” password=”tomcat” roles=”manager-gui”/>
を追加して再起動しようとして気が付いた。スクリプトがダメポだった。
停止してみる
# /etc/init.d/tomcat8 stop
※サービスっぽい起動用のシェルスクリプトの中身
やっていることは、
共通部:
環境変数の設定
起動部:
多重起動チェック、実行時のユーザの切り替えてstartup.shを実行
停止部:
起動中チェック、実行時のユーザの切り替えてshutdown.shを実行
注意するべきは tomcat のプロセスIDの探し方。
元ネタではTOMCAT=…の部分が無く、
多重起動できてしまう。
しかし安易にTOMCAT=tomcatとしてしまうと
# service tomcat8 start 自身がひっかかり、さらに、対象プロセスが複数あった場合にはうまく処理できないものなので
ps auxの結果を観てみると、これが丁度良かった。
できれば2-3個見つけてしまった場合にも対応できるようにした方がいいのだろうが、
そんなときは確実に自プロセスが先頭にあるので自滅(kill -9 自プロセス)する。
なお、chkconfig で自動起動の登録は
# chkconfig –add tomcat8
tomcat8 0:off 1:off 2:on 3:on 4:on 5:on 6:off
— スクリプトの中身 —
#!/bin/bash
### BEGIN INIT INFO
# Provides:tomcat8
# Required-Start:
# Required-Stop:
# Default-Start:2 3 4 5
# Default-Stop:0 1 6
# Short-Description:
# Description:
### END INIT INFO
#
# tomcat
#
# chkconfig:
# description: Start up the Tomcat servlet engine.
# Source function library.
# /etc/init.d/functions
CATALINA_HOME=”/
TOMCAT_USER=”tomcat”
SHUTDOWN_WAIT=10
TOMCAT=/
tomcat_pid() {
echo `ps aux | grep $TOMCAT | grep -v grep | awk ‘{ print $2 }’`
}
start() {
pid=$(tomcat_pid)
if [ -n “$pid” ]
then
echo “Tomcat is already running (pid: $pid)”
else
echo “Starting Tomcat”
/bin/su $TOMCAT_USER $CATALINA_HOME/bin/startup.sh
fi
return 0
}
stop() {
pids=$(tomcat_pid)
if [ -n “$pids” ]
then
echo “Stoping Tomcat processes ${pids[@]} “
/bin/su $TOMCAT_USER $CATALINA_HOME/bin/shutdown.sh
for pid in ${pids[@]}; do
echo -n “Waiting for processes to exit [“
let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $pid | grep -c $pid` = ‘0’ ] || [ $count -gt $kwait ]
do
echo -n “.”;
sleep 1
let count=$count+1;
done
echo “Done]”
if [ $count -gt $kwait ]
then
echo “Killing processes ($pid) which didn’t stop after $SHUTDOWN_WAIT seconds”
kill -9 $pid
fi
done
else
echo “Tomcat is not running”
fi
return 0
}
status() {
pid=$(tomcat_pid)
if [ -n “$pid” ]
then
echo “Tomcat is running with pid: $pid”
else
echo “Tomcat is not running”
fi
}
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo “Usage: $0 {start|stop|restart|status}”
exit 1
;;
esac
exit 0