.NET項目部署到Linux系統(CentOS)


在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

image-20211215223756056

出現這樣即表示成功,Kestrel已經開始監聽9090端口了

着急的你這時候肯定直接打開Chrom去訪問了,然后頁面轉了半天,結果出現這個

image-20211215224004625

這是因為防火牆阻擋了你訪問

查看防火牆狀態

systemctl status firewalld

關閉防火牆

systemctl stop firewalld

這還沒完,因為雲服務器廠商還有一道防火牆策略,登錄服務器控制面板配置一下

image-20211215224338283

創建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

image-20211215225919233

啟動服務

systemctl start kestrel-hellocore.service

查看服務狀態

systemctl status kestrel-hellocore.service

如果有錯誤可以執行

journalctl -xe

根據提示修改Service文件

然后再次啟動,會提示執行

systemctl daemon-reload

image-20211215230735036

如此反復操作,根據提示修改直到無報錯為止

安裝Nginx反向代理

Todo

SSL證書申請

Todo

多網站及證書配置

Todo

啟用ForwardedHeaders中間件

Todo

獨立部署(SCD)

Todo

在Docker上運行.NET程序

參考https://www.cnblogs.com/chonglu/p/15672478.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM