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ファイルが動いていることが、なんとも奇妙な感じがします。
コメント