標籤:目錄 class ext super unix 變數 sso keep code
在之前的我的部落格項目中,我將.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)具有比反向 Proxy更高的效能優勢;
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 tempcd tempwget linuxdot.net/down/jexus-5.8.2-x64.tar.gztar zxvf jexus-5.8.2-x64.tar.gzcd 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=80root=/ /root/DayaliBlog.Webhosts=* #OR your.com,*.your.com# addr=0.0.0.0# CheckQuery=falseNoLog=true AppHost={CmdLine=dotnet /root/DayaliBlog.Web/DayaliBlog.Web.dll;AppRoot=/root/DayaliBlog.Web;Port=5000}# NoFile=/index.aspx Keep_Alive=false UseGZIP=falseOutLog=/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:9000yi‘s
以上#為注釋的行,預設的AppHost參數項是注釋的,需要取消注釋,設定好AppHost參數後,需要啟動Jexus,執行命令如下,需要切換到jexus檔案目錄下
cd tempcd 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 ;;esacexit $RETVAL按ESC後,輸入:wq儲存檔案把這個指令碼作為“服務”加入chmod 766 jwschkconfig --add jws
到此為止,我們就成功的將我們的.net Core項目部署完成了,相對nginx+supervisor來說,jexus的步驟相對與簡單些,而且jexus的效能跟IIS的效能相比不相上下。
參考部落格:
http://www.cnblogs.com/linqingfeng/archive/2013/06/14/3135716.html
https://mp.weixin.qq.com/s/k0qVppETGDMZ4AUA9IDu1Q
Jexus部署Asp.Net Core項目