C#

.Net Coreで開発したLinuxアプリをサービス化する

.Net Core コンソールアプリケーションをsystemdを利用してサービス化する方法です。

環境

  • C# .Net Core 3.1
  • CentOS 7

ユニットファイル作成

$ vi /etc/systemd/system/myapp.service
[Unit]
Description=my hogehoge app

[Service]
# 実行ディレクトリ
WorkingDirectory=/opt/hogehoge/
# 実行ファイル
ExecStart=/opt/hogehoge/ConsoleApp1 
# 10秒後に再起動
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-example
# 適切なユーザーを指定
User=hoge-user
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

実行

サービスの起動

$ sudo systemctl start myapp.service

サービスの状態確認

$ sudo systemctl status myapp.service

サービスの停止

$ sudo systemctl stop myapp.service

サービスの再起動

$ sudo systemctl restart myapp.service

サービスの自動起動

$ sudo systemctl enable myapp

ファイル修正時: systemd再読み込み

$ sudo systemctl daemon-reload