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.debsudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-5.0sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y aspnetcore-runtime-5.0MVCプロジェクトを作成し発行する。
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.targetviなどで作成
設定ファイルのファイル名asp.serviceは任意の名前を命名
例での発行先(WorkingDirectory)は/var/www/asp
サービスの有効化
sudo systemctl enable asp.serviceサービスの開始
sudo systemctl start asp.service成功していればWebブラウザから設定したアドレス・ポートにアクセスするとページが見えると思います。
Monoの時も思いましたが、Ubuntuで.dllファイルが動いていることが、なんとも奇妙な感じがします。
       
  
  
  
  

コメント