¿Cómo reiniciar automáticamente Tomcat7 en los reinicios del sistema?

26

He instalado Tomcat 7 en Ubuntu 12.04 LTS que se ejecuta en una instancia Amzon EC2. Ahora deseo que Tomcat se reinicie automáticamente al reiniciar el sistema.

Leí este blog que sugiere agregar el siguiente script para /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

y emita los siguientes comandos:

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

Mis preguntas

  1. El tomcat7 ya tiene un script, ¿dónde tenemos que pegar el script sugerido?
  2. ¿Es correcto el procedimiento sugerido?
Gaurav Agarwal
fuente

Respuestas:

51

Cree el script de inicio en /etc/init.d/tomcat7 con los contenidos que se detallan a continuación (su script también debería funcionar, pero creo que este se adhiere más a los estándares).

De esta manera, Tomcat se iniciará solo después de que se hayan configurado las interfaces de red.

Contenido del guión de inicio:

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

Cambia sus permisos y agrega los enlaces simbólicos correctos automáticamente:

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

Y a partir de ahora, se iniciará automáticamente y se apagará al ingresar los niveles de ejecución adecuados. También puedes controlarlo conservice tomcat7 <stop|start|restart>

Marcin Kaminski
fuente
1
Gracias. Soy nuevo en Ubuntu. ¿Cuál es el significado cuando dice "usted Tomcat se iniciará solo después de que se hayan configurado las interfaces de red"? ¿Cuál es el significado de "interfaces de red"? ¿Cuál es el significado de "al ingresar al nivel de ejecución apropiado"? y el archivo tomcat7 ya tiene muchos guiones, ¿dónde debo agregar el guión sugerido por usted?
Gaurav Agarwal
Los scripts de inicio en /etc/init.d pueden depender unos de otros, como en este caso: el script tomcat7 no se ejecutará antes de que se ejecuten los scripts de red. ¿Podría buscar términos de 'niveles de ejecución' e 'interfaz de red' en Google? Estoy feliz de ayudar con otras cosas, pero no tanto con buscar cosas triviales en Google para otros. Y sobre la otra pregunta: mi script está destinado a reemplazar /etc/init.d/tomcat7.
Marcin Kaminski
El /etc/init.d/tomcat7en mi sistema es similar al archivo aquí gist.github.com/942150 . ¿Debo eliminar todo el contenido del archivo y pegar su script o pegarlo en algún lugar del script ya escrito?
Gaurav Agarwal
No he visto el guión que acabas de hacer referencia. Parece cuerdo y parece que reemplaza los scripts de inicio / apagado que vienen con Tomcat. Mi versión es simplemente usarlos. ¿Has probado esos scripts y confirmas que funcionan? Si es así, puedes seguir adelante y usar mi script. Use lo que quiera, lo importante es comprender qué hace el script cuando lo pega.
Marcin Kaminski
1
Dudo que el script de shell anterior pueda causar ese error. Primero solucione algunos problemas.
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
fuente
por encima de verificación script de shell para tomacat está funcionando o no, si su funcionamiento matar el proceso Tomcat .Si no se está ejecutando, se iniciará de nuevo agregar este script como un script de arranque
Subz
3

No se puede agregar esto a la /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
fuente
44
Al menos la persona que lo rechazó, debería explicar por qué. Todos no sabemos todo acerca de Linux, y sería bueno saber por qué no debe hacer esto.
Edenshaw
0

apache tomcat no incluye ningún script de inicio.

  1. Instale la versión preempaquetada mantenida por Ubuntu desde el administrador de paquetes de Ubuntu, esta versión incluye su propio script de inicio.

  2. Siga los pasos en el blog al que se refirió que le proporcionan un script de inicio kickstart.

Yassine Elassad
fuente