2018年12月2日 星期日

在CentOS Linux 7上運行.Net Core WebAPI

原本工作上就是寫C#,但是ASP.NET很久沒碰了,最近有需求要做Web後台所以就評估用ASP.NET適用性,發現.Net Core可以運作在Linux主機後,就寫了一個測試的WebAPI做測試



1.微軟說純運行.net core不需要安裝SDK只需要安裝runtime即可,幾乎主流的發行版都有支援
https://docs.microsoft.com/zh-tw/dotnet/core/linux-prerequisites?tabs=netcore2x

2.安裝套件,CentOS 7直接用yum安裝十分方便
https://dotnet.microsoft.com/download/linux-package-manager/centos/runtime-2.1.2

3.運行背景服務
可以搭配Apache使用或者使用內建的Kestrel WebServer
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-2.1

範本Service Script要修改dotnet路徑為/usr/bin/以及執行身分
[Unit] Description=Example .NET Web API App running on CentOS 7 [Service] WorkingDirectory=/var/www/helloapp ExecStart=/usr/local/bin/dotnet /var/www/helloapp/helloapp.dll Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=dotnet-example User=apache Environment=ASPNETCORE_ENVIRONMENT=Production [Install] WantedBy=multi-user.target

P.S 一直以為Kestrel是獨立的軟體(傳統LAMP觀念),實際做一次才發現他是整合在.Net Core的核心組建中
要調整Kestrel參數要在主程式中帶入參數

https://blog.johnwu.cc/article/ironman-day30-asp-net-core-kestrel-web-server.html