くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

supervisorでデーモン化する

Djangoのbackground tasksをデーモン化したいなーと思ったので、その際の備忘録。

supervisorとは

インストール

$ sudo yum install supervisor
$ sudo pip install supervisor

yumでインストールするとpython26も一緒にインストールされる。
python27をインストールしていたので、yumだけだと動かなかった。。 なので、pipを使って、supervisorをインストールした。

インストールするとそれぞれ以下の場所にインストールされる

  • 起動用のスクリプト ... /etc/init.d/supervisord
  • コンフィグファイル ... /etc/supervisord.conf
  • コンフィグ用ディレクトリ ... /etc/supervisord.d ※includeするコンフィグの置き場
  • 本体のログファイル ... /var/log/supervisor/supervisord.log

起動・停止

yumでインストールするとserviceコマンドで管理できる

# 起動
$ sudo service supervisord start
# 停止
$ sudo service supervisord stop

設定方法

supervisord.confに以下のようなテンプレートが用意されているので、
適宜コメントインして、設定すればOK。

;[program:theprogramname]
;directory=/tmp              ; (default is not to cd during start)
;command=/bin/cat            ; the program (relative uses PATH, can take args)
;priority=999                ; the relative start priority (default 999)
;autostart=true              ; start at supervisord start (default: true)
;autorestart=true            ; retstart at unexpected quit (default: true)
;startsecs=10                ; number of secs prog must stay running (def. 10)
;startretries=3              ; max # of serial start failures (default 3)
;exitcodes=0,2               ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT             ; signal used to kill process (default TERM)
;stopwaitsecs=10             ; max num secs to wait before SIGKILL (default 10)
;user=chrism                 ; setuid to this UNIX account to run the program
;log_stdout=true             ; if true, log program stdout (default true)
;log_stderr=true             ; if true, log program stderr (def false)
;logfile=/var/log/cat.log    ; child log path, use NONE for none; default AUTO
;logfile_maxbytes=1MB        ; max # logfile bytes b4 rotation (default 50MB)
;logfile_backups=10          ; # of logfile backups (default 10)

例としては以下の感じ

[program:ProcessTasks]
directory=/var/www/cgi-bin/django
command=python manage.py process_tasks
autostart=true
autorestart=true
user=root
logfile=/var/log/process_tasks.log

その他のデーモン化ツール

  1. deamonize tool ... http://cr.yp.to/daemontools.html
  2. systemd

参考にしたサイト様