systemdを使ってみたのでまとめてみる
どういう時使うの?
本番環境などの常にサーバーが動いていないといけない環境で、何かのエラーでサバーが落ちてしまった場合に再起動してくれたりするらしい。 今回はnuxtで使ってみたので、その時のをまとめて見ようかと思います。
環境
設定
まずはnuxtサーバーを監視するための設定ファイルを作ります。 ここではcalender-appをアプリケーション名とします。
/etc/systemd/system/
配下にサービス名.service
でファイルを作成します。
/etc/systemd/system/calender-app.service
って感じですね。
中身はこんな感じ
[Unit] Description=calender-app After=syslog.target network.target [Service] ExecStart=/usr/bin/bash ./service_entrypoint.sh ExecStop= KillMode=process Restart=always User=ec2-user Group=ec2-user WorkingDirectory=/home/ec2-user/calender-app [Install] WantedBy=multi-user.target
次にnuxtを起動するファイルを作ります。
/home/ec2-user/calender-app
にservice_entrypoint.sh
を作ります。
中身はこんな感じ
#!/usr/bin/bash # yarn export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH" # nvm if [[ -s ~/.nvm/nvm.sh ]] ; then source ~/.nvm/nvm.sh ; fi yarn run start
EC2にログインした状態でyarn run start
して起動できても、systemd経由で起動するときにはyarnやnvmのpathが通っていないので、それぞれpathを通しています。
systemd経由でnuxtを起動
$ sudo systemctl daemon-reload
で設定ファイルを読み込ませます。
$ sudo systemctl enable calender-app
でサービス自動起動を有効にします。
$ sudo systemd start calender-app
でサービスを起動します。以上!