systemdを使ってみたのでまとめてみる

どういう時使うの?

本番環境などの常にサーバーが動いていないといけない環境で、何かのエラーでサバーが落ちてしまった場合に再起動してくれたりするらしい。 今回はnuxtで使ってみたので、その時のをまとめて見ようかと思います。

環境

EC2のamazon Linuxで行いました。

設定

まずは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-appservice_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

でサービスを起動します。以上!