Mojoliciousアプリケーションをsystemdへ登録
Mojoliciousアプリケーションをsystemdへ登録しましょう。systemd管理にすると、systemctlコマンドを使って、起動・停止・再起動ができます。また、OSを再起動したときに、Mojoliciousアプリケーションを自動的に再起動させることができます。
systemd設定ファイルで必要な情報
hypnotoadのパスや、ユーザー読み込んでいる環境変数を、systemdの設定ファイルの中でも指定する必要があるので、その部分だけは注意してください。
hypnotoadのパス
hypnotoadのパスを調べます。
which hypnotoad
以下のように表示されました。
~/perl5/perlbrew/perls/perl-5.20.3/bin/hypnotoad
「~」の部分を、ホームディレクトリに変更するので、ホームディレクトリ名を調べます。
# ホームディレクトリ名 env | grep -P '^HOME'
以下のように表示されました。
HOME=/home/myapp
hypnotoadのパスは以下のようになります。
/home/myapp/perl5/perlbrew/perls/perl-5.20.3/bin/hypnotoad
Webアプリケーションのパス
Webアプリケーションのプログラムのパスです。Mojoliciousのひな型を使って作った場合は、以下の場所になります。「Webapp」という名前で作成したと仮定しています。
/home/myapp/webapp/script/webapp
WebアプリケーションのプロセスIDファイル
WebアプリケーションのプロセスIDファイルのパスです。
/home/myapp/webapp/script/hypnotoad.pid
環境変数
今回は「~/.bashrc」の中に以下の環境変数が設定されているとして記事にします。
export MY_SERVER_ENV=my_dev
この環境変数をsystemdの設定ファイルの中で記述する必要があります。
systemdの設定ファイル
systemdの設定ファイルです。以下の名前にします。
sudo vi /lib/systemd/system/webapp.service
viコマンド開いて以下の内容を書き込んでください。
[Unit] Description=My Mojolicious application After=network.target [Service] Type=forking PIDFile=/home/myapp/webapp/script/hypnotoad.pid ExecStart=/home/myapp/perl5/perlbrew/perls/perl-5.20.3/bin/hypnotoad /home/myapp/webapp/script/webapp ExecReload=/home/myapp/perl5/perlbrew/perls/perl-5.20.3/bin/hypnotoad /home/myapp/webapp/script/webapp ExecStop=/home/myapp/perl5/perlbrew/perls/perl-5.20.3/bin/hypnotoad /home/myapp/webapp/script/webapp --stop KillMode=process User=myapp Group=myapp-group Environment=MY_SERVER_ENV=my_dev [Install] WantedBy=multi-user.target
サービスの有効化
サービスを有効化しましょう。
sudo systemctl enable webapp
もしMojoliciousアプリケーションがすでに起動している場合は、停止します。
/home/myapp/perl5/perlbrew/perls/perl-5.20.3/bin/hypnotoad /home/myapp/webapp/script/webapp --stop
Mojoliciousアプリケーションをsystemdの管理下でスタートしましょう。
sudo systemctl start webapp
Mojoliciousアプリケーションが起動しているかどうか確認しましょう。
sudo systemctl status webapp
Mojoliciousアプリケーションが再起動できるか確認しましょう。
sudo systemctl reload webapp
Mojoliciousアプリケーションが停止できるか確認しましょう。
sudo systemctl stop webapp
OSの再起動
OSの再起動を行ってMojoliciousアプリケーションが自動再起動されるか確認しましょう。
sudo reboot