ASP.NET Core アプリをサービス化する方法(CentOS)

ASP.NET Core アプリをサービス化する方法(CentOS)

CentOS で ASP.NET Core を動かす

ASP.NET Core で作成したWebアプリケーションをCentOSで動かします。発行した”dll”を dotnet コマンドで実行するのですが、シェルを占有されては不便ですし、サーバーを再起動しても自動でアプリケーションが立ち上がってほしいです。

というわけで、作成したアプリケーションをサービス化してバックエンドで実行させます。ASP.NET Core の実行までは、以下の記事にまとめています。

Windows + Visual Studioでビルドした ASP.NET Core を CentOS + nginx で動かします。まずは発行した dll を dotnet コマンドで実行して動けば準備完了です。

サービス化

上記URLの公式ドキュメントの通りにすればよいです。

サービスファイルの作成

/etc/systemd/system 以下にサービスファイルを作成します。

sudo vi /etc/systemd/system/kestrel-app.service

とりあえず公式ドキュメントにならいます(つまりコピー)。

[Unit]
Description=Example .NET Web API Application running on Ubuntu

[Service]
WorkingDirectory=/var/aspnetcore/hellomvc
ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll
Restart=always
RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

2行目の説明文は適当に書き換えても問題ないでしょう。5行目の”WorkingDirectory”、6行目の”ExecStart”、10行目の”User”を適宜自分の環境に合わせて書き換えておきましょう。

ExecStartの左のパスがdotnetのインストールされた場所?(私の場合、/opt/dotnet/dotnet で動きました)です。右のパスが実行するアプリケーションのdllです。WorkingDirectoryはこのdllのあるディレクトリにしました。

では起動しましょう。

サービスの起動

サービスを有効化し、起動しましょう。下記コマンドを実行するとバックエンドでサービスが起動します。外部からアクセスして動作を確認しましょう。

systemctl enable kestrel-app.service
systemctl start kestrel-app.service

サービスの状態は以下のコマンドで確認できます。

systemctl status kestrel-app.service

実行ログ、それからサービスの停止は以下のコマンドで可能です。覚えておきましょう。

journalctl -fu kestrel-app.service
systemctl stop kestrel-app.service

以上です。次は SSL の対応をして公開準備完了の予定です。

未分類カテゴリの最新記事