Mojolicious(PSGI)アプリをStarmanでデプロイする
StarmanというPerlのプリフォークサーバを使って、Mojoliciousアプリケーションを起動してみます。Starman本番環境でMojoliciousアプリケーションを運用するのに良い選択肢です。
cpanm Starman
以下はMojolicious::Liteで記述したPSGIアプリ(hello.pl)です。注意点として「app->start」と「__DATA__」の間にはコメント以外は置いてはいけません。
use strict; use warnings; use Mojolicious::Lite; get '/' => 'index'; app->start; __DATA__ @@ index.html.ep <html><body>Hello!</body></html>
starmanを起動します。
starman hello.pl
これで以下にアクセスするとMojoliciousアプリが起動していることが確認できます。
http://localhost:5000/
ポートを指定するには「--port」オプションを使用します。
starman --port=3000 hello.pl
本番運用
本番運用する場合はバックグラウンドで実行をして、サーバ起動と同時にアプリケーションを実行したいと思うことでしょう。そのような場合は次のようにします。rootユーザーで実行してください。
# サーバーの開始 su - kimoto -c 'starman --port=3000 --daemonize --pid=/home/kimoto/labo/pid /home/kimoto/labo/app1.pl'
suの-cコマンドを使うことで、ユーザーを変更して実行しています。通所はhello.plの所有者で実行すればよいでしょう。--daemonizeオプションで、サーバーをデーモン化できます。--pidオプションで、サーバーのプロセスIDを書き込むファイルを指定します。これはサーバーを停止させるときに必要な情報になります。
サーバーを停止させるにはkillコマンドにプロセスIDを渡します。xargと組み合わせると、ファイルに書かれたプロセスIDをkillに渡すことができます。
# サーバーの停止 cat /home/kimoto/labo/pid | xargs kill
Linuxの起動時にMojoliciousアプリケーションを起動したい場合は以下のファイルにサーバーの起動の記述を追加してください。
/etc/rc.d/rc.local