在Centos上安裝.NET環境
安裝 .NET 之前,請運行以下命令,將 Microsoft 包簽名密鑰添加到受信任密鑰列表,並添加 Microsoft 包存儲庫。 打開終端並運行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安裝運行時
sudo yum install aspnetcore-runtime-6.0
作為 ASP.NET Core 運行時的一種替代方法,你可以安裝不包含 ASP.NET Core 支持的 .NET 運行時:將上一命令中的 aspnetcore-runtime-6.0 替換為 dotnet-runtime-6.0:
sudo yum install dotnet-runtime-6.0
安裝SDK(一般服務器上只需安裝運行時即可)
sudo yum install dotnet-sdk-6.0
在Windows上用VS發布項目
默認情況下項目采用的是5000端口,我們可以在Program中手動制定一下端口
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseUrls("http://*:9090").UseStartup<Startup>();
});
使用Xshell等工具連接雲服務器
創建web存放目錄,參考命令:
mkdir -p /home/www/web
直接將VS發布成功后的文件(.\bin\Release\net5.0\publish)拖到Xshellweb目錄下,它會自動上傳,當然也可以使用Xftp等工具去上傳,或者在VS發布時選擇FTP發布
項目運行測試
項目文件上傳完畢后,使用dotnet [程序主文件路徑]運行程序
dotnet HelloCore.dll

出現這樣即表示成功,Kestrel已經開始監聽9090端口了
着急的你這時候肯定直接打開Chrom去訪問了,然后頁面轉了半天,結果出現這個

這是因為防火牆阻擋了你訪問
查看防火牆狀態
systemctl status firewalld
關閉防火牆
systemctl stop firewalld
這還沒完,因為雲服務器廠商還有一道防火牆策略,登錄服務器控制面板配置一下

創建Service管理應用
安裝nano(nano是一個文本編輯工具)
yum install nano
創建Service文件
sudo nano /etc/systemd/system/kestrel-hellocore.service
[unit]
Descrition=my web is hellocore
[Service]
WorkingDirectory=/home/www/web
ExecStart=/usr/bin/dotnet /home/www/web/HelloCore.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-hellocore
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
Ctrl+X退出並詢問是否保存 Y保存 回車退出編輯界面 nano [文件名]可進入編輯頁
創建服務
systemctl enable kestrel-hellocore.service

啟動服務
systemctl start kestrel-hellocore.service
查看服務狀態
systemctl status kestrel-hellocore.service
如果有錯誤可以執行
journalctl -xe
根據提示修改Service文件
然后再次啟動,會提示執行
systemctl daemon-reload

如此反復操作,根據提示修改直到無報錯為止
安裝Nginx反向代理
Todo
SSL證書申請
Todo
多網站及證書配置
Todo
啟用ForwardedHeaders中間件
Todo
獨立部署(SCD)
Todo
在Docker上運行.NET程序
參考https://www.cnblogs.com/chonglu/p/15672478.html
