PyramidをGunicornで動かした
簡単なアプリならPyramidで書けそうな感じにはなったので、次はDeploy周りについて調べてみた。
pipでインストールできるし定番っぽいところでGunicornの上で動かしたので手順をメモっておく。
インストール
新しいvirtualenv作ってそこにインストールしていく。
$ mkvirtualenv --distribute --no-site-packages --python=python2.7 gunicorn $ pip install pyramid gunicorn
Pyramidアプリケーション生成
適当なディレクトリにscaffoldからpyramidアプリを作る。
$ mkdir dev $ cd dev $ paster create -t pyramid_starter sample $ cd sample $ python setup.py develop
起動
あとはgunicorn_pasterでiniファイルを指定するだけ!簡単!
$ gunicorn_paster develop.ini 2011-07-08 00:46:14 [27106] [INFO] Starting gunicorn 0.13.4 2011-07-08 00:46:14,397 INFO [gunicorn.error][MainThread] Starting gunicorn 0.13.4 2011-07-08 00:46:14 [27106] [INFO] Listening at: http://0.0.0.0:6543 (27106) 2011-07-08 00:46:14,399 INFO [gunicorn.error][MainThread] Listening at: http://0.0.0.0:6543 (27106) 2011-07-08 00:46:14 [27106] [INFO] Using worker: sync 2011-07-08 00:46:14,401 INFO [gunicorn.error][MainThread] Using worker: sync 2011-07-08 00:46:14 [27109] [INFO] Booting worker with pid: 27109 2011-07-08 00:46:14,409 INFO [gunicorn.error][MainThread] Booting worker with pid: 27109
Googleで検索してもGunicorn + Pyramidについて情報が全然なかったんだけど、こんな簡単だからわざわざ書く人がいなかったのかな…。
おまけ gunicorn-console
gunicornはプロセスの管理をシグナルで行うそうだけど、コマンドから直接シグナル送るのはなんだかなあと思って管理ツール的な物を探してみた。で、こんなものを見つけた。
cursesを使ったCUIアプリケーションで、以下のようなことが出来るらしい。
- ステータス確認
- master毎のpid, port, prosess name, memory, worker数
- プロセス操作
- masterのリロード
- workerの追加
- master, workerのkill
ちなみに、前述の起動コマンドで立ち上げてからgunicorn-consoleでステータスを確認してみたところ、process nameにはiniファイルのフルパスが表示されてしまっていた。
以下のように--nameオプション付きで起動すると、任意の名前を表示させることが出来る。
$ gunicorn_paster --name=pyramid_sample develop.ini
こうなった。
psコマンドにも反映される。
PID TTY STAT TIME COMMAND 27325 pts/6 S+ 0:00 gunicorn: master [pyramid_sample] 27328 pts/6 S+ 0:00 gunicorn: worker [pyramid_sample]
ちなみこのプロセスに名前を付ける機能はsetproctitleというパッケージを入れることで使える。pipでgunicorn-consoleインストールすれば一緒に入るはず。
こんな感じだが、機能が豊富なわけでもないしscreen上で起動すると表示が点滅というかチカチカして非常に見づらかったので多分使わない。
本気で運用する気になったら管理コマンドでも作ろうかな。やっぱりこういう時はFabric使うのがいいのかね?
参考URL
http://w.koshigoe.jp/study/?ruby-unicorn-intro
オリジナルのunicornについてのまとめだけど、概要を掴むには良い資料だと思った。