Mojoliciousアプリを UpStart + Sarver::Starter + Starlet で運用してみる
Server::Starter + Starlet
以前はdaemontools+Starmanで起動していたのだけれど、
最近のPlack/Starletのパフォーマンス改善まとめ。最大2倍の性能向上を読んでたらStarletが使ってみたくなったのでServer::Starter+Starletを試してみることに。
コマンドラインから起動してみる。
start_server --port=3000 -- plackup -s Starlet --max-workers=5 my app.pl start_server (pid:31803) starting now... starting new worker 31804 Plack::Handler::Starlet: Accepting connections at http://0:3000/
これでポート3000でサーバが待ち受けています。
UpStart
CentOS6に乗り換えたし、折角なのでデーモンの管理はUpStartに乗り換えてみる。CentOS6は標準でインストールされている(というかSysVinitが置き換わった?)なので以下のコマンドが最初から使えるみたい。daemontoolsとかsupervisorとか要らなくなりそう。
- start SEVICE_NAME
- stop SEVICE_NAME
- reload SEVICE_NAME
- restart SEVICE_NAME
perlの起動方法がよく分からなかったけどStack Overflowでそれっぽい記事を発見したので参考に書いてみた。
vi /etc/init/MyApp.conf description "MyApp" author "clicktx<clicktx@mail.tld>" start on runlevel [2345] stop on runlevel [016] chdir /home/clicktx/MyApp/Web script export PATH="/home/clicktx/perl5/perlbrew/bin:/home/clicktx/perl5/perlbrew/perls/perl-5.16/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/clicktx/bin:${PATH}" exec su -c "start_server --pid-file=/tmp/myapp.pid --status-file=/tmp/myapp.status --port=3000 -- plackup -s Starlet --max-workers=5 myapp.pl" clicktx end script respawn
※ exportするPATHは各自 echo $PATHで確認
サービスの起動
$ sudo start MyApp MyApp start/running, process 32114
start は initctl start というコマンドのエイリアスのようだ。全てのジョブリストの確認は
$ sudo initctl list
とかで出来る。
余談
start_serverで起動するMojoliciousアプリケーションは他のperlスクリプトから再起動を受け付けたいので、--pid-fileと --status-file オプションを付けている(start_server --restartの場合は必須なので)
他のスクリクトから、
#!/usr/bin/env perl system "start_server --restart --pid-file=/tmp/myapp.pid --status-file=/tmp/myapp.status";
なんて出来る。もちろんコマンドラインでも出来るけど。
あと、
start_server --port=127.0.0.1:3000 -- plackup -s Starlet myapp.pl
なんてしておくと、http://xxxx:3000 でアクセスされても表示されないみたい。
参考エントリー
-
前の記事
CentOS6.4 iptablesの設定 2013.05.19
-
次の記事
[perl][mojolicious][メモ] Mojoliciousのバージョンあげたら動かなくなった。 2013.05.21