Wie starte ich Tomcat7 beim Neustart des Systems automatisch neu?

26

Ich habe Tomcat 7 auf Ubuntu 12.04 LTS installiert, das auf einer Amzon EC2-Instanz ausgeführt wird. Jetzt wünsche ich mir, dass Tomcat beim Neustart des Systems automatisch neu startet.

Ich habe diesen Blog gelesen, in dem vorgeschlagen wird, folgendes Skript hinzuzufügen /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

und geben Sie die folgenden Befehle ein:

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

Meine Fragen

  1. Der Tomcat7 enthält bereits ein Skript. Wo müssen wir das vorgeschlagene Skript einfügen?
  2. Ist die vorgeschlagene Vorgehensweise korrekt?
Gaurav Agarwal
quelle

Antworten:

51

Erstellen Sie das Init-Skript in /etc/init.d/tomcat7 mit den folgenden Inhalten (Ihr Skript sollte auch funktionieren, aber ich denke, dass dieses den Standards genauer entspricht).

Auf diese Weise wird Tomcat erst gestartet, nachdem die Netzwerkschnittstellen konfiguriert wurden.

Inhalt des Init-Skripts:

#!/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

Ändern Sie die Berechtigungen und fügen Sie die richtigen Symlinks automatisch hinzu:

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

Und von nun an wird es automatisch gestartet und heruntergefahren, wenn die entsprechenden Runlevel eingegeben werden. Sie können es auch mit steuernservice tomcat7 <stop|start|restart>

Marcin Kaminski
quelle
1
Vielen Dank. Ich bin neu in Ubuntu. Was bedeutet es, wenn Sie sagen, dass Tomcat erst gestartet wird, nachdem die Netzwerkschnittstellen konfiguriert wurden? Was bedeutet "Netzwerkschnittstelle"? Was bedeutet "bei Eingabe des entsprechenden Runlevels"? und die datei tomcat7 enthält bereits eine menge skripte, wo ich das von ihnen vorgeschlagene skripte einfügen soll.
Gaurav Agarwal
Die Init-Skripte unter /etc/init.d können voneinander abhängig sein. In diesem Fall wird das tomcat7-Skript erst ausgeführt, wenn die Netzwerkskripte ausgeführt wurden. Könnten Sie die Begriffe "Runlevel" und "Netzwerkschnittstelle" bei Google nachschlagen? Ich helfe gerne bei anderen Dingen, aber nicht so sehr beim Googeln von Kleinigkeiten für andere. Und zur anderen Frage: Mein Skript soll /etc/init.d/tomcat7 ersetzen.
Marcin Kaminski
Das /etc/init.d/tomcat7in meinem System ähnelt der Datei hier gist.github.com/942150 . Sollte ich den gesamten Inhalt aus der Datei entfernen und Ihr Skript einfügen oder es an einer Stelle in das bereits geschriebene Skript einfügen?
Gaurav Agarwal
Ich habe das Skript, auf das Sie gerade verwiesen haben, nicht gesehen. Es sieht vernünftig aus und es sieht so aus, als ob es die mit Tomcat gelieferten Start / Herunterfahr-Skripte ersetzt. Meine Version verwendet sie lediglich. Haben Sie diese Skripte getestet und bestätigt, dass sie funktionieren? Wenn ja, können Sie mein Skript verwenden. Verwenden Sie, was Sie möchten. Wichtig ist, dass Sie verstehen, was das Skript beim Einfügen tut.
Marcin Kaminski
1
Ich bezweifle, dass das obige Shell-Skript jemals einen solchen Fehler verursachen könnte. Bitte führen Sie zuerst eine Fehlerbehebung durch.
Marcin Kaminski
3
#!/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
SUBZ
quelle
oben Shell für tomacat Skript Prüfung ausgeführt wird oder nicht , wenn sein Betrieb den Prozess tötet .wenn Kater nicht wieder dieses Skript hinzufügen, um Start - up - Skript startet läuft
Subz
3

Kann dies nicht zu der Liste hinzugefügt werden? /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
Penner
quelle
4
Zumindest die Person, die dich herabgestimmt hat, sollte erklären warum. Wir alle wissen nicht alles über Linux, und es wäre schön zu erfahren, warum Sie dies nicht tun sollten.
Edenshaw
0

apache tomcat liefert kein init-script mit.

  1. Installieren Sie die von Ubuntu gepflegte vorgefertigte Version aus dem Ubuntu-Paket-Manager. Diese Version wird mit einem eigenen Init-Skript ausgeliefert.

  2. Befolgen Sie die Schritte in dem Blog, auf das Sie verwiesen haben und in dem Sie ein Kickstart-Init-Skript erhalten.

Yassine Elassad
quelle