Ⅰ. はじめに
タイトルの通り「.NET Core アプリを systemd を利用してサービス化する方法」です。
「ASP.NET Core」 または 「.NET Core コンソールアプリケーション」どちらも可能です。
Ⅱ. やり方
1. ユニットファイルを作成する
/etc/systemd/system/myapp.service
[Unit] Description=My perfect web app [Service] WorkingDirectory=/var/www/AspNetCoreTest ExecStart=/usr/bin/dotnet AspNetCoreTest.dll Restart=always # サービス終了時、10秒後に自動再起動する RestartSec=10 KillSignal=SIGINT SyslogIdentifier=dotnet-example # 適切なユーザを指定する User=www-data Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
2.起動する
# 起動する systemctl start myapp # サービスの自動起動を有効にする systemctl enable myapp
実行結果
ログの表示
journalctl -fu myapp journalctl -fu myapp --since "2016-10-18 00:00" --until "2016-10-18 04:00" // 全ログをテキストファイルとして保存する journalctl -u myapp > log.txt
留意点
ASP.NET Core について
この記事の方法で ASP.NET Core 標準の Webサーバである Kestrel をエッジサーバとして直接公開する事は推奨されていません。
リバースプロキシを利用して Kestrel に HTTPリクエストを転送する事が推奨されています。
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel#when-to-use-kestrel-with-a-reverse-proxy