Ubuntu 20.04 LTSでASP.NET Coreを動かす

Ubuntu 20.04 LTS
.NET Core 3.1
でサービス化するまでの覚え書き。

LinuxでASP.NETが動くってかなり感動する。
設定もIISよりシンプルでいいね。
もう個人用途でWindows Server建てることなさそう。

■ .NET Coreをインストール

参考:Ubuntu 20.04 パッケージ マネージャーに .NET Core をインストールする – .NET Core | Microsoft Docs

.NET CoreになってからMSドキュメントすげー充実してて良いと思う。
そのまま実施でよい。

wget -q https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb

add-apt-repository universe
apt-get install apt-transport-https
apt-get update
apt-get install aspnetcore-runtime-3.1

■ サービス作成

systemctlで管理できるようにサービスを作成する。

実行資産はあらかじめSCPなどでどこかに置いておく。
以下は「/var/www/myapp」に置いた想定。

vi /etc/systemd/system/kestrel-myapp.service
[Unit]
Description=My App Description
After=network.target

[Service]
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/myapp.dll --server.urls "http://localhost:5000"
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-mmyapp
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

dotnetコマンドは–server.urlsパラメータで公開URL+ポートを設定できて便利。
ポート番号を変更すれば、1台のサーバで複数サービス起動できるね。

サービス開始、自動起動設定をする。

systemctl start kestrel-myapp
systemctl enable kestrel-myapp

ここまででブラウザで「web.local.domain.jp」にアクセスするとASP.NET Coreのサイトにアクセスできる。