最新回復 (2)
-
******************************************************
*** Jexus web server for linux V5.8.x 版的安裝使用 ***
******************************************************
Jexus web server for linux 是一款基于mono環(huán)境,運行于Linux/unix操作系統之上,以支持ASP.NET為核心功能的高性能WEB服務器。
www.linuxdot.net是Jexus web server官方網站,也是國內最權威的mono技術、.NET跨平臺開發(fā)技術的綜合社區(qū)。
為了確??沙掷m(xù)良性發(fā)展,Jexus已開始接受各位愛心人士的資金捐助,支付寶帳號是 j66x@163.com 。
Jexus V5.8.x有如下功能特點:
01、高性能ASP.NET服務器。這是Jexus的核心功能。不管是穩(wěn)定性、易用性還是并發(fā)承載能力、并行處理速度,Jexus對ASP.NET的支持都是非常優(yōu)秀的;
02、支持Fast-CGI協議。通Fast-CGI,Jexus能支持包括PHP在內的所有擁有Fast-CGI服務功能的WEB應用;
03、具有強勁的反向代理功能,同時支持多目標負載均衡。靈活運用Fast-CGI以及反向代理,Jexus可以讓你的網站與各種不同類型資源(如aspx/php/jsp)實現無縫整合。
04、具有比反向代理更輕量速度更快的“端口轉發(fā)”功能,適合于整合具備http偵聽功能的本機應用程序,比如Asp.net Core或者Tomcat.
05、具備基于正則表達式的強大的URL重寫功能;
06、擁有強大的流媒體支持能力,支持FLV/F4V視頻文件拖動播放,支持微軟平滑流媒體技術;
07、具備可控的“ASP.NET前置緩存”,能大大提升ASP.NET網站的承載能力和響應速度;
08、支持Https,具有SSL加密數據安全傳輸能力;
09、具有基礎而實用的入侵檢測功能,能自動終止已被識別的非法請求;
10、提供符合OWIN標準的應用層接口,支持Nancy、SignalR等符合OWIN標準的應用框架,支持WebSocket;
11,提供AppHost管理器功能,能將asp.net core或node.js、tomcat等“自宿主”式的以控制臺方式運行的web應用程序與網站整合,納入jexus統一管理;
一、安裝:
安裝前的準備工作:
* 需要libc2.3.2或更高版本的支持(可用ldd --version查詢版本情況),如果需要啟用https,系統中還需具備libssl庫文件,比如libssl.so.0.9.8。
* 除Jexus獨立版外,系統需要安裝好mono 3.12.1 或更高版本(當前最新正式版本是mono 4.4.2.11)。
Mono的官方網址是:www.go-mono.com。
Mono的下載地址:http://www.go-mono.com/mono-downloads/download.html 。
Mono的具體安裝辦法,請參考 www.linuxdot.net 上的有關文章。
A、獨立版安裝:
cd /tmp
wget linuxdot.net/down/jexus-5.8.2-x64.tar.gz
tar -zxvf jexus-5.8.2.tar.gz
sudo mv jexus /usr/
sudo rm jexus-*
cd /usr/jexus
B、通用版安裝與更新:
安裝命令: curl jexus.org/5.8.x/install | sh
更新命令: curl jexus.org/5.8.x/upgrade | sh
二、運行測試
復制完Jexus的文件后,Jexus就可以正常工作了。
所以,如果你的系統只要mono已經成功安裝,jexus就可以直接使用,甚至連進一步的配置也完全不需要。
如果是升級安裝,你只需要用運行 “sudo ./jws start”即可啟動JWS,如果不能正常工作,常常是新版本的配置方式可能有變,你可以查查jws.conf等配置文件。
強調:如果你服務器安裝有其它的WEB服務器,而且該服務正在運行,請停止它,以免造成端口沖突而造成Jexus無法啟動。
如果是全新安裝,請首先建立一個默認的網站文件夾:/var/www/default,并在里面新建一個簡單的網頁,比如index.html。
然后在Jexus工作文件夾(/usr/jexus/)中執(zhí)行“sudo ./jws start”命令(需要root身份),啟動jexus。
1、用cat log/jws.log,看看jws日志文件有沒有什么出錯的提示。
2、如果沒有錯誤提示,請訪問一下這臺服務器,看看是否有jexus的歡迎頁,網址是:http://服務器IP地址/info
3、如果已經在網站中放有首頁或其它網頁,你就可以訪問這些網頁了。
三、Jexus web server 配置(不是必須的,這兒寫出來,是為了用戶更好的理解jexus的工作原理):
在 jexus 的工作文件夾中(一般是“/usr/jexus”)有一個基本的配置文件,文件名是“jws.conf”。
jws.conf 中至少有 SiteConfigDir 和 SiteLogDir 兩行信息:
SiteConfigDir=siteconf #指的是存放網站配置文件放在siteconf這個文件夾中,可以使用基于jws.exe文件的相對路徑
SiteLogDir=log #指的是jexus日志文件放在log這個文件夾中,可以使用基于jws.exe文件的相對路徑
重要提示:
必須為Jexus指定并創(chuàng)建兩個專用文件夾:一個是用于存放日志文件的“日志文件夾”,一個是存放網站配置文件的“網站配置文件夾”。
日志文件夾必須讓jexus系統有寫入權,因為它會在這兒寫入jexus系統日志、網站訪問日志等重要內容,安裝程序中已經建了一個文件夾,名字是log。
網站配置文件夾是用存放網站配置文件的地方(安裝包中已經建了這個文件夾,名字是siteconf),既使只有一個網站,也必須有這個文件夾,因為jexus啟動時會從這個文件夾讀取網站配置的內容。
即,默認情況下,Jexus的文件夾結構是:
/usr/jexus #JWS工作目錄
/usr/jexus/siteconf #網站配置目錄
/usr/jexus/log #日志目錄
四、網站配置
Jexus支持多站點,可以用不同的端口、域名、虛擬路徑設置任意多的網站。
必須把所有網站配置文件放到jws.conf指定的網站配置文件夾內(這個文件夾常常jws工作目錄內的“siteconf”文件夾),這個文件夾除了網站配置文件,不能有其它任何文件,因為jexus會認為這兒的任何一個文件都代表著一個不同的網站。
每個網站有且只有一個配置文件,配置文件的文件名就是這個網站的名稱,比如 www.mysite.cn這個網站,配置文件名可以寫成“mysite”,當然也可以寫成其它文件名,以便管理員容易記憶和識別,但要特別注意:文件名不能有空格!
一個網站可以擁有任意多的域名,不同網站不能有相同的域名,沒有域名的網站只能有一個,這個沒有域名的網站叫做“默認網站”,而一臺服務器最多只能有一個默認網站。
*** 再次強調:
1、網站配置文件的文件名不能有空格;
2、網站配置文件夾中只能有網站配置文件,不能有其它文件文件存在,因為這里的每一個文件,都被視為網站配置文件。
下面以www.mysite.cn為例,說說網站的配置
在網站配置文件夾中建立一個文件,這個文件的名稱應該有一些意義(至少要能讓服務器管理員了解這個配置文件是屬于哪一個網站的)
設這個網站的配置文件的文件名為:mysite
sudo miv mysite
A、網站配置的基本內容:
port=80 # jexus WEB服務器偵聽端口(必填。當然可以是其它端口)
root=/ /var/www/mysite # 網站URL根路徑(虛擬目錄)和對應的物理路徑,兩個路徑字串之間必須用空格分開(必填。既使這個網站是一個純粹的反向代理站,也得填)
#可選項
hosts=mysite.cn,www.mysite.cn # 網站域名(建議填寫),可以用泛域名,比如:*.mysite.cn(不填此項或只填一個“*”號表示這是默認網站,一個端口只能有一個默認站)
indexs=index.aspx,index.htm # 首頁文件名,可以寫多個,用英文逗號分開(可以不填。因為JWS系統含有常用首頁名)
addr=0.0.0.0 # 綁定到服務器本機的某個IP地址,默認情況下是所有地址,即“0.0.0.0”。
aspnet_exts=mspx,ttt # 添加新出現的或自定義的ASP.NET擴展名(不建議填。多個擴展名用英文逗號分開,不加點號。系統含有常用擴展名)
B、最簡配置示例
最簡配置只需port和root兩項,如:
port=80
root=/ /var/www/default
注:以上兩個條目的含義:“port=80”指本網站的服務端口是80(標準的WEB服務端口);“root=/ /var/www/default”是指該網站的的虛擬根路徑是“/”,所對應的物理文件夾的絕對路徑是“/var/www/default”,即網站的內容必須放到“/var/www/default”這個文件夾中。
C、網站配置的高級選項 (閱讀建議:建議初學者跳過本小節(jié))
網站配置的高級選項全是可選項,應該根據網站的實際需要選填。
靈活使用高級選項,可以架設出一臺與眾不同的、功能強大的服務器平臺或者服務器群組。
1、使用“URL重寫”功能
URL重寫是指WEB服務器將訪問者的請求URL路徑資源按指定的匹配規(guī)則解釋和匹配為另外的一個真實RUL路徑資源。
比如,希望別人訪問“.php”類型的文件時,服務器返回 /404.html 這個文件:
rewrite=^/.+?\.(asp|php|cgi)$ /404.html
# 格式:
# “rewrite=”的后面是兩部分阻成,兩部分之間由一個空格分開。
空格前是匹配的條件:用正則表達式描述URL的匹配條件。
空格后是匹配的目標:指的是如果用戶訪問的路徑合乎前面的匹配條件,服務器將以哪個規(guī)則回應。
又如:
把“/bbs”解析為“/bbs/index.aspx”,把“/bbs/file-1” 匹配為 “/bbs/show.aspx?id=1”:
rewrite=^/bbs$ /bbs/index.aspx
rewrite=^/bbs/file-([0-9]{1,6})$ /bbs/show.aspx?id=$1
格式解釋:rewrite的等號后含有兩部分內容,用空隔分開。前半部分是一個正則表達式,用于描述需要URL重寫的(用戶瀏覽器中的)url路徑樣式,后半部分是當用戶的URL合乎前面的正則表達式時,JWS應該重寫和訪問的真實URL路徑。
2、禁止或允許某IP或IP段訪問網站
A、只允許某些IP地址訪問網站(白名單功能)
默認情況下,允許所有IP地址訪問。如果手工設置IP地址白名單,那么,白名單之外的IP地址會自動歸入黑名單。
配置格式,形如:
allowfrom=1.2.3.*
AllowFrom=2.2.3.3
B、禁止某IP或某IP端訪問網站(黑名單功能)
默認情況下,本配置為空。如果手工添加需要禁止訪問的IP地址(段),必須合乎一個規(guī)則:黑名單必須是白名單的真子集。
配置格式,形如:
denyfrom=111.222.111.*
denyfrom=101.201.1.132
3、禁止訪問某文件夾及其子文件夾中的內容
DenyDirs=網站文件夾路徑的URL路徑,如 “/abcfiles”或 “~/abcfiles”,多個路徑,用英文逗號分開
4、是否對請求的URL等進行安全檢測
本選項默認是true,即需要檢查,除非你的確需要關掉這個選項,否則可以不填,格式如下:
checkquery=false
(關掉本項可以提高服務器速度,但就安全而言,不建議關掉它)
5、NOFILE(無文件)功能
nofile=/mvc/controller.aspx
(注:這是Jexus特有的功能,指的是如果服務器不存在用戶要訪問的文件,服務器將使用什么文件應答。)
(提示:路由后,原RUL路徑會存貯在Jexus特有一個服務器變量“X-Real-Uri”中)
(技巧:用這個功能,或者再加上URL Rewrite功能,你完全可以把URL路徑與真實路徑隔離開來,達到信息隱藏和簡化URL的作用。)
6、NOLOG(無日志)功能
nolog=yes
(注:禁用網站日志功能會提高WEB服務器系統的的處理速度,但不足也是明顯的,就是你無法詳細了解網站的訪問情況了)
7、長連接開關
keep_alive=true
注:默認使用長連接,可以不填。
8、反向代理功能
reproxy= /abc/ http://www.xxxx.com:890/abc/
參數的值由本站RUL根路徑和目標網站URL根路徑兩部分組成,之間用空隔分開。
*技巧:反向代量的目標地址可以有多個,用英文逗號分隔,如:
reproxy=/abc/ http://192.168.0.3/abc/,http://192.168.0.4/abc/
這時,當用戶訪問/abc/時,jexus就會隨機選擇一臺服務器進行訪問,達到負載均衡或服務器集群的效果。
9、接受FAST-CGI提供的服務
對于TCP連接:
fastcgi.add=需要fast-cgi處理的文件擴展名|tcp:fast-cgi服務的IP地址:端口
如:fastcgi.add=php,php3|tcp:127.0.0.1:9000
對于unix sockets:
fastcgi.add=需要fcgi處理的文件擴展名|socket:路徑
如:fastcgi.add=php,php3|socket:/tmp/phpsvr
10、啟用gzip壓縮功能
UseGzip=true # 默認已啟用
解釋:啟用這個功能后,當用戶訪問“.htm”“.js”等文件時,Jexus會將這些文件進行GZIP壓縮后發(fā)送給用戶瀏覽器,這樣,可以節(jié)約更多的網絡帶寬。
11、讓Jexus的工作進程和網站工作于指定的用戶權限(身份)下
在jws.conf中,添加一句:httpd.user=系統中已經存在的一個用戶名,如httpd.user=www-data
12、讓Jexus的工作進程和ASP.NET網站工作在指定的ASP.NET版本環(huán)境中
在jws.conf中,添加一句:Runtime=版本號,如:Runtime=v4.0.30319
注:本項配置只適合jexus5.6及以下低版本。
13、啟用“ASP.NET前置高速緩存”,提高網站ASP.NET應用的反應速度,減小服務器壓力
這是Jexus特有的功能。功能很強勁、很實用。
方法是:在需要啟用WEB平臺級高速緩存的ASPX頁面中加入“<%Response.AddHeader("PageCache-Time","60");%>”一句就行了,其中“60”是超時時間,單位為秒。
14、啟用HTTPS進行SSL安全傳輸
A、添加全服務器使用的SSL配置:如果需要,可以添加一個ssl配置為所有沒有單獨配置ssl的網站提供共享,這個配置,對支持泛域名的證書提供了方便。
方法是,修改jws.conf中的“CertificateFile”和“CertificateKeyFile”項,分別填寫證書文件和私鑰文件(絕對路徑)。
B、為指定的網站添加SSL配置:方法是修改網站配置文件,分別為“ssl.certificate”和“ssl.certificatekey”條目填寫證書文件和私鑰文件(絕對路徑)。
注1:網站啟用https,port必須設為443,并且UseHttps的值設為true。
注2:Jexus Https需要名為libssl的函數庫支持,如果你服務器沒有l(wèi)ibss.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證書支持的域名一致。
15、啟用多進程并行服務
默認配置下,jexus是以單進程模式工作的,單進程的好處是配置簡單,節(jié)約內存,但弱點也很明顯,比如,難以充分發(fā)揮多cpu多核的性能優(yōu)勢,大并發(fā)承受力、容災力較多進程弱等等。
因此,在多CPU(核)的服務器上開啟多進程,有利于提高處理速度、大并發(fā)承載能力以及服務的穩(wěn)定性和容錯能力。
開啟多個工作進程的辦法:修改jws.conf文件中的httpd.processes行,去掉前邊的#號,并在等于后填上需要開啟的進程數量(不超過cpu核數+1,同時,最多不超過24個)。
強調:開啟多進程后,ASP.NET網站的Session狀態(tài)服務不能再使用inproc模式,而應該使用“StateServer”等其它模式并在Web.config中配置“machineKey”,否則會出現Session數據丟失等現象。
16、限制每個工作進程對內存和cpu資源的消耗量
這是5.5版開始啟用的參數,在jws.conf中設置,格式是。
httpd.MaxTotalMemory=所有工作進程可消耗的物理內存總量。單位是“兆字節(jié)”,可取值范圍是256-服務器可用物理內存大小的整數,同時,平均到每個工作進程不能少于128m,0表示由jexus根據物理內存的大小自動設置。
httpd.MaxCpuTime=單個工作進程可消耗Cpu資源的總時間。單位是“秒”,可取值范圍是300-14400的整數。0表示禁用此項
17、應用程序端口轉發(fā)
格式:AppHost.Port=端口號
本配置指的是將當前配置的網站端口的數據轉發(fā)到應用程序偵聽端口,比如可以把該站80端口的請求轉發(fā)到Asp.net Core應用程序的5000端口上。
端口轉發(fā)與反向代理功能相近,但端口轉發(fā)的性能更高。
注意:一是端口轉發(fā)不能用于虛擬路徑不是“/”的網站;二是端口轉發(fā)只能在同一服務器上進行。
18、AppHost功能:驅動自宿主WEB應用程序
格式:AppHost={CmdLine=命行行; AppRoot=工作路徑; Port=端口號}
說明:CmdLine:必選項。表示啟動這個web應用程序的命令(含參數),如 CmdLine=/var/www/mysite/webapp
AppRoot:必選項。表示這個應用程序的工作目錄,如:AppRoot=/var/www/mysite
Port:可選項。表示這個應用程序的偵聽端口,多個端口用英文逗號分隔(注:如果沒有填寫這一項,就請在AppHost.port或reproxy中填寫端口號,否則,請求數據無法轉發(fā)給應用程序)。
Env:可選參數。表示這個應用程序工作時需要的環(huán)境變量,如 Env=(PATH=/myhost/bin:$PATH),多個設置用英文逗號分開。
ErrLog:可選項。表示將這個應用程序的異常輸出重定向到指定的文件(需填寫完整路徑);
OutLog:可選項。表示將這個應用程序的控制臺輸出重定向到指定的文件(需填寫完整路徑);
User: 可選項。以指定的用戶身份運行該應用程序,默認為root身份。
注意:
1,AppHost像AppHost.Port一樣,不支持虛擬路徑;
2,AppHost功能是將指定的具有http服務能力的web應用程序納入jexus工作進程進行管理,對Asp.Net Core或Node.js等自宿主web程序用于生產環(huán)境具有重要的意義。
五、操作Jexus:
1、基本操作:
原jws.start等命令在Jexus V5.8.x中已經合并為一個單一命令,即“jws”,這是一個shell腳本文件。
命令參數與對應的功效:
jws start : 啟動Jexus;
jws start 網站名 : 啟動指定的網站
jws restart : 重啟Jexus
jws restart 網站名 : 重啟指定的網站
jws stop : 停止Jexus
jws stop 網站名 : 停止指定的網站
jws regsvr : 注冊jexus所需要的全局程序集(本命令只在安裝或更新jexus后才用,而且必須用一次,jexus獨立版不需要本命令)。
jws status : Jexus是否在運行中
jws -v : 顯示Jexus的版本號
注意,這些腳本的擁有者應該是root,并且擁有可執(zhí)行權限。
2、讓Jexus能隨服務器的啟動而自動啟動:
方法是:在/etc/rc.local文件的加入“/usr/jexus/jws start”一行。注意,路徑應該是你系統中JWS的實際路徑,不要把路徑寫錯了。
六、卸載:
1、在rc.local文件中刪除你手工添加的開機自動啟動Jexus的命令行(如果本來就沒有添加過,這步操作就不必做了)
2、刪除jexus文件夾及全部內容(建議只刪除*.exe和*.dll,其它的,比如網站配置文件等不必刪除,以便將來重新啟用)。
七、信息反饋、技術交流等聯系方式:
官方網站:www.jexus.org
技術社區(qū):www.linuxdot.net
QQ群號碼:102732979,103810355
郵箱地址:j66x@163.com
八、重要聲明:
1,Jexus V5.8.x 是免費軟件,可以自由下載、傳播和使用。但Jexus作者、發(fā)布者、維護者不對Jexus的用途、作用、效果、技術支持以及其它相關內容作任何明確或暗含的承諾,不負擔任何直接或間接的責任。
2,為了確保Jexus的良性發(fā)展并為您提供更好的服務,Jexus需要得到廣大用戶和支持免費軟件發(fā)展事業(yè)的熱心人的大力支持:
A、您可以利用各種機會宣傳Jexus優(yōu)良品質、實用價值及成功案例,為Jexus的發(fā)展進步搖旗助威;
B、您可以為初學者解難答疑,發(fā)布使用心得和技術理論,為推廣、普及Jexus的部署和應用作出貢獻;
C、你可以將Jexus的一些重要的技術文檔翻譯為英文或其它文字并公開、免費發(fā)布,為Jexus跨出國門走向國際添磚加瓦;
D、您可以利用開發(fā)新工程或升級舊工程的機會,利用Jexus把原來部署在WINDOWS上的WEB應用部署到Linux上;
E、您可以通過Jexus社區(qū)、QQ群、郵箱等各種渠道及時反饋Jexus的BUG,或者向Jexus的開發(fā)者、維護者提供富有建設性意義的各種建議;
F、您可以為Jexus提供廣告支持,或向開發(fā)者提供適量的經費贊助,為Jexus的持續(xù)發(fā)展提供動力源泉,Jexus作者的支付寶賬號是 j66x@163.com 。