PlayFrameworkをSupervisorを使いながらデプロイする
普段は肉と魚が好きですが、ピオーネ食べてる時だけはベジタリアンになっても良い気持ちになります。
今回は掲題の通り、PlayFrameworkのデプロイをSupervisorを使いつつやった手順を残します。
本当はFabricも使いたかったです。環境はCentOS6.4 + Play2.3です。
以下を参考にしました。
SupervisorによるPlayframeworkアプリのデーモン化 - /var/log/laughingman7743.log
スーパーサーバーSupervisorの導入手順メモ - Glide Note
Supervisorのインストール
CentOS6.4で普通にyumで入れると古いSupervisordが入ってしまうので、pipで入れます。
yum install python-setuptools sudo easy_install pip sudo pip install supervisor
設定ファイルの吐き出し
設定ファイルの中身は適当に変えてください。
sudo echo_supervisord_conf > /etc/supervisord.conf
Upstart経由でSupervisorを起動
以下のファイルを/etc/init/supervisord.confに配置し
description "supervisord" start on runlevel [2345] stop on runlevel [!2345] respawn exec /usr/bin/supervisord -n
起動とログ確認
sudo initctl start supervisord supervisorctl maintail #ログ確認
Playアプリ用設定ファイルを準備
ポート、アプリ名、ログ吐き出し場所は好みで変えてください。
[program:yourapp] process_name=%(program_name)s directory=/path/to/yourapp command=/bin/bash -c "ulimit -n 10240; exec bin/yourapp -Dhttp.port=9000 -Dconfig.file=/path/to/yourapp/conf/application.prod.conf -Dpidfile.path=/dev/null" autostart=true autorestart=true user=your_user redirect_stderr=true stdout_logfile=/var/log/yourapp/%(program_name)s.log stdout_logfile_maxbytes=10MB stdout_logfile_backups=10
Playのデプロイ
distで作成したzipをサーバーにアップし、解凍してシンボリックリンクを更新します。
ここはFabricとかで自動化した方が良いです。
#ローカルでのコマンド activator dist #yourapp-SNAPSHOT.zipを作成 scp yourapp-SNAPSHOT.zip user@yourserver:/var/tmp/ #APサーバーにzipファイルを送信 #ここからAPサーバーでのコマンド unzip /var/tmp/yourapp-SNAPSHOT.zip mv yourapp-SNAPSHOT /path/to/yourapp-new ln -nfs /path/to/yourapp-new /path/to/yourapp #シンボリックリンクを更新 supervisorctl restart yourapp #プロセス再起動
以上です。ダンジョン飯は2巻ぐらいで終わりそうだと思ってたんですが、意外と長続きしそうで嬉しいです。