Comment redémarrer automatiquement Tomcat7 lors des redémarrages du système?

26

J'ai installé Tomcat 7 sur Ubuntu 12.04 LTS qui fonctionne 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 tomcat7 contient déjà un script, où devons-nous coller le script suggéré?
  2. La procédure suggérée est-elle correcte?
Gaurav Agarwal
la source

Réponses:

51

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

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

Contenu du script d'initialisation:

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

Modifiez ses autorisations et ajoutez automatiquement les liens symboliques appropriés:

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

Et à partir de maintenant, il sera automatiquement démarré et arrêté lors de la saisie des niveaux d'exécution appropriés. Vous pouvez également le contrôler avecservice tomcat7 <stop|start|restart>

Marcin Kaminski
la source
1
Merci. Je suis nouveau sur Ubuntu. Quelle est la signification lorsque vous dites "vous Tomcat ne démarrerez qu'après la configuration des interfaces réseau". Quelle est la signification des "interfaces réseau"? Quelle est la signification de "en entrant dans le niveau d'exécution approprié"? et le fichier tomcat7 contient déjà beaucoup de script où dois-je ajouter le script que vous avez suggéré.
Gaurav Agarwal
Les scripts d'initialisation sous /etc/init.d peuvent être dépendants les uns des autres, comme dans ce cas: le script tomcat7 ne sera pas exécuté avant l'exécution des scripts réseau. Pourriez-vous rechercher les termes «niveaux d'exécution» et «interface réseau» sur Google? Je suis heureux d'aider avec d'autres choses, mais pas tellement avec des choses triviales sur Google pour les autres. Et à propos de l'autre question: mon script est destiné à remplacer /etc/init.d/tomcat7.
Marcin Kaminski
Le /etc/init.d/tomcat7dans mon système est similaire au fichier ici gist.github.com/942150 . Dois-je supprimer tout le contenu du fichier et coller votre script ou le coller à un endroit dans le script déjà écrit.
Gaurav Agarwal
Je n'ai pas vu le script que vous venez de référencer. Il semble sain d'esprit et il semble qu'il remplace les scripts de démarrage / arrêt fournis avec Tomcat. Ma version les utilise simplement. Avez-vous testé ces scripts et confirmé qu'ils fonctionnent? Si oui, vous pouvez continuer et utiliser mon script. Utilisez ce que vous voulez, l'important est de comprendre ce que fait le script lorsque vous le collez.
Marcin Kaminski
1
Je doute que le script shell ci-dessus puisse jamais provoquer une telle erreur. Veuillez d'abord procéder au dépannage.
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
la source
ci-dessus, le script shell vérifie que tomacat est en cours d'exécution ou non si son exécution tue le processus .si tomcat n'est pas en cours d'exécution, il recommencera ajouter ce script en tant que script de démarrage
SUBZ
3

Je ne peux pas ajouter cela 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
penner
la source
4
Au moins la personne qui vous a déçu devrait expliquer pourquoi. Nous ne savons pas tout sur Linux, et ce serait bien de savoir pourquoi vous ne devriez pas faire cela.
Edenshaw
0

apache tomcat ne fournit aucun script d'initialisation avec.

  1. Installez la version préemballée maintenue par Ubuntu à partir du gestionnaire de paquets Ubuntu. Cette version contient son propre script d'initialisation.

  2. Suivez les étapes du blog auquel vous avez fait référence et qui vous fournissent un script de démarrage kickstart.

Yassine Elassad
la source