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 の対応をして公開準備完了の予定です。
コメントを書く