web-dev-qa-db-ja.com

システムの再起動時にTomcat7を自動的に再起動する方法は?

Amzon EC2インスタンスで実行されるUbuntu 12.04 LTSにTomcat 7をインストールしました。システムの再起動時にTomcatが自動的に再起動するようになりました。

私は このブログ を読んで、以下のスクリプトを/etc/init.d/Tomcat7に追加することを提案しています:

# Tomcat auto-start
#
# description: Auto-starts Tomcat
# processname: Tomcat
# pidfile: /var/run/Tomcat.pid

case $1 in
start)
sh /usr/share/Tomcat7/bin/startup.sh
;;
stop) 
sh /usr/share/Tomcat7/bin/shutdown.sh
;;
restart)
sh /usr/share/Tomcat7/bin/shutdown.sh
sh /usr/share/Tomcat7/bin/startup.sh
;;
esac 
exit 0

次のコマンドを発行します。

Sudo chmod 755 /etc/init.d/Tomcat7

Sudo ln -s /etc/init.d/Tomcat7 /etc/rc1.d/K99Tomcat

Sudo ln -s /etc/init.d/Tomcat7 /etc/rc2.d/S99Tomcat

Sudo /etc/init.d/Tomcat7 restart

私の質問

  1. Tomcat7には既にスクリプトがありますが、推奨スクリプトをどこに貼り付ける必要がありますか?
  2. 推奨される手順は正しいですか?
26
Gaurav Agarwal

/etc/init.d/Tomcat7に以下の内容のinitスクリプトを作成します(スクリプトも機能するはずですが、このスクリプトは標準により厳密に準拠していると思います)。

この方法では、ネットワークインターフェイスが設定された後にのみTomcatが起動します。

初期スクリプトの内容:

#!/bin/bash

### BEGIN INIT INFO
# Provides:        Tomcat7
# Required-Start:  $network
# Required-Stop:   $network
# Default-Start:   2 3 4 5
# Default-Stop:    0 1 6
# Short-Description: Start/Stop Tomcat server
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

start() {
 sh /usr/share/Tomcat7/bin/startup.sh
}

stop() {
 sh /usr/share/Tomcat7/bin/shutdown.sh
}

case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Run as $0 <start|stop|restart>"; exit 1;;
esac

権限を変更し、正しいシンボリックリンクを自動的に追加します:

chmod 755 /etc/init.d/Tomcat7
update-rc.d Tomcat7 defaults

そして、これから適切なランレベルに入ると自動的に開始され、シャットダウンされます。 service Tomcat7 <stop|start|restart>で制御することもできます

49
Marcin Kaminski

これを/etc/rc.localに追加することはできません

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sleep 10
/usr/share/Tomcat7/bin/startup.sh
3
penner
#!/bin/bash
#
# Author : subz
# Copyright (c) 2k15
#
# Make kill the Tomcat process
#
Tomcat_HOME=/media/subin/works/Applications/Apache-Tomcat-7.0.57
SHUTDOWN_WAIT=5

Tomcat_pid() {
  echo `ps aux | grep org.Apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
}

start() {
  pid=$(Tomcat_pid)
  if [ -n "$pid" ] 
  then
    echo "Tomcat is already running (pid: $pid)"
  else
    # Start Tomcat
    echo "Starting Tomcat"
    /bin/sh $Tomcat_HOME/bin/startup.sh
  fi


  return 0
}

stop() {
  pid=$(Tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Stoping Tomcat"
    /bin/sh $Tomcat_HOME/bin/shutdown.sh

    let kwait=$SHUTDOWN_WAIT
    count=0;
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
    do
      echo -n -e "\nwaiting for processes to exit";
      sleep 1
      let count=$count+1;
    done

    if [ $count -gt $kwait ]; then
      echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
      kill -9 $pid
      echo  " \nprocess killed manually"
    fi
  else
    echo "Tomcat is not running"
  fi

  return 0
}
pid=$(Tomcat_pid)

 if [ -n "$pid" ]
  then
    echo "Tomcat is running with pid: $pid"
    stop
  else
    echo "Tomcat is not running"
    start
  fi
exit 0
3
SUBZ

Digital Oceanは、Tomcat 8.xおよびUbuntu 16.04 LTSおよびsystemdスクリプトを使用するための非常に便利なガイドを提供します。

https://www.digitalocean.com/community/tutorials/how-to-install-Apache-Tomcat-8-on-ubuntu-16-04

2
rjha94

Apache Tomcatは、initスクリプトを同梱していません。

  1. このバージョンには独自のinitスクリプトが付属しているUbuntuパッケージマネージャーから、Ubuntuが管理する事前パッケージバージョンをインストールします。

  2. 参照したブログの手順に従って、キックスタートinitスクリプトを提供します。

0
Yassine Elassad