.net core 開源和跨平台,能部署到當前主流的Windows,Linux,macOS 系統上。本篇我們將在 Linux 系統上使用 ASP.NET Core Runtime 和 Jexus 部署運行 ASP.NET Core 網站。
Linux 系統選的是 CentOS 7.4 64位
.NET Core 安裝的是 ASP.NET Core Runtime 2.1(當時最新),其實也可以安裝.NET Core SDK,但沒有必要,運行環境 Runtime 就OK了。
Jexus 用的是 5.8(當時最新) 獨立版(自帶Mono)。Jexus 配置簡單,性能也高,我們可以達到像在Windows的IIS接管Kestrel進程一樣的體驗。不像Nginx並沒有接管Kestrel 進程,我們需要維護2個進程,增加了復雜度。下面我們開始安裝部署。
一、安裝 .NET Core
1、添加dotnet產品源
在安裝.NET之前,您需要注冊Microsoft密鑰,注冊產品存儲庫並安裝所需的依賴項。這只需要每台機器完成一次,運行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
2、安裝 .NET Core SDK
更新可用於安裝的產品,然后安裝.NET Core SDK,運行以下命令:
sudo yum update
sudo yum install aspnetcore-runtime-2.1
安裝完成后,在命令行輸入 dotnet --info 出現dotnet版本信息,說明裝安成功。

詳情見微軟官方文檔(https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-current)。
二、部署 ASP.NET Core 網站
寫了個簡單的名叫Snai.ReadSettings的ASP.NET Core網站,輸出一句 “使用 Jexus 部署的第一個網站” 信息 ,上傳到服務器 snai.readsettings01 目錄下,用命令行進入到網站目錄,輸入 nohup dotnet Snai.ReadSettings.dll & 命令,后台運行網站程序。nohup ... & ,為后台運行意思。
輸入 curl http://localhost:5000 命令,出現 “使用 Jexus 部署的第一個網站”,說明.NET Core環境和網站安裝部署成功。

由於我們准備用 Jexus 來做Web服務器托管 ASP.NET Core 程序,所以我們不需要 dotnet Snai.ReadSettings.dll 這種運行方式,我們先殺掉啟動運行的網站。
輸入 ps -ef | grep Snai 命令,找到 dotnet Snai.ReadSettings.dll 運行的程序,本找到前面的進程ID

輸入 kill -9 32755 命令,就可以殺掉 dotnet Snai.ReadSettings.dll 運行程序,再 ps -ef | grep Snai 命令,已經找不到殺掉的程序了

三、安裝 Jexus,修改配置,啟動 Jexus 運行網站
1、安裝獨立版的Jexus,獨立版的Jexus自帶Mono,直接運行以下命令即可(需要在root身份下執行):
安裝成功后提示:OK, Jexus has been installed in /usr/jexus.
詳情見官方網站(https://jexus.org)。
2、修改 Jexus 配置
輸入 cd /usr/jexus/siteconf/ 命令,定位到配置目錄,輸入 ls 里面有個 default 默認配置,輸入 cp default snai.readsettings01 把默認配置復制一份,輸入 vi snai.readsettings01 修改 snai.readsettings01 配置文件,修改后如下
# Web Site: snai.readsettings01
########################################
port=80
root=/ /root/www/snai.readsettings01
hosts=* #OR your.com,*.your.com
# addr=0.0.0.0
# CheckQuery=false
NoLog=true
AppHost={CmdLine=dotnet /root/www/snai.readsettings01/Snai.ReadSettings.dll;AppRoot=/root/www/snai.readsettings01;Port=0}
port=80 # jexus WEB服務器偵聽端口(必填。當然可以是其它端口)
root=/ /root/www/snai.readsettings01 # 網站URL根路徑(虛擬目錄)和對應的物理路徑,兩個路徑字串之間必須用空格分開(必填。既使這個網站是一個純粹的反向代理站,也得填)
hosts=* #OR your.com,*.your.com # 綁定的域名,由於我沒有域名,用ip訪問,就輸入*
重點 AppHost 配置,默認這個可能是注釋的,去掉前面#
CmdLine 運行網站的命令
AppRoot 網站的目錄
Port 端口號,不是Jexus對外服務的端口號,而是指要轉發的Asp.Net Core應用程序的端口號,如果在程序中使用了UsrUrls自定義端口則寫UsrUrls中填寫的端口(不建議使用UsrUrls自定義端口),在沒有使用UsrUrls自定義端口的情況下端口號設置為 0,Jexus會在運行時與Asp.Net Core進行"協商"具體使用的端口號,避免多個應用分配端口的麻煩和沖突的風險。
配置完成 按 esc 鍵完成輸入,輸入 :wq 保存退出。
這里簡單說下vi編輯文件命令:
最開始輸入 a 開始修改輸入,按 esc 鍵完成輸入,:wq 保存退出,:q 不保存退出,:q!強制不保存退出
3、啟動 Jexus,運行網站
輸入 rm default 刪掉默認配置,輸入 sh /usr/jexus/jws start 啟動 Jexus

Jexus常用命令,start 啟動,restart 重啟,stop 停止
啟動完成后,在瀏覽器里輸入 ip,訪問網站,顯示 “使用 Jexus 部署的第一個網站”,啟動運行成功

注:先要確保80端口是通的
4、使用 Jexus 部署運行第二個網站
將第一個網站的輸出改為 “使用 Jexus 部署的第二個網站”,部署到 snai.readsettings02 目錄下
定位到 Jexus 的 siteconf 目錄,輸入 cp snai.readsettings01 snai.readsettings02,復制配置,修改 snai.readsettings02 配置,修改后如下
# Web Site: snai.readsettings02
########################################
port=8010
root=/ /root/www/snai.readsettings02
hosts=* #OR your.com,*.your.com
# addr=0.0.0.0
# CheckQuery=false
NoLog=true
AppHost={CmdLine=dotnet /root/www/snai.readsettings02/Snai.ReadSettings.dll;AppRoot=/root/www/snai.readsettings02;Port=0}
保存退出配置修改,輸入 sh /usr/jexus/jws restart 重啟 Jexus

重啟完成后,在瀏覽器里輸入 ip:8010,訪問網站,顯示 “使用 Jexus 部署的第二個網站”;再輸入 ip ,顯示“使用 Jexus 部署的第一個網站”,二個網站啟動運行成功


注:先要確保8010端口是通的
到此所有部署基本完成,如果要部署第三個,第四個網站也跟第二個類似。
