.NET Code WebApi CentOS部署
阿新 • • 發佈:2018-11-28
準備
Visual Studio Code
CentOS 7
FTP
建立webapi專案
>dotnet new webapi
專案簡單模擬通過POST呼叫介面,讀取配置檔案傳送訊息,返回傳送結果
建立這幾個檔案:
ServerConfig.cs//用於讀取配置檔案
Modes>Message.cs//模擬發訊息的實體類
Controllers>MessageControllers.cs//控制器
ServerConfig.cs
Modes>Message.cs
Controllers>MessageControllers.cs//控制器
這裡順便提一下web api的知識,有人經常遇到[FromBody]Message message,接收到實體的時候得到的是null,也沒有拋異常,這個問題通常是傳參的時候,有欄位沒法反序列化的原因,比如一個int型別的屬性ID,傳參的時候比如是“123456789”。
程式碼完成我們來測試一下:
可以看到,執行正常,為了在外網能夠訪問,我們修改一下預設埠比如5354
測試的程式碼就緒,那麼開始釋出。
webapi> dotnet publish -c Release
這些就是我們將要釋出的檔案。
登入Linux
執行命令,可以登入微軟官網檢視。
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum update
sudo yum install dotnet-sdk-2.1
執行完成後,新建目錄比如:
/var/wwwroot/dotnet/
通過FTP把剛才釋出的檔案上傳到該目錄下
可以看到可以正常運行了。
正常執行,但是過程並沒有這麼順利。
執行這個命令的時候
sudo yum install dotnet-sdk-2.1安裝的版本是2.1.500。
安裝一下版本:
安裝完後,再執行
刪除以下目錄。
現在再執行即可正常。
控制檯退出後,那麼程序也結束了,把它做成服務。
配置檔案webapi.service
[Unit] Description=Example .NET Web API App running on Ubuntu [Service]
#涉及到磁碟寫操作,改行必須配置 WorkingDirectory=/var/wwwroot/dotnet
#注意這行,/usr/bin/dotnet必須加上 ExecStart=/usr/bin/dotnet /var/wwwroot/dotnet/webapi.dll Restart=always RestartSec=10 KillSignal=SIGINT User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
至此完成。