Ubuntu+PerlでWebシステム開発 環境構築

  • Ubuntu20
  • Ubuntu18
  • Ubuntu16

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