1. 程式人生 > >Jexus部署Asp.Net Core專案

Jexus部署Asp.Net Core專案

    在之前的我的部落格專案中,我將.net Core釋出到Cent OS 上,使用的Nginx代理以及Supervisor程序守護,看過我的部落格的童鞋,也會發現,這種方式比較麻煩,光命令列就看的頭大,總共部署了兩次還是三次,可是每次一樣都是要翻部落格翻資料,想想還是IIS好用,點幾下滑鼠就完成了,沒有這麼多步驟。之前也一直想嘗試下使用Jexus部署我的專案,也一直沒有時間搞,今天趁著外面下雨,就仔細學習下這個東東。

Jexus百度百科:

Jexus 即 Jexus Web Server,簡稱JWS,是Linux平臺上的一款ASP.NET WEB伺服器,是 Linux、Unix、FreeBSD 等非Windows系統架設 ASP.NET WEB 伺服器的核心程式,是企業級ASP.NET跨平臺部署的一種可選方案。與其它WEB伺服器相比,Jexus不但具有跨平臺ASP.NET伺服器這樣的標誌性特徵,同時還擁有核心級的安全監控、入侵檢測、URL重寫、無檔案路由等一系列重要功能和專有特性。


關於它的定義簡單明瞭,就是一款Linux上的Asp.Net Web伺服器,相當於我們的Windows上的IIS,Jexus5.8.2的正式釋出為Asp.Net Core進入生產環境提供了平臺支援。

本版的亮點是新增“AppHost”配置項,將HTTP自宿主應用程式(如Asp.net Core應用程式、Node.js應用程式等)統一納入Jexus的工作程序序列進行管控(啟動、停止、重啟、崩潰後自動恢復等管理、監控功能),為Asp.Net Core應用程式進入企業化生產環境提供了強有力的平臺保障。使用 jexus整合asp.net core的優點:
1)支援多站點,同一埠可以同時支援任何多的asp.net core應用程式;
      2)應用程式啟動、停止、重啟與站點的啟動、停止、重啟等操作一致,無需手工管理asp.net core應用程式;
      3)具有應用程式崩潰後自動重啟功能,為企業級不間斷執行保障;
      4)具有比反向代理更高的效能優勢;
      5)提供與IIS相同的HTTP環境引數。

下面呢,我將先把我的專案停掉,將Supervisor和Nginx停止執行,首先將Supervisor停止執行,由於Supervisor設定了開機啟動,我需要先把它禁用掉:

禁用開機啟動命令:systemctl disable supervisord     

檢視是否為開機啟動命令:systemctl is-enabled supervisord 

如下圖所示:表明開機啟動已經關閉,可以重啟嘗試一下。


此時我重啟完後,我的專案就無法訪問了,為了下面的內容,我們再將Supervisor啟動,命令如圖中所示,下面我們再訪問時,這時網站已經恢復了,表名我們的服務也已經啟動了


執行 supervisorctl stop all 可以停止全部程序 ,執行完後會顯示DayaliBlog.Web:Stoped。接著我們再將Nginx停止,命令為:systemctl stop nginx .停止這些服務是為了排除這些對Jexus的影響,雖然我也不知道會有什麼影響。現在我的專案已經完全無法訪問了,下面我們開始安裝Jexus,以及部署我們的.net core專案。

安裝jexus5.8.2獨立版
mkdir temp
cd temp
wget linuxdot.net/down/jexus-5.8.2-x64.tar.gz
tar zxvf jexus-5.8.2-x64.tar.gz
cd jexus/
cd siteconf/
安裝完畢後,我們去修改siteconf裡的default檔案裡的引數,關於要配置的引數說明如下:
格式:AppHost={CmdLine=命行行; AppRoot=工作路徑; Port=埠號}
說明:CmdLine:必選項。表示啟動這個web應用程式的命令(含引數),如 CmdLine= dotnet /var/www/aspnetcore/AspNetCoreStarted.dll
       AppRoot:必選項。表示這個應用程式的工作目錄,如:AppRoot=/var/www/aspnetcore
       Port:可選項。表示這個應用程式的偵聽埠,多個埠用英文逗號分隔(注:如果沒有填寫這一項,就請在AppHost.port或reproxy中填寫埠號,否則,請求資料無法轉發給應用程式)。
       Env:可選引數。表示這個應用程式工作時需要的環境變數,如 env=(PATH=/usr/local/bin:/var/www/aspnetcore:$PATH),多個設定用英文逗號分開。
       ErrLog:可選項。表示將這個應用程式的異常輸出重定向到指定的檔案(需填寫完整路徑),如果不原意輸出日誌,可以不用OutLog項。這時, jexus會自動關掉控制檯輸出(實質是重定向到/dev/null中了);
       OutLog:可選項。表示將這個應用程式的控制檯輸出重定向到指定的檔案(需填寫完整路徑);
       User: 可選項。以指定的使用者身份執行該應用程式,預設為root身份。
注意:
   1,AppHost像AppHost.Port一樣,不支援虛擬路徑;
   2,AppHost功能是將指定的具有http服務能力的web應用程式納入jexus工作程序進行管理,對Asp.Net Core或Node.js等自宿主web程式用於生產環境具有重要的意義。
按照以上的說明,修改我要配置的引數
######################
# Web Site: Default 
########################################

port=80
root=/ /root/DayaliBlog.Web
hosts=*    #OR your.com,*.your.com


# addr=0.0.0.0
# CheckQuery=false
NoLog=true
 AppHost={CmdLine=dotnet /root/DayaliBlog.Web/DayaliBlog.Web.dll;AppRoot=/root/DayaliBlog.Web;Port=5000}
# NoFile=/index.aspx
 Keep_Alive=false
 UseGZIP=false
OutLog=/tmp/out.txt;
ErrorLog=/tmp/err.txt;

# UseHttps=true
# ssl.certificate=/x/xxx.crt  #or pem
# ssl.certificatekey=/x/xxx.key
# ssl.protocol=TLSv1.0    # TLSv1.1 or  TLSv1.2...
# ssl.ciphers= 

# DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24
# AllowFrom=192.168.*.*
# DenyDirs=~/cgi, ~/upfiles
# indexes=myindex.aspx
# rewrite=^/.+?\.(asp|php|cgi|pl|sh)$ /index.aspx
# reproxy=/bbs/ http://192.168.1.112/bbs/
# host.Redirect=abc.com www.abc.com  301
# ResponseHandler.Add=myKey:myValue


# Jexus php fastcgi address is '/var/run/jexus/phpsvr'
#######################################################
# fastcgi.add=php|socket:/var/run/jexus/phpsvr

# php-fpm listen address is '127.0.0.1:9000'
############################################
# fastcgi.add=php|tcp:127.0.0.1:9000
yi's
以上#為註釋的行,預設的AppHost引數項是註釋的,需要取消註釋,設定好AppHost引數後,需要啟動Jexus,執行命令如下,需要切換到jexus檔案目錄下
cd temp

cd jexus

./jws start 

執行成功後,再次訪問我們的專案,即可訪問成功。 
下面我們需要將Jexus設為開機啟動,命令如下:

cd /etc/init.d/       
vi jws
按i編輯模式,貼上下面內容
#!/bin/bash
#chkconfig: 2345 80 05#description:jws
#

. /etc/rc.d/init.d/functionscase "$1" instart)
  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
到此為止,我們就成功的將我們的.net Core專案部署完成了,相對nginx+supervisor來說,jexus的步驟相對與簡單些,而且jexus的效能跟IIS的效能相比不相上下。

參考部落格:


掃描二維碼關注我的公眾號,共同學習,共同進步!