Ubuntu Oneiric の /etc/uwsgi/{apps-available,apps-enabled}

前回upstart を使って uwsgi を起動したけど、パッケージの仕組みに沿った方法を使ってみる。

Debian 系の基本通り、 /etc/uwsgi/apps-available/ に設定をファイルを置いて /etc/uwsgi/apps-enabled/ からシンボリックリンクする。

/etc/uwsgi/apps-available の設定は --inherit /usr/lib/uwsgi/conf/default.ini オプション付きで実行されるので、デフォルトの内容も確認しておく(継承するデフォルト設定ファイルのパスは /etc/default/uwsgi 内で設定されている) *1

$ dpkg -l uwsgi
...
ii  uwsgi              0.9.8.1-1          fast, self-healing application container server
$ uwsgi --version
uWSGI 0.9.8.1-debian
$ sudo -s
# cat /usr/lib/uwsgi/conf/default.ini  # 出力結果からコメント削除済み
[uwsgi]
autoload = true
master = true
workers = 2
no-orphans = true
pidfile = /run/uwsgi/%n/pid
socket = /run/uwsgi/%n/socket
chmod-socket = 660
log-date = true
uid = www-data
gid = www-data

pidfile と socket の %n プレースホルダには、設定ファイル名から拡張子を除いた文字列が入る。以下のように hello.ini を作ると /run/uwsgi/hello/socket というソケットが作られることになる。

# vi /etc/uwsgi/apps-available/hello.ini

デフォルトを意識して最低限の設定だけ。

[uwsgi]
plugins = python
logto = /var/log/uwsgi/hello.log
mount = /hello=/home/cu39/code/python/hello.py

リンク作成、起動、確認。

# ln -sv /etc/uwsgi/apps-available/hello.ini /etc/uwsgi/apps-enabled/
`/etc/uwsgi/apps-enabled/hello.ini' -> `/etc/uwsgi/apps-available/hello.ini'
# /etc/init.d/uwsgi start hello
 * Starting app server(s) uwsgi        [ OK ]
# ls -F /run/uwsgi/hello
pid  socket=
# ps -Af | grep uwsgi
www-data  6779     1  0 Jan18 ?        00:00:03 /usr/bin/uwsgi --ini /etc/uwsgi/apps-enabled/hello.ini --daemonize /var/log/uwsgi/hello.log --inherit /usr/lib/uwsgi/conf/default.ini
www-data  6787  6779  0 Jan18 ?        00:00:00 /usr/bin/uwsgi --ini /etc/uwsgi/apps-enabled/hello.ini --daemonize /var/log/uwsgi/hello.log --inherit /usr/lib/uwsgi/conf/default.ini
www-data  6788  6779  0 Jan18 ?        00:00:00 /usr/bin/uwsgi --ini /etc/uwsgi/apps-enabled/hello.ini --daemonize /var/log/uwsgi/hello.log --inherit /usr/lib/uwsgi/conf/default.ini

*1:このあたりの詳しい挙動は /etc/init.d/uwsgi や /usr/lib/uwsgi/init/do_command あたりを参照。