Jexus 是一款運行於 Linux 平台,以支持 ASP.NET、PHP 為特色的集高安全性和高性能為一體的 WEB 服務器和反向代理服務器。最新版 5.8.2 已經發布,有如下更新:
1,現在大部分網站已經部署HTTPS,大家對於安全越來越重視,順應潮流新增HTTPS多證書支持,每個網站都可以配置自己獨立的SSL證書,現在有2種方式支持網站部署HTTPS。
A、添加全服務器使用的SSL配置:如果需要,可以添加一個ssl配置為所有沒有單獨配置ssl的網站提供共享,這個配置,對支持泛域名的證書提供了方便。
方法是,修改jws.conf中的“CertificateFile”和“CertificateKeyFile”項,分別填寫證書文件和私鑰文件(絕對路徑)。
B、為指定的網站添加SSL配置:方法是修改網站配置文件,分別為“ssl.certificate”和“ssl.certificatekey”條目填寫證書文件和私鑰文件(絕對路徑)。
注1:網站啟用https,port必須設為443,並且UseHttps的值設為true。
注2:Jexus Https需要名為libssl的函數庫支持,如果你服務器沒有libss.so.xxx文件,需要安裝openssl。
對於通用版,把libssl注冊到 /usr/etc/mono/config中,即向這個文件添加一行(假設libssl的文件名是"libssl.so.1.0.0"):
“<dllmap dll="libssl" target="/lib/x86_64-linux-gnu/libssl.so.1.0.0" />”
對於獨立版,只需要把libssl軟連到 jexus的runtime/lib文件夾中就行,如:
“sudo ln -s //lib/x86_64-linux-gnu/libssl.so.1.0.0 /usr/jexus/runtime/lib/libssl.so”
注3:如果單獨為網站配備SSL證書,那麼該站的hosts項填寫的域名需要與SSL證書支持的域名一致。
2,新增AppHost(HTTP自宿主應用程序管理器)配置項,用於對Asp.net Core、Node.js、Tomcat等自宿主應用程序的管理和高速數據轉發,為自宿主服務程序提供了與站點操作相一致的同步管理和高可用性,為AppHost.Port(應用程序端口轉發)提供多端口支持。
3,啟用FastCGI的KEEP連接復用機制,進一步提升了與PHP等Fast CGI處理程序間的數據交換性能。
4,完善WebSockets的Close方法。
6,新增對HTTP PATCH方法的支持。
7,修復當使用Https向fastcgi、反向代理POST數據時,可能出現數據不完整的BUG。
8,靜態文件並發處理速度提升14%左右。
本版的亮點是新增“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環境參數。
AppHost的配置格式是:
AppHost={CmdLine=應用程序命令行; AppRoot=應用程序工作目錄; Port=應用程序HTTP偵聽端口},其中:
“CmdLine”表示啟動應用程序的命令行,如:dotnet /var/www/site1/app.dll;
“AppRoot”表示應用程序工作目錄,如:/var/www/site1;
“Port”表示這個HTTP應用程序所使用的偵聽端口,如:5000(Asp.Core默認端口是5000)。
例如,假設Asp.Net Core應用程序存放的路徑在“/var/www/mysite”,其啟動程序存放在該文件夾中,名稱是“webapp”,程序啟動後的偵聽端口是5000,那麼,AppHost配置應為:
AppHost={CmdLine=/var/www/mysite/webapp;AppRoot=/var/www/mysite; port=5000 }
下面我們實例介紹下Centos 配置ASP.Net Core+ Jexus 運行環境
用Visual Studio 2015 Update 3安裝.net core 1.1 ,創建一個asp.net core項目,我的代碼放在https://github.com/geffzhang/AspNetCoreStarted
安裝jexus5.8.2獨立版(推薦)
cd /tmp wget linuxdot.net/down/jexus-5.8.2-x64.tar.gz tar zxvf jexus-5.8.2-x64.tar.gz cd jexus/ cd siteconf/ vi default
添加AppHost
格式: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程序用於生產環境具有重要的意義。
在Jexus 接管之前試試,確保應用在服務器上運行正常
啟動jexus 服務接管應用的管理
cd /usr/jexus
./jws start
用浏覽器訪問下我們的網站 http://52.175.35.6/ :
我們檢查下/tmp 目錄下的日志輸出:
已經生成了我們所要的日志:
OutLog輸出的日志很多呀。產品運營環境用的時候,應該把日志級別提高到err級,這樣會少很多記錄,而且不影響速度,少不產生日志會大大提升性能。日志的等級可以這麼設置:
我們再來看看Jexus 和 asp.net core的進程
上圖可以看到的確已經是jexus監控下的子進程了。