本文へスキップ
ysk-hack-log
戻る

BlazorアプリをsystemdでRaspberry Piに常駐させる|自動起動と自動再起動【連載⑧】

「BlazorアプリをsystemdでRaspberry Piに常駐させる|自動起動と自動再起動【連載⑧】」の記事アイキャッチ

前回(第7回) までで、アプリの機能はひととおり揃いました。でも dotnet run を手で叩いている限り、SSHを切ると止まり、再起動でも立ち上がりません。今回は systemd で常駐化し、電源を入れれば自動で立ち上がる24時間モニタリング機にします。

Table of contents

Open Table of contents

方針

STEP 1:publish する

第2回で .NET を入れているので、framework-dependent(.NETランタイム利用)で発行します。

cd ~/TempMonitor
dotnet publish -c Release -o ~/tempmonitor

💡 自己完結(self-contained)にすると .NET のパス依存が消えて配布が楽です: dotnet publish -c Release -r linux-arm64 --self-contained -o ~/tempmonitor この場合、実行ファイルに実行権限を付けます:chmod +x ~/tempmonitor/TempMonitor

STEP 2:systemd ユニットを作る

/etc/systemd/system/tempmonitor.service を作成します。
以下の内容のファイルを作ります。

[Unit]
Description=Temp Monitor (Blazor)
After=network.target mosquitto.service

[Service]
WorkingDirectory=/home/pi/tempmonitor
ExecStart=/home/pi/.dotnet/dotnet /home/pi/tempmonitor/TempMonitor.dll
Restart=always
RestartSec=5
User=pi
Environment=DOTNET_ROOT=/home/pi/.dotnet
Environment=ASPNETCORE_URLS=http://0.0.0.0:5000
Environment=DOTNET_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

ポイント:

STEP 3:有効化して起動

sudo systemctl daemon-reload
sudo systemctl enable --now tempmonitor

状態とログを確認します。

systemctl status tempmonitor
journalctl -u tempmonitor -f     # ログをリアルタイム表示

http://<PiのIP>:5000 が、SSHを切っても・再起動しても表示されれば成功です。

更新するとき

コードを直したら、再publishしてサービスを再起動します。

dotnet publish -c Release -o ~/tempmonitor
sudo systemctl restart tempmonitor

(この更新を自動化するのが次回のGitHub Actionsです)

つまずきポイント

まとめ

次回(第9回)は、GitHub Actions → Piへ自動デプロイ。pushしたら自動でpublish&サービス再起動されるようにします。


前の記事:連載⑦ MQTT連携でIoTダッシュボードを作る


この記事をシェア:

前の記事
MQTT連携でIoTダッシュボードを作る|複数デバイスの値を集約(Raspberry Pi)【連載⑦】
次の記事
GitHub Actionsでラズパイへ自動デプロイ|pushで自動publish&再起動【連載⑨】