在centos 7.4上使用jexus 部署 asp.net core 專案
直接用dotnet xx.dll命令是可以部署asp.net core專案的,包括https也可實現。但是用jexus有以下幾個好處:
1.jexus可以守護dotnet程序
2.同一伺服器,同一埠,可以配置多個網站
3.操作簡單
4.通過反向代理實現負載均衡(不過jexus一般通過埠轉發方式實現asp.net core)
5.檢測攻擊(只是asp.net+mono方式,不適用asp.net core)
用 .net core 2.0作為目標框架做了一個網站,想部署到centos 6.5上,安裝.net core時因為缺少openssl-lib而失敗,而安裝Openssl-lib又要安裝一大堆依賴,最後不得不直接在阿里雲後臺重新更換到centos 7.4
一.安裝.net sdk
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.1.200 //如果希望安裝2.1的最新版,可把後面的.200小版本號去掉
安裝後執行 dotnet --version 可以檢視版本號,就說明成功了
( 2.1.3以後對應目標框架.net core 2.1, 2.1.200還是屬於.net core 2.0 )2.1目標框架似乎還有bug,改成2.1後在專案中新增controller類的時候會報錯,所以還是使用2.0)
二.釋出並執行.net core 專案
假設我的站點名稱是mysite,建立一個 var/www/mysite 資料夾
在windows上的vs 2017中 publish .net core專案,生成publish資料夾,將資料夾下的檔案傳到var/www/mysite
進入該資料夾,執行 dotnet mysite.dll ,網站已經執行起來了
(注意 要進入網站目錄後再執行dotnet,不要dotnet /var/www/..../mysite.dll, 否則會出問題,目前發現的是靜態檔案打不開,配置檔案讀不到)
執行 wget 127.0.0.1:5000 可以看到返回成功,說明網頁已經可以本機打開了。
然而,這時候只能通過5000埠被訪問,還不能通過外網訪問,下面我們需要安裝jexus來實現外網80埠訪問
三.安裝jexus
jexus 的原理就是把80埠的請求轉發給5000埠,並且守護dotnet程序。
安裝非常簡單:
curl https://jexus.org/release/x64/install.sh|sudo sh
會自動把jexus安裝到 usr/jexus 下,目前最新版本是5.8.3.10,從該版本開始支援.net core 2.1,
usr/jexus/siteconf 資料夾下用vim 命令 修改default 檔案,新增以下內容
port=80
root=/
/var/www/mysite
/
hosts=*
AppHost={
cmd=dotnet mysite.dll;
root=
/var/www/mysite/
;
port=0;
}
執行 /usr/jexus/./jws start 啟動jexus服務
以後每次修改配置檔案都要 執行 /usr/jexus/./jws restart 重啟
在阿里雲的安全規則裡把80埠放行
現在在你的電腦上輸入阿里雲的外網ip就能開啟網頁了
四. 將jexus設定為開機自啟
cd /etc/init.d/
vi jws
按i編輯模式,貼上下面內容
#!/bin/bash
#chkconfig: 2345 80 05
#description:jws
#
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Jexus Start.."
/usr/jexus/jws start
;;
stop)
echo "Jexus Stop.."
/usr/jexus/jws stop
;;
restart)
echo "Jexus Restart"
/usr/jexus/jws restart
;;
status)
/usr/jexus/jws status
;;
*)
exit 1
;;
esac
exit $RETVAL
按ESC後,輸入:wq儲存檔案
把這個指令碼作為“服務”加入
chmod 766 jws
chkconfig --add jws
注意:剛才加了一個mysite配置檔案,設定埠為80,但是已經有一個default配置檔案埠也是80,這會導致mysite起不來,要將default刪除或者修改埠
至此,jexus已經在centos 7.4搭建成功。
經驗總結:
1.centos 7以下系統庫的版本太低,會導致安裝失敗。需要升級到centos 7.4
2. jexus一旦啟動後,會自動啟動dotnet,無需將dotnet加入開機啟動。
3. jexus只是起到埠轉發作用,核心功能還是由dotnet完成的。
關於如何配置https,開啟gzip,請看另一篇 https://blog.csdn.net/soband_xiang/article/details/80757718