Bagaimana cara me-restart Tomcat7 secara otomatis pada reboot sistem?

26

Saya telah menginstal Tomcat 7 pada Ubuntu 12.04 LTS yang berjalan pada instance Amzon EC2. Sekarang saya berharap kucing jantan harus memulai ulang secara otomatis pada sistem reboot.

Saya membaca blog ini yang menyarankan untuk menambahkan skrip di bawah ini ke /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

dan berikan perintah berikut:

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

Pertanyaan saya

  1. The tomcat7 sudah memiliki naskah di dalamnya, di mana kita harus paste script disarankan?
  2. Apakah prosedur yang disarankan benar?
Gaurav Agarwal
sumber

Jawaban:

51

Buat skrip init di /etc/init.d/tomcat7 dengan konten seperti di bawah ini (skrip Anda harusnya berfungsi juga, tapi saya rasa yang ini lebih sesuai dengan standar).

Dengan cara ini Tomcat akan mulai hanya setelah antarmuka jaringan telah dikonfigurasi.

Isi skrip init:

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

Ubah izinnya dan tambahkan symlink yang benar secara otomatis:

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

Dan mulai sekarang akan secara otomatis dimulai dan ditutup setelah memasuki runlevel yang sesuai. Anda juga dapat mengontrolnya denganservice tomcat7 <stop|start|restart>

Marcin Kaminski
sumber
1
Terima kasih. Saya baru di Ubuntu. Apa artinya ketika Anda mengatakan "Anda Tomcat akan mulai hanya setelah antarmuka jaringan telah dikonfigurasi." Apa arti dari "antarmuka jaringan?" Apa arti dari "saat memasuki run level yang sesuai"? dan file tomcat7 sudah memiliki banyak skrip di dalamnya di mana saya harus menambahkan skrip yang disarankan oleh Anda.
Gaurav Agarwal
Skrip init di bawah /etc/init.d dapat saling bergantung satu sama lain, seperti dalam kasus ini: skrip tomcat7 tidak akan dijalankan sebelum skrip jaringan dijalankan. Bisakah Anda mencari istilah 'runlevels' dan 'antarmuka jaringan' di google? Saya senang membantu hal-hal lain tetapi tidak terlalu banyak dengan hal-hal sepele Googling untuk orang lain. Dan tentang pertanyaan lain: skrip saya dimaksudkan untuk mengganti /etc/init.d/tomcat7.
Marcin Kaminski
Di /etc/init.d/tomcat7sistem saya mirip dengan file di sini gist.github.com/942150 . Haruskah saya menghapus semua konten dari file dan tempel skrip Anda atau tempel di suatu tempat di skrip yang sudah ditulis.
Gaurav Agarwal
Saya belum melihat skrip yang baru saja Anda rujuk. Itu terlihat waras dan sepertinya itu menggantikan skrip startup / shutdown yang datang dengan Tomcat. Versi saya hanya menggunakannya. Sudahkah Anda menguji skrip tersebut dan mengonfirmasi bahwa skrip tersebut berfungsi? Jika demikian, Anda dapat melanjutkan dan menggunakan skrip saya. Gunakan mana pun yang Anda suka, yang penting adalah memahami apa yang dilakukan skrip saat Anda menempelkannya.
Marcin Kaminski
1
Saya ragu skrip shell di atas dapat menyebabkan kesalahan seperti itu. Silakan lakukan beberapa pemecahan masalah terlebih dahulu.
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
sumber
di atas shell script memeriksa tomacat sedang berjalan atau tidak, jika menjalankannya mematikan proses. jika tomcat tidak berjalan itu akan mulai lagi, tambahkan skrip ini sebagai skrip start up
SUBZ
3

Tidak bisakah ini ditambahkan ke /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
sumber
4
Setidaknya orang yang menurunkan Anda, harus menjelaskan alasannya. Kita semua tidak tahu semua tentang Linux, dan alangkah baiknya untuk mengetahui mengapa Anda tidak harus melakukan ini.
Edenshaw
0

apache tomcat tidak mengirimkan skrip init apa pun dengannya.

  1. Instal versi prepackaged yang dikelola oleh Ubuntu dari manajer paket Ubuntu versi ini mengirimkan skrip initnya sendiri.

  2. Ikuti langkah-langkah di blog yang Anda referensikan yang memberi Anda skrip init kickstart.

Yassine Elassad
sumber