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

関連情報