1. 程式人生 > >.NET Code WebApi CentOS部署

.NET Code WebApi CentOS部署

 

準備

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

 

至此完成。