ASP.NET CoreアプリをCentOSでサービス登録し自動起動を設定する
概要
AWS LightsailでホスティングされているCentOS 7のサーバで
ASP.NET Coreアプリケーションを公開するにあたりサービス化して自動起動設定を行ったのでそのメモです。
手順的には公式ドキュメント通りなので公式ドキュメント見たほうが早い説あります。
過去にもやったことがあったのでパスの指定ミスがあった以外は順調でした。
目次
環境
$ cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) $ dotnet --version 2.2.104
参考サイト様
サービスファイルの作成
サービス化するためにサービスファイルを作成します。
編集内容については公式ドキュメントに記載の通りでなんら問題ないと思います。
hoge
とfuga
を適宜読み替えてください。
$ sudo vi /etc/systemd/system/<hoge>.service
/etc/systemd/system/<hoge>.service
[Unit] Description=本サービスの説明 [Service] ExecStart=/usr/bin/dotnet /var/<hoge>/<fuga>.dll Restart=always RestartSec=10 SyslogIdentifier=<hoge> User=root Environment=ASPNETCORE_ENVIRONMENT=Production WorkingDirectory=/var/<hoge>/ # runlevel = 3 [Install] WantedBy=multi-user.target
環境変数のASPNETCORE_ENVIRONMENT
についてはappsettings.Production.json
を使用するためProduction
を指定しています。
dotnetコマンドのパスについては下記コマンドで確認可能です。
$ which dotnet /usr/bin/dotnet
作成したサービスの登録&起動
# サービス登録 $ sudo systemctl enable <hoge>.service # サービス起動 $ sudo systemctl start <hoge> # サービスの状態確認 $ sudo systemctl status <hoge>
もしサービスファイルの記載に不備があり起動しないなどの場合 サービスファイルを変更すると下記のコマンドが要求されます。
$ sudo systemctl daemon-reload
雑感
workingディレクトリが間違っていて「起動しない!!!!」と苦戦しました...