시스템 재부팅시 Tomcat7을 자동으로 다시 시작하는 방법은 무엇입니까?


26

Amzon EC2 인스턴스에서 실행되는 Ubuntu 12.04 LTS에 Tomcat 7을 설치했습니다. 이제 시스템 재부팅시 tomcat이 자동으로 다시 시작되고 싶습니다.

아래 블로그 를 추가하는 것이 좋습니다이 블로그 를 읽었습니다 /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

다음 명령을 발행하십시오.

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

내 질문

  1. tomcat7는 이미 우리가 제안 스크립트를 붙여해야합니까 거기에 스크립트를 가지고?
  2. 제안 된 절차가 맞습니까?

답변:


51

아래 내용에 따라 /etc/init.d/tomcat7에 init 스크립트를 작성하십시오 (스크립트도 작동해야하지만이 스크립트는 표준에 더 가깝습니다).

이런 식으로 Tomcat은 네트워크 인터페이스가 구성된 후에 만 ​​시작됩니다.

초기화 스크립트 내용 :

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

권한을 변경하고 올바른 심볼릭 링크를 자동으로 추가하십시오.

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

그리고 이제부터는 적절한 런레벨에 들어가면 자동으로 시작되고 종료됩니다. 당신은 또한 그것을 제어 할 수 있습니다service tomcat7 <stop|start|restart>


1
감사. 우분투를 처음 사용합니다. "네트워크 인터페이스가 구성된 후에 만 ​​Tomcat이 시작됩니다."라고 말할 때의 의미는 무엇입니까? "네트워크 인터페이스"의 의미는 무엇입니까? "적절한 실행 수준에 진입 할 때"의 의미는 무엇입니까? tomcat7 파일에는 이미 많은 스크립트가 포함되어 있습니다.
Gaurav Agarwal

/etc/init.d 아래의 init 스크립트는 다음과 같이 서로 종속 될 수 있습니다. 네트워크 스크립트를 실행하기 전에 tomcat7 스크립트가 실행되지 않습니다. Google에서 '실행 수준'및 '네트워크 인터페이스'용어를 찾을 수 있습니까? 나는 다른 것들에 대해 기뻐하지만 다른 사람들을위한 인터넷 검색 사소한 것들에는별로 도움이되지 않습니다. 그리고 다른 질문에 대해 : 내 스크립트는 /etc/init.d/tomcat7을 대체하기위한 것입니다.
Marcin Kaminski

/etc/init.d/tomcat7내 시스템은 여기에 파일과 유사 gist.github.com/942150 . 파일에서 모든 내용을 제거하고 스크립트를 붙여 넣거나 이미 작성된 스크립트의 특정 위치에 붙여 넣습니다.
Gaurav Agarwal

방금 참조한 스크립트를 보지 못했습니다. 제정신처럼 보이고 Tomcat과 함께 제공되는 시작 / 종료 스크립트를 대체하는 것처럼 보입니다. 내 버전은 단지 그것들을 사용하고 있습니다. 해당 스크립트를 테스트하고 작동하는지 확인 했습니까? 그렇다면 계속해서 내 스크립트를 사용할 수 있습니다. 원하는 것을 사용하면 중요한 것은 스크립트를 붙여 넣을 때 수행하는 작업을 이해하는 것입니다.
Marcin Kaminski

1
위의 쉘 스크립트가 그러한 오류를 일으킬 수 있을지 의심 됩니다. 먼저 문제 해결을 수행하십시오.
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

그것의 실행이 시작 스크립트로이 스크립트를 추가 다시 시작됩니다 실행되고 있지 바람둥이 .if 프로세스를 종료하는 경우 tomacat에 대한 쉘 스크립트 검사가 실행되지 않았거나 위
SUBZ

3

여기에 추가 될 수 없습니다. /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

4
최소한 당신을 억압 한 사람은 이유를 설명해야합니다. 우리는 모두 리눅스에 대해 잘 모릅니다. 왜 그렇게하지 말아야하는지 배우는 것이 좋을 것입니다.
Edenshaw


0

apache tomcat은 init 스크립트를 제공하지 않습니다.

  1. Ubuntu 패키지 관리자에서 Ubuntu가 유지 관리하는 사전 패키지 버전을 설치하십시오.이 버전은 자체 init 스크립트를 제공합니다.

  2. 킥 스타트 초기화 스크립트를 제공하는 블로그의 단계를 따르십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.