[AWS Playframework]AmazonLinux上でSupervisorを起動してPlayframeworkアプリをデーモン化する

自作アプリをデーモン化したいときいつもrcスクリプト書いてたんだけど、
さすがにこれだけ需要あって、ツールないわけないでしょう、と今更思い立って
探してみました。

結果的に、自分が検索した範囲だと

  • commons-daemon(javaアプリをデーモン化するライブラリ)
  • supervisord(python製のユーザプログラムをデーモン化してくれるデーモン)

の2種類がよく出てきて、java製アプリ以外でも
対応できそうなsupervisordのほうを採用しました。

手順

以下にインストール後に行った手順を残しておきます。
OSはAmazonLinux(amzn-ami-hvm-2016.09.0.20161028-x86_64-gp2 (ami-0c11b26d))
です。

インストールしたあとは、設定ファイルと追加読み込み設定ファイル用ディレクトリを
作成してあげます。

その後、設定ファイルを編集します。

ここまでやると

で起動できます。ただ、起動時に勝手に立ち上がってほしいので
chkconfigに登録します。

これでOK

Play frameworkアプリケーションをデーモン化してみる

Play frameworkでのアプリケーションはactivator distですが、
それで作成されたzipファイルを展開して、デーモン化してみます。

ディレクトリ構造はこんな感じになってます。
このディレクトリ構造に倣って、supervisordの設定ファイルを書いてゆきます。
(/etc/supervisord.d/play_app.iniとして配置します。)

こんな感じ。
プロセスはSupervisorに管理してもらうので、PIDファイルは/dev/nullに捨ててしまいます。
必要あれば設定ファイルやポートを渡してあげます。

これで$ sudo /etc/init.d/supervisord restart すればplay_appが起動します。

課題

  • supervisorctl全然使ってないし、わかってない
  • 実はchefレシピを書いたんだけど、AWSでしか動かない
    • pip installで入れたsupervisorのパスがディストリごとで違う
    • 公式のsupervisorレシピで解決できるならこっちでいいかも

この辺はもし機会があれば。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です