Supervisordには、initスクリプトが付属していないか、それを自動的に開始する方法を示していません。再起動後。ユーザー提供の/etc/init.dスクリプトをいくつか試しましたが、すべて失敗します。
何が望ましい解決策でしょうか?
実際、ここで機能するものを見つけました http://Gist.github.com/176149 。それをインストールするには:
Sudo curl https://Gist.github.com/howthebodyworks/176149/raw/88d0d68c4af22a7474ad1d011659ea2d27e35b8d/supervisord.sh > /etc/init.d/supervisord
それを実行する
Sudo chmod +x /etc/init.d/supervisord
自動的にスケジュールするには、
Sudo update-rc.d supervisord defaults
/etc/init.d/supervisordにマップされている/etc/supervisord.confの正しいpidを確認します
example: pidfile=/var/run/supervisord.pid
停止と開始は正しく機能します
service supervisord stop
service supervisord start
Ubuntu 9.10のアップスタートスクリプトを作成しました
たとえば、スーパーバイザを仮想環境にインストールしてから、スーパーバイザを起動して制御します。
テキストファイル/etc/init/supervisord.confを作成します
内容は次のとおりです。
description "supervisord"
start on runlevel [345]
stop on runlevel [!345]
expect fork
respawn
exec /misc/home/bkc/Python_Environments/Java2/supervisord/bin/supervisord -c /misc/home/bkc/Python_Environments/Java2/supervisord/work/supervisord.conf
起動時にスーパーバイザを自動的に起動します。 .confファイルの作成後に手動で開始するには、次を使用します。
須藤スタート監督
サービスを手動で停止するには、次を使用します
須藤ストップ監督
これは私がRHEL 5.4とCentOS 5.5で使用するものです
私のsupervisord.confのいくつかの設定に依存しているかどうかはわかりません。しかし、問題なく動作するようです。
インストール後に次のコマンドを実行する必要があります
chkconfig --add supervisord
[/etc/rc.d/init.d/supervisord]
#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord
# Source init functions
. /etc/rc.d/init.d/functions
prog="supervisord"
prefix="/usr/"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"
start()
{
echo -n $"Starting $prog: "
daemon $prog_bin --pidfile $PIDFILE
[ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
echo
}
stop()
{
echo -n $"Shutting down $prog: "
[ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
;;
restart)
stop
start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
;;
esac
公式のスーパーバイザーGitHubリポジトリにDebian/Ubuntuスクリプトがあります。
https://github.com/Supervisor/initscripts/blob/master/debian-norrgard
これはUbuntu 10.04.3 LTSで私のために働いています。 8.04でも動作するようです。
以下を/etc/init.d/supervisord
に追加します
#! /bin/bash -e
SUPERVISORD=/usr/local/bin/supervisord
PIDFILE=/tmp/supervisord.pid
OPTS="-c /etc/supervisord.conf"
test -x $SUPERVISORD || exit 0
. /lib/lsb/init-functions
export PATH="${PATH:+$PATH:}/usr/local/bin:/usr/sbin:/sbin"
case "$1" in
start)
log_begin_msg "Starting Supervisor daemon manager..."
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
log_end_msg 0
;;
stop)
log_begin_msg "Stopping Supervisor daemon manager..."
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE || log_end_msg 1
log_end_msg 0
;;
restart|reload|force-reload)
log_begin_msg "Restarting Supervisor daemon manager..."
start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PIDFILE
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $SUPERVISORD -- $OPTS || log_end_msg 1
log_end_msg 0
;;
*)
log_success_msg "Usage: /etc/init.d/supervisor
{start|stop|reload|force-reload|restart}"
exit 1
esac
exit 0
次に実行します:
Sudo chmod +x /etc/init.d/supervisord
Sudo update-rc.d supervisord defaults
Sudo service supervisord start
他の答えはどれもうまくいきませんでした。
この行を/etc/init.d/supervisordに追加して、 "stop"引数の処理を修正しました。
do_stop()
{
/usr/local/bin/supervisorctl stop all
/usr/local/bin/supervisorctl shutdown
# Return
...
そして、これは私にとって素晴らしい働きをします。
スーパーバイザはaptリポジトリにあるように見えるため、initファイルを手動で作成する必要はありません。
Sudo apt-get install supervisor
インストール前に、古いファイルを最初にクリーンアップ(およびバックアップ)することをお勧めします。