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 でアクセスされても表示されないみたい。
参考エントリー
Filed under: CentOS6.x,perl
Trackback Uri
最近のコメント