web-dev-qa-db-fra.com

Comment redémarrer automatiquement Tomcat7 au redémarrage du système?

J'ai installé Tomcat 7 sur Ubuntu 12.04 LTS qui s'exécute sur une instance Amzon EC2. Maintenant, je souhaite que Tomcat redémarre automatiquement au redémarrage du système.

J'ai lu ce blog qui suggère d'ajouter le script ci-dessous à /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

et lancez les commandes suivantes:

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

Mes questions

  1. Le script Tomcat7 contient déjà un script. Où devons-nous coller le script suggéré?
  2. La procédure suggérée est-elle correcte?
26
Gaurav Agarwal

Créez le script init dans /etc/init.d/Tomcat7 avec le contenu décrit ci-dessous (votre script devrait fonctionner aussi, mais je pense que celui-ci adhère plus étroitement aux normes).

De cette façon, Tomcat ne démarrera qu’après la configuration des interfaces réseau.

Contenu du script d'initiation:

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

Change ses permissions et ajoute automatiquement les bons liens symboliques:

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

Et à partir de maintenant, il sera automatiquement démarré et arrêté lorsque vous entrerez dans les niveaux d'exécution appropriés. Vous pouvez également le contrôler avec service Tomcat7 <stop|start|restart>

49
Marcin Kaminski

Est-ce que cela peut être ajouté au /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 fournit un guide très pratique pour utiliser les scripts Tomcat 8.x et Ubuntu 16.04 LTS et systemd.

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

2
rjha94

Apache Tomcat n'envoie aucun script d'initialisation.

  1. Installez la version préemballée gérée par Ubuntu à partir du gestionnaire de paquets Ubuntu. Cette version fournit son propre script init.

  2. Suivez les étapes du blog auquel vous avez fait référence, qui vous fournissent un script kickstart init.

0
Yassine Elassad