一. 發布項目
發布的連接選擇“文件系統”,部署模式選擇“框架依賴”,
二. 首先在目標Linux系統(CentOS 7.9)中安裝.Net Core SDK
說明:linux上安裝dotnetcore sdk有兩種方式,一個是使用編譯好的離線安裝包dotnet-sdk-3.1.201-linux-x64.tar.gz,一個是使用微軟提供的yum倉庫。
1. 使用離線sdk安裝包安裝sdk(推薦)
1.1 下載 dotnet-sdk,訪問官網:https://dotnet.microsoft.com/download/dotnet-core/3.1
1.2. 上傳安裝包到Linux系統
先 cd /usr/local 下創建一個文件夾 mkdir dotnet
將sdk安裝包上傳並解壓到這個目錄中
tar -zxvf dotnet-sdk-3.1.201-linux-x64.tar.gz -C /usr/local/dotnet
1.3. 配置環境變量
在/etc/profile文件末尾加上兩行,命令 vim /etc/profile 進入,按 i 進行編輯,按 Esc 鍵退出后再按 :wq 進行保存。
export DOTNET_ROOT=/usr/local/dotnet
export PATH=$DOTNET_ROOT:$PATH
執行命令 source /etc/profile使改動生效:
source /etc/profile
1.4. 驗證dotnetcore環境:
dotnet -version 或 dotnet -info
2. 使用yum倉庫安裝
查看官方文檔:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7
2.1.先添加微軟包存儲庫(我這里試過了下載不下來不知道為啥,所以就用上面離線安裝方式)
rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
2.2.查找出要裝的哪個sdk(非必要)
yum search dotnet
2.3.安裝.net core sdk
yum install dotnet-sdk-3.1
2.4.安裝完成后查看.Net Core SDK信息,或者用dotnet -version查看版本號
dotnet -info
三. 項目部署啟動過程
1. 創建一個/usr/local/netcore/DemoWeb目錄存放站點文件
2. 將我們打包好的部署文件publish目錄下的所有文件上傳到剛才創建的目錄
3. 使用cd命令進入站點目錄中:cd /usr/local/netcore/DemoWeb
4. 啟動項目,注:執行啟動命令,一定要指定dll的路徑或者先cd進入站點目錄,否則會啟動不成功
方式一:普通模式啟動和停止站點,這種啟動方式有個弊端就是,關閉Xshell的會話之后,站點同時會自動關閉,無法訪問
#進入項目目錄 cd /usr/local/netcore/DemoWeb #啟動站點,自定義端口號,運行環境 dotnet Asp.NetCore.Demo.Web.dll --urls="http://*:5000;http://*:5001" --environment=Development #停止站點 Ctrl+c
方式二:后台進程模式啟動和停止站點,避免關閉會話后,站點無法訪問
#進入項目目錄 cd /usr/local/netcore/DemoWeb #啟動站點,自定義端口號,運行環境 nohup dotnet Asp.NetCore.Demo.Web.dll --urls="http://*:5000;http://*:5001" --environment=Delopment > /dev/null 2>&1 & #查看相關進行 ps -aux | grep "Asp.NetCore.Demo.Web.dll" #關閉站點進程,當前進程直接使用Ctrl+c kill 進程號
這里使用后台進程,關閉Xshell也不會關閉站點,在當前進程,停止站點直接使用Ctrl+c,否則需要找出進程ID,然后kill進程號。
/dev/null:/dev/null相當於執行了command 1 > /dev/null。執行command產生了標准輸出stdout(用1表示),重定向到/dev/null的設備文件中
/dev/null可以理解為/dev路徑下的空文件;該命令將command命令的標准輸出輸出到空文件中
2>&1:可以理解為執行command產生的標准輸出重定向到文件中,標准錯誤也重定向到文件中,期間只打開一次文件,&1的含義就可以理解為用標准輸出的引用,引用的就是重定向標准輸出產生打開的文件。
注意:后台進程雖然可以再Xshell關閉后還能運行,但是當系統關機重啟后,進程就沒有了,這個時候還是需要手動啟動。
為dotnet創建守護進程的方式來保證開機就能訪問站點文章(為.Net Core項目創建Supervisor進程守護監控)。
5. 在瀏覽器中訪問即可,我們的瀏覽器能正常訪問,部署成功。 注:服務器防火牆中開放該端口號
#查看防火牆狀態 firewall-cmd --state #批量開放端口 firewall-cmd --zone=public --add-port=5000-5001/tcp --permanent #重啟防火牆 firewall-cmd --reload #查看防火牆開放的端口 firewall-cmd --list-ports