1. 程式人生 > >CentOS7部署Dotnet Core2.1

CentOS7部署Dotnet Core2.1

sles 工作 star 配置 sco 服務器 默認 create upd

聲明

本文翻譯自:How to setup ASP.NET Core 2.1 on Linux in under 10 minutes

文中截圖及代碼會根據本人實際情況做出調整,希望對比兩篇文章看的需要註意!!!

前言

筆者在毫無Linux部署.net core的經驗下,第一次用了15分鐘完成部署,第二次在生產環境用了5分鐘。下文將說明如何在CentOS7下完成.NetCore2.1的部署,包括如何創建ASP.NET Core項目並將程序持久運行在Kestrel上,如何修改代碼和防護墻進而使代碼可以遠程訪問。最後也會提及生產環境使用的不同點。

1.安裝RunTime

ASP.NET Core在Linux運行的首要條件便是需要安裝Runtime。

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7.4/packages-microsoft-prod.rpm
sudo yum update
sudo yum install aspnetcore-runtime-2.1

微軟對不同的Linux發行版本(包括RHEL,Ubuntu,Debian,Fedora,CentOS,openSUSE和SLES)提供了相似的解決方案.

如果想要在Linux做 .NET Core的開發和編譯工作,那麽需要同時安裝 Dotnet Core SDK(SDK的安裝並不是必須的,可以在開發環境編譯後上傳到Linux服務器),在CentOS下的指令為:

sudo yum install dotnet-sdk-2.1

2.創建並編譯

2.1創建MVC工程

使用如下指令創建ASP.NET Core2.1的工程:

dotnet new MVC -o MvcDemoApp

2.2修改代碼

默認的情況下ASP.NET Core2.1本地啟動會運行在 Kestrel服務器上,如果想要從其他電腦訪問網站,則需要修改綁定。

打開新建的工程文件中的 Program.cs 文件,修改代碼如下:

1         public static IWebHostBuilder CreateWebHostBuilder(string
[] args) => 2 WebHost.CreateDefaultBuilder(args) 3 .UseUrls("https://0.0.0.0:5001") 4 .UseStartup<Startup>();

這樣綁定的便是服務器上的所有IP,而不只是默認的 localhost。(???)

2.3編譯程序

在終端運行如下指令:

dotnet publish --configuration Release

該指令所有的文件放到 /bin/Release/netcoreapp2.1/publish文件夾中。為了方便管理,我們將該目錄下的文件放到Linux服務器下的 /home/RunService/MvcDemo 路徑下。

3.運行Web程序

完成了.NET Core程序的創建和編譯後,現在開始程序的部署。

3.1直接運行程序

最簡單的是直接進入程序的根目錄 /home/RunService/MvcDemo ,然後執行指令:

dotnet CoreMvcApp.dll

技術分享圖片

此時指令會根據代碼設定將程序運行在5001端口(結束程序 Ctrl + C),打開瀏覽器並輸入地址 http://localhost:5001/ 或者 http://0.0.0.0:5001/便可以訪問web服務。

3.2作為服務運行

直接運行可以用來測試程序,但是每次服務器重啟後,需要手動打開服務。更好的方法是將網站當作服務運行。

創建名為 MvcDemo_Conf 的配置文件:

sudo vi /etc/systemd/system/MvcDemo_Conf.service

將以下命令寫入打開的配置文件中

[Unit]
Description=.NET Core Test App

[Service]
WorkingDirectory=/home/long/RunService/MvcDemo
ExecStart=/usr/bin/dotnet /home/long/RunService/MvcDemo/MvcDemoApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=MvcDemoApp
User=long
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

黃色背景的信息需要根據自己的需要修改

3.3配置文件

保存服務的配置文件後,使服務可用

sudo systemctl enable MvcDemo_Conf.service

啟動服務

sudo systemctl start MvcDemo_Conf.service

檢查服務運行狀態

sudo systemctl status MvcDemo_Conf.service

如果操作無誤,正常的提示如下圖所示

技術分享圖片

4.設置防火墻

如果想要在遠程訪問服務,需要打開防火墻的5001端口,從而其他計算機才可以遠程訪問。

打開防火墻的5001端口:

sudo firewall-cmd --add-port=5001/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

如果端口打開正常,則局域網內的計算機可通過地址 ip訪問

技術分享圖片

5.生產系統部署

上例說明了如何在CentOS上配置ASP.NET Core程序,但因為Kestrel是一個很基本的web服務器,所以需要配置性能更好的IIS、Nginx或者Apache。

正式程序可以不做步驟5,即打開防火墻的步驟。在Kestrel前置Apache服務器,Apache可以作為Kestrel的反向代理。

這樣可以通過反向代理將部分鏈接指向ASP.NET Core,而部分代碼仍舊使用php或者java,為程序的遷移提供了便利。

參考

centos安裝VsCode

centos出現“FirewallD is not running”怎麽辦

CentOS7部署Dotnet Core2.1