Engineer in Tokyo

daemontoolsを使ってdjango fastcgiのデーモンを設定する

daemontoolsの上にDjango fastcgiを使うのは簡単にできるけど、正しいユーザとして、フォアグラウンドに起動するにはbashdaemontoolsの設定する必要がある。

フォアグラウンドに起動するには、daemonize=falseを指定する必要がある。

それで、起動するデイモンはユーザを指定するオプションがないとrootユーザとして、起動する。runfcgiはそういうオプションがないので、daemontoolssetuidgidツールを使う。

setuidgidのコマンドになるので、プロセスの標準パイプを正しく接続するには、bashexecコマンドを使う。

/service/myapp/run

#!/bin/bash

BASEDIR="/home/www/"
PIDFILE="$BASEDIR/app.pid"

exec setuidgid www python /home/www/django-prj/manage.py runfcgi \
    --settings=settings_production method=threaded  port=8001 \
    pidfile=$PIDFILE daemonize=false 2>&1