Ubuntu20.4でASP.NET Coreを導入してみた話

ubuntu コンピュータ
ubuntu

UbuntuでASP.NETが動くらしいので試してみました。

.NET SDKとランタイムをインストール

Ubuntu に .NET SDK または .NET ランタイムをインストールするの通りSDKとランタイムをインストールしました。
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-5.0
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-5.0

MVCプロジェクトを作成し発行する。

mkdir プロジェクト名
cd プロジェクト名
dotnet new mvc
dotnet publish -c Release -r linux-x64 -o プロジェクトの発行先

Webサーバーを公開するアドレスとポートを設定

kestrelというWebサーバーを稼働させる際のポート設定をします。
ファイル名:appsettings.json
{
    "urls": "http://アドレス:ポート",
    "Logging": {
        "LogLevel": {
            "Default": "Information",
            "Microsoft": "Warning",
            "Microsoft.Hosting.Lifetime": "Information"
        }
    },
    "AllowedHosts": "*"
}
LAN内で公開することを想定したお手軽設定になります。
インターネットなど外部に公開する場合はApacheやNginxなどでリーバースプロキシを立ててkestrelとつなげてあげるのがセキュリティ的に良いようです。

Webサーバー(kestrel)の自動起動

.serviceファイルの作成

ファイル名:/usr/lib/systemd/system/asp.service
[Unit]
Description=Example .NET Web API App running on Ubuntu 20.04


[Service]
WorkingDirectory=/var/www/asp
ExecStart=/usr/bin/dotnet /var/www/asp/プロジェクト名.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production


[Install]
WantedBy=multi-user.target
viなどで作成
設定ファイルのファイル名asp.serviceは任意の名前を命名
例での発行先(WorkingDirectory)は/var/www/asp

サービスの有効化

sudo systemctl enable asp.service

サービスの開始

sudo systemctl start asp.service
成功していればWebブラウザから設定したアドレス・ポートにアクセスするとページが見えると思います。
Monoの時も思いましたが、Ubuntuで.dllファイルが動いていることが、なんとも奇妙な感じがします。

コメント