Centos7安裝jexus,部署asp.net core,asp.net mvc

什麼是Jexus

官網解釋:https://www.jexus.org/php

    Jexus是一款Linux平臺上的高性能WEB服務器和負載均衡網關,Jexus Web Service,簡稱JWS,以支持ASP.NET、ASP.NET CORE、PHP爲特點,
同時具有反向代理、入侵檢測等重要功能。能夠這樣說,Jexus是.NET、.NET CORE跨平臺的最優秀的宿主服務器,
若是咱們認爲它是Linux平臺的IIS,這並不爲過,由於,Jexus不但很是快,並且擁有IIS和其它Web服務器所不具有的高度的安全性,
這是政府機構和重要企業對web服務器最必要也是最重要的品質需求。

1)支持多站點,同一端口能夠同時支持任何多的asp.net core應用程序;
2)應用程序啓動、中止、重啓與站點的啓動、中止、重啓等操做一致,無需手工管理asp.net core應用程序;
3)具備應用程序崩潰後自動重啓功能,爲企業級不間斷運行保障;
4)具備比反向代理更高的性能優點。
5)提供與IIS相同的HTTP環境參數。

 

 

  Jexus獨立版(專業版)的安裝自帶mono。也就是說只要安裝jexus便可,不用單獨安裝mono,其實他是把mono一塊兒打包在jexus中了html

但該版本只支持64位Linux操做系統,我安裝的centos7系統恰好知足要求前端

輸入命令: uname -r java

 

 這裏的.x86_64跟x86是有區別的,.x86_64實際上是32位像64位的一個過渡linux

具體:https://www.cnblogs.com/Totems/p/3198287.htmlweb

 

安裝jexus獨立版的命令是:注:運行安裝命令,須要操做者有root權限。正則表達式

 curl https://jexus.org/release/x64/install.sh|sudo sh  vim

輸入命令回車:能夠看到他會去下載文件:https://linuxdot.net/down/jexus-5.8.3-x64.tar.gz

windows

 

下載完成並保存後,就會執行一系列的解壓操做,能夠看到壓縮包裏面包含mono,因此不用單獨安裝了後端

最後提示操做ok

 

切換到jexus,從上面標記的圖片中能夠看到jexus路徑在: /usr/jexus 

而後啓動: sudo ./jws start 

 

 

若是訪問不成功,判斷80端口是否開啓

查看80端口是否開啓
firewall-cmd --query-port=80/tcp

 開啓80端口

firewall-cmd --add-port=80/tcp --permanent 

 關閉80端口

firewall-cmd --remove-port=80/tcp --permanent   # --permanent 永久生效,沒有此參數重啓後失效

 

firewall-cmd --list-ports #查看已開放的端口
firewall-cmd reboot # 重啓防火牆,端口當即生效,不須要重啓電腦

 

修改時間:

timedatectl set-timezone Asia/Shanghai 

而後重啓才能生效

 

重啓電腦相關命令:

shutdown -h 10          #計算機將於10分鐘後關閉,且會顯示在登陸用戶的當前屏幕中
 
 shutdown -h now       #計算機會馬上關機
 
shutdown -h 22:22     #計算機會在這個時刻關機
 
shutdown -r now        #計算機會馬上重啓
 
shutdown -r +10         #計算機會將於10分鐘後重啓

reboot                     #重啓
 
halt                         #關機

 

 而後輸入CentOS7的ip地址訪問,若是出現這個404的異常頁面,說明jexus啓動成功了

之因此會異常,因爲jexus的默認的網站配置文件指向的物理路徑是 /var/www/default 

這裏注意下,網站必須放在 /var/www/ 下,不能是其餘目錄

 

直接cd 進入,發現沒有這個路徑,只有var文件夾,

安裝jexus後,配置文件在 /usr/jexus/siteconf/default 

 cat default  能夠查看default的內容

 

 

咱們在/var下建立www文件夾,在www下建立default文件夾。建立完成後,進入 default文件夾,用vim編寫一個簡單的 index.html

能夠遞歸建立文件夾:  mkdir -p www/default 

 這樣就建立了www和default文件夾,

進入到default建立index.html 文件: touch index.html 

 編輯: vim index.html 單擊 i切換到輸入狀態,編輯完成後(我這裏輸入了:Hello Jexus),單擊Esc鍵,輸入:wq回車退出

vim相關命令:

按ESC鍵 跳到命令模式,而後: :w 保存文件但不退出vi :w file 將修改另外保存到file中,不退出vi :w! 強制保存,不推出vi :wq 保存文件並退出vi :wq! 強制保存文件,並退出vi :q 不保存文件,退出vi 在沒有進入insert狀態的時候 :q! 不保存文件,強制退出vi :e! 放棄全部修改,從上次保存文件開始再編輯

 

 剛上面啓動了jexus是沒有關掉的,你能夠先stop而後在start,固然你也能夠直接restart,

 sudo /usr/jexus/jws restart 

 

再次訪問就成功了

 

jexus啓動,中止命令,若是不是在jexus目錄的時候,能夠這樣

啓動:sudo /usr/jexus/jws start 中止:sudo /usr/jexus/jws stop 重啓:sudo /usr/jexus/jws restart 重啓指定網站:sudo /usr/jexus/jws restart siteName 中止指定網站:sudo /usr/jexus/jws stop siteName

 

若是進入了jexus目錄能夠直接這樣:

啓動:sudo ./jws start

重啓:sudo ./jws restart

中止:sudo ./jws stop

啓動某個網站: sudo start 網站名

重啓某個網站:sudo restart 網站名

中止某個網站:sudo stop 網站名

 

建立網站

jexus的網站配置文件在路徑: /usr/jexus/siteconf 下,siteconf中的每個文件都是一個網站配置文件

安裝jexus後,在/usr/jexus/siteocnf中,就已經有一個默認的網站配置文件,文件名叫「default」。

你能夠修改這個配置文件,也能夠將這個配置文件複製並修改成一個新站。
配置文件中,有關鍵的三項是必填項:
port:端口號定義
root:虛擬根路徑和物理根路徑的定義
hosts:域名定義

端口號(port)是一個整數,通常是80,也能夠是65535如下的其它整數,但這個端口號必須沒有其它服務程序佔用。
根路徑(root)由兩部分組成,中間用空格分開。空格前表示這個網站訪問時的虛擬根路徑(通常都是「/」),空格後是存放這個網站內容的文件夾的物理路徑(好比「/var/www/default」)。

這個 「/」 也能夠寫成 root=/cnblogs /var/www/default  但訪問的時候必須是 192.168.1.1/cnblogs 或者www.abc.com/cnblogs

域名(hosts),填寫訪問這個網站的域名,若是有多個域名,域名間就英文逗號分開,同時還能夠用「泛域名」,好比「*.mysite.com」。
網站名:jexus把網站配置文件的名稱,做爲網站名。
** 強調,網站配置文件名,不能有空格,第一個字符不能是「~」。

 

咱們能夠多建立幾個網站,把siteconf下的default複製一份

切換到siteconf,執行命令: cp -b default myCore 

修改root和hosts能夠看到hosts綁定了3個域名,分別用 ","分割

建立root對應的文件下的網站 /var/www/myCore

至於內容,能夠先用一個靜態頁面index.html

 

default網站默認不變:

重啓Jexus(注意,全部的配置,在配置以後都須要重啓Jexus)

而後在電腦綁定host

 

輸入192.168.1.101訪問的是默認的default站點

 

輸入www.abc.com,www.cde.com,www.nsky.com訪問的是myCore站點

 

 

 

說明jexus配置正確

 

jexus部署asp.net MVC

建立項目,新增jexus網站配置文件,以及上傳這裏就不說了

全部準備工做好了。只要簡單的修改root和hosts

 

輸入域名後出現了熟悉而傳統的界面:

 

jexus部署asp.net core

centos7 安裝net core 能夠看:http://www.javashuo.com/article/p-cwesmxjg-ez.html

新建一個默認的mvc core項目,本地運行效果

發佈:或者經過命令:dotnet publish -o f:\publish

不用跨平臺命令發佈centos7

dotnet pulish  --r centos.7-x64 --c release

dotnet pulish  --runtime centos.7-x64 --configuration release

其實在下面圖片中的目標運行時也能夠選擇則,本身能夠去嘗試

這裏:

部署模式選擇:框架依賴,(不用選擇獨立發佈:dotnet publish -c Release --self-contained)

目標運行時選擇:可移植

 

發佈後的文件:


上傳到CentOS上後能夠dotnet自宿主試下,能夠排錯,證實core程序是正常的

沒問題後,這個程序能夠關掉了

 

 

一樣的添加配置文件,上傳代碼,修改配置文件:

針對於Net core程序,須要修改AppHost配置 參考:https://www.cnblogs.com/shanyou/p/6107248.html

AppHost的配置格式是: AppHost={CmdLine=應用程序命令行; AppRoot=應用程序工做目錄; Port=應用程序HTTP偵聽端口},其中: 「CmdLine」表示啓動應用程序的命令行,如:dotnet /var/www/site1/app.dll; 「AppRoot」表示應用程序工做目錄,如:/var/www/site1; 「Port」表示這個HTTP應用程序所使用的偵聽端口,如:5000(Asp.Core默認端口是5000)。
沒有經過UseUrls指定端口,那麼默認就是5000,因此這裏能夠寫0便可,這是jexus和net core約定好了的

格式: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程序用於生產環境具備重要的意義。

# Asp.Net Core應用程序所使用的端口號,若是在程序中使用了UsrUrls自定義端口則使用UsrUrls中填寫的端口(不建議使用UsrUrls自定義端口),
在沒有使用UsrUrls自定義端口的狀況下端口號設置爲 0,
Jexus會在運行時與Asp.Net Core進行"協商"具體使用的端口號,避免多個應用分配
端口的麻煩和衝突的風險。

例如,好比我Asp.Net Core應用程序存放的路徑在「
/var/www/CoreDemo」,其啓動程序存放在該文件夾中,名稱是「core.dll」,程序啓動後的偵聽端口是5000,
那麼,AppHost配置應爲:

AppHost={CmdLine=dotnet /var/www/CoreDemo/core.dll;AppRoot=/var/www/CoreDemo;Port=0}

jexus反代,會把訪問者的IP地址記錄在HTTP頭的 X-Forwarded-For 和 X-Real-IP 兩個頭域中
(後者只記錄最近的一個IP,前者不但記錄最後的IP,也會繼承上一個代理服務器傳過來的IP)
,因此,你從Request中,就能獲得訪問者 的IP地址。

 

配置好後重啓jexus,還有就是發佈了項目後,也須要重啓jexus,若是AppHost.Port填寫的是5000,那麼對輸入ip會跳轉到

https://ip:5001,這個你們應該在本地是試過的,由於net core默認是支持https的,但jexus默認沒有配置https因此會異常,

 

我這裏AppHost.Port寫成0,也不能用https訪問,由於沒有證書

http訪問,提示不安全。可是能訪問到的

 

經過F12查看當前程序的Server,確確實實是Jexus

 

 

 

換成https顯然是不行的,具體怎麼配置https:https://www.cnblogs.com/jjg0519/p/8572202.html

官方文檔關於jexus配置https說明:https://www.linuxdot.net/bbsfile-2970

https://www.linuxdot.net/bbsfile-3125

第一步:登記SSL庫。
首先查看「/lib」或「/usr/lib」等系統庫文件夾中是否有SSL庫文件的名字,該文件名應該是「libssl.so.版本號」(find / -name libssl.so.*),若是沒有列出文件名,就證實你的系統尚未安裝OpenSSL,請安裝後再操做。
(注:個人系統的SSL庫文件名是:libssl.so.0.9.8)
用VIM打開 「/usr/etc/mono/config」這個文件,在「<configuration>」節中,添加下面這一句:
<dllmap dll="libssl" target="libssl.so.0.9.8" os="!windows" />
(注意:dll的值必定要填「libssl」,target的值必須填你係統/lib文件夾中的ssl庫文件名)

第二步:生成服務器端SSL證書和私鑰。
具體操做方法參見有關APACHE的SSL證書生成方法

第三步:把證書和私鑰文件名填寫到JWS的配置文件中。
在Jexus文件夾中,打開 「jws.conf」,添加下面兩句:
CertificateFile=證書文件路徑和文件名
CertificateKeyFile=私鑰文件路徑和文件名

第四步:開啓網站的HTTPS功能。
把網站服務端口改成443:
port=443
啓用https:
UseHttps=true
View Code

 

 

最終core的配置文件是:

 

 這裏CmdLine 能夠簡寫: AppHost={CmdLine=dotnet core.dll;AppRoot=/var/www/CoreDemo;Port=0} 

由於root已經指定了全路徑

 

設置jexus開機自動啓動

若是服務器重啓,必須手動啓動jexus,因此應該建立一個服務,經過服務啓動jexus

1.新建 jexus.service

cd /lib/systemd/system
vim jexus.service

添加以下命令並保存

[Unit]
Description=jexus
After=network.target
[Service]
Type=forking
ExecStart=/usr/jexus/jws start
ExecReload=/usr/jexus/jws restart
ExecStop=/usr/jexus/jws stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

執行命令,加入服務: systemctl enable jexus.service 

 啓動服務: systemctl start jexus.service 

查看服務狀態: systemctl status jexus.service 

 

 重啓測試:輸入命令: rebootCentOS會重啓,而後再次看服務狀態,是否啓動,輸入ip可否訪問成功,都成功的話,說明開機啓動成功

 

 jexus配置方法兩種

1:端口轉發,從5.8.2開始支持,上面配置的AppHost就是端口轉發

2:反向代理:reproxy模塊,使用代理就能實現負載均衡

端口轉發的原理:收集於網絡

關於端口轉發模式下獲取訪問者IP地址的問題,目前5.8.1還不支持,從5.8.2開始,能夠從請求的Http頭中的「X-Real-IP」獲取對方IP地址。

參考:http://www.javashuo.com/article/p-keveoewf-en.html

 1     /// <summary>
 2     /// Jexus Server Middleware
 3     /// </summary>
 4     public class JexusMiddleware
 5     {
 6         readonly RequestDelegate _next;
 7         public JexusMiddleware(RequestDelegate next, ILoggerFactory loggerFactory, IOptions<IISOptions> options)
 8         {
 9             _next = next;
10         }
11 
12         public async Task Invoke(HttpContext httpContext)
13         {
14             var headers = httpContext.Request.Headers;
15 
16             try
17             {
18                 if (headers != null && headers.ContainsKey("X-Original-For"))
19                 {
20                     var ipaddAdndPort = headers["X-Original-For"].ToArray()[0];
21                     var dot = ipaddAdndPort.IndexOf(":", StringComparison.Ordinal);
22                     var ip = ipaddAdndPort;
23                     var port = 0;
24                     if (dot > 0)
25                     {
26                         ip = ipaddAdndPort.Substring(0, dot);
27                         port = int.Parse(ipaddAdndPort.Substring(dot + 1));
28                     }
29 
30                     httpContext.Connection.RemoteIpAddress = System.Net.IPAddress.Parse(ip);
31                     if (port != 0) httpContext.Connection.RemotePort = port;
32                 }
33             }
34             finally
35             {
36                 await _next(httpContext);
37             }
38         }
39     }
40 
41     /// <summary>
42     /// Extensions
43     /// </summary>
44     public static class WebHostBuilder
45     {
46         /// <summary>
47         /// 啓用JexusIntegration中間件
48         /// </summary>
49         /// <param name="builder"></param>
50         /// <returns></returns>
51         public static IWebHostBuilder UseJexusIntegration(this IWebHostBuilder builder)
52         {
53             if (builder == null)
54             {
55                 throw new ArgumentNullException(nameof(builder));
56             }
57 
58             // 檢查是否已經加載過了
59             if (builder.GetSetting(nameof(UseJexusIntegration)) != null)
60             {
61                 return builder;
62             }
63 
64             // 設置已加載標記,防止重複加載
65             builder.UseSetting(nameof(UseJexusIntegration), true.ToString());
66 
67             // 添加configure處理
68             builder.ConfigureServices(services =>
69             {
70                 services.AddSingleton<IStartupFilter>(new JwsSetupFilter());
71             });
72 
73             return builder;
74         }
75     }
76 
77     class JwsSetupFilter : IStartupFilter
78     {
79         public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
80         {
81             return app =>
82             {
83                 app.UseMiddleware<JexusMiddleware>();
84                 next(app);
85             };
86         }
87     }
88 
89 
90 //使用:
91 WebHost.CreateDefaultBuilder(args)
92 .UseStartup<Startup>()
93 .UseJexusIntegration();
View Code

 

 

 

  一,關於負載均衡:
    用jexus的reproxy(反向代理)功能,就能實現負載均衡。例如,你有三臺服務器,其中一臺IP地址是 1.1.1.1是負載均衡服務器,用於對外服務,對內分發工做負載,另外兩臺是工做服務器,IP地址分別爲 2.2.2.一、2.2.2.2,工做端口是8088。那麼,你在 1.1.1.1這臺服務器上安裝上jexus,並在網站配置文件上做以下配置就行:
    reproxy=/  2.2.2.1:8088, 2.2.2.2:8088

      利用Jexus的「多目標反向代理」功能,咱們很容易實現多服務器的負載均衡,構成一個WEB服務器集羣,大大提升網站的負載能力。 Jexus反向代理有一個特色:若是前端服務器本地網站中有內容,它就會直接使用前端服務器的本地內容,而不會將請求發送給後端服務器。
      據咱們所知,對於網站,一個ASPX網頁上經常會含有圖片、JS、CSS等大量的靜態文件,其比例甚至能夠達到一比三十或更多,所以,若是你但願爲靜態文件提供更快的反應速度,你只須要把靜態文件放到前端服務器對應網站的對應文件夾下就行。

Jexus的反代很靈活,既能夠以文件夾爲單位對某個單一目標進行反代,也能夠整站反代,關鍵是看你怎麼設置。   
好比:若是目標網站是: http://a.b.com/    
那麼,你就能夠設:    reproxy=/ http://a.b.com/    
這就是整站。甚至還能夠把一個整站做爲你的一個虛擬路徑:    
如:    reproxy=/blog/ http://blog.xy.com/

 

    二,關於Session同步:
    同步的方法不少,對於asp.net而言,你能夠將兩臺工做服務器的session配置成同一臺state server上,好比上例中,你能夠把1.1.1.1做公用的state server;另外還有一個更省力的方法,是利用jexus反向代理的Index關鍵字,把相同IP地址的請求轉發到同一臺服務器上,這時配置以下:
    reproxy=/ 2.2.2.1:8088, 2.2.2.2:8088 |Index=ip

 

默認狀況下,Jexus web server是以單進程模式運行的,當修改jws.config配置文件,把httpd.processes的值設置爲大於1的數字時,JWS就會按指定的數量以多進程的方式並行工做。
    Jexus多進程並行工做,能夠更充分地利用多CPU的性能優點,提升大併發負載能力和處理速度,同時,多進程並行,也是高可用性服務的必然需求。

詳情: https://www.linuxdot.net/bbsfile-3301
    多進程時,須要特別注意以下兩個方面:
    一、 不要將Session保存在進程內,即web.config中的sessionState不能配置爲Inproc,應該使用同一臺 Session state服務器對session信息進行保存。如:能夠配置爲 「<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="20" /& gt;」。
    二、須要配置machineKey。Jexus多進程並行時,相於當多主機羣集工做,所以,必須在Web.Config文件中 配置machineKey。若是沒有這個設置,網站就會出現諸如數據「沒法驗證的錯誤」之類的問題。下面是一個machineKey的參考配置:
<machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/> 
    注:Jexus自帶State服務,若是沒有其它需求,通常不須要再配置配置其它的狀態服務器。

 

注意:
     多臺服務器同時爲同一個網站提供服務,存在着一個session同步的部題。在Jexus上同步session很方便:你只須要把每一個網站的State服務器IP地址指向同一臺服務器IP地址就行。具體方法是,修改網站的web.config,在system.web節中加入:
<sessionState mode="StateServer" stateConnectionString="tcpip=x.x.x.x:42424" timeout="60" />

Jexus對State服務器的控制能力比較強,一旦State服務器的服務程序崩潰退出,Jws就會在10秒以內自動重啓它,因此,就機制而言,其穩定性是很高的,通常不會出現問題

 

CentOS上的網站是這個

 

 而後我在本地部署一個網站做爲工做服務器

 

如今我在工做服務器訪問CentOS讓jexus又代理回,調用個人工做服務器的站點

注意:端口轉發和代理只能用一個,因此這裏先註釋掉端口轉發,配置代理

爲了測試負載,因此我配置了2個域名,我特地找的這個是沒有https的。

要否則代理過去跳轉到了htts,沒有證書訪問不了

原本想在本地多部署幾個,但centos要開通端口才能訪問

reproxy=/ 192.168.1.102,www.xinhuanet.com

配置好後,重啓jexus,而後多刷新幾回,就會在我配置的這兩個域名之間切換,達到負載的目的了

能夠看到ip地址沒有變的,但顯示的內容變了,一個是我本地的Demo,一個是新華網,固然我這裏只是測試,正式環境確定都是同一個網站

 

 

 

關於驗證碼

windows是能夠獲取自定義字體的,好比IIS服務器沒有字體,能夠把字體放到項目中,而後代碼加載便可

但在Linxu是不行的,必須安裝。

  在/usr/share/fonts建立一個文件夾,好比:myfonts  在windos中把須要的在字體拷貝到該文件夾下(不必定是這個目錄。只是便於管理,統一放在fonts文件夾下)

cd進入該目錄。執行命令:

fc-cache -fv

若是提示:-bash: fc-cache: command not found

則yum安裝便可:yum install fontconfig

安裝完成,刷新網站即成功

參考:https://javawind.net/p130?date=2013-7-1

  https://www.cnblogs.com/24la/p/linuxcsharp-validcode-show.html

jexus多網站配置

其實跟着上面下來,已經配置了多個網站,除了core網站是IP其餘3個都指定了hosts,能夠看到有4個網站配置文件

 

我本地也經過host綁定了域名,測試也都成功了。這裏就不截圖演示了

 

Jexus 更新步驟

1,中止jws,並把 /usr/jexus 這個舊的文件夾改名備份
2,以 root 身份用下邊這個命令新裝jexus(如不是root登陸,能夠用 sudo -s 命令切換成root身份):
    獨立版安裝命令:curl https://jexus.org/release/x64/install.sh|sh
    通用版安裝命令:curl https://jexus.org/release/install | sh
3,從備份的jexus文件夾的siteconf文件夾中把過去的配置文件複製到/usr/jexus的對應文件夾中;
4,把其它本身添加的東西,好比證書之類的從備份文件夾複製到對應位置;
5,試運行,正常後,把備份文件夾刪除。


其實就三步:
改名備份
從新安裝
恢復配置

 

 其實jexus遠遠不止我列出的這點,還有不少東西須要研究,暫時就不寫了

最後把CoreDemo的配置文件放出來,供你們參考

######################
# Web Site: CoreDemo 
########################################

port=80

#root=/ /var/www/myCore
root=/ /var/www/CoreDemo
hosts=*    #OR your.com,*.your.com
#hosts=www.core.com

# addr=0.0.0.0
#本選項默認是true,即須要檢查,除非你的確須要關掉這個選項,
#不然能夠不填,格式以下:(關掉本項能夠提升服務器速度,但就安全而言,不建議關掉它)
# CheckQuery=false
NoLog=true
# AppHost={CmdLine=/usr/local/x/xx;AppRoot=/usr/local/x;Port=5000}
#AppHost={
 #  CmdLine=dotnet /var/www/CoreDemo/core.dll;
  # AppRoot=/var/www/CoreDemo;
  # Port=0;
  # OutLog=/tmp/out.txt;
  # Error=/tmp/err.txt;
   #env=(PATH=/usr/local/bin:/var/www/aspnetcore:$PATH);
}
#AppHost={CmdLine=dotnet core.dll;AppRoot=/var/www/CoreDemo;Port=0}
#AppHost={CmdLine=/var/www/CoreDemo/core;AppRoot=/var/www/CoreDemo;Port=0}

#AppHost={Cmd=dotnet Domo.dll;AppRoot=/var/www/CoreDemo;Port=5000}
# NoFile=/index.aspx
# Keep_Alive=false
# UseGZIP=false

# UseHttps=true
#SSL證書路徑(若是須要使用https協議才填)
# ssl.certificate=/x/xxx.crt  #or pem
 #SSL密鑰文件路徑(若是須要使用https協議才填)
# ssl.certificatekey=/x/xxx.key
# ssl.protocol=TLSv1.0    # TLSv1.1 or  TLSv1.2...
# ssl.ciphers= 

#禁止某IP或IP段訪問本網站
# DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24
# AllowFrom=192.168.*.*

#禁止訪問某文件夾及其子文件夾中的內容,多個路徑,用英文逗號分開
# DenyDirs=~/cgi, ~/upfiles
# indexes=myindex.aspx

# Deny php,asp...
rewrite=^/.+?\.(asp|php|cgi|pl|sh|bash|dll)(\?.*|)$  /.deny->$1
rewrite=.*/editor/.+                                   /.deny->editor
# reproxy=/bbs/ http://192.168.1.112/bbs/
reproxy=/ 192.168.1.102,www.xinhuanet.com

# 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
View Code

 

官網論壇配置說明:https://www.linuxdot.net/bbsfile-3084

收集一些jexus配置

https://www.cnblogs.com/ruiy/p/6089874.html

下面以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系統含有經常使用首頁名)
aspnet_exts=mspx,ttt             # 添加新出現的或自定義的ASP.NET擴展名(不建議填。多個擴展名用英文逗號分開,不加點號。系統含有經常使用擴展名)


B、最簡配置示例
port=80
root=/ /var/www/default

C、網站配置的高級選項
網站配置的高級選項全是可選項,應該根據網站的實際須要選填。
靈活使用高級選項,能夠架設出一臺不同凡響的、功能強大的服務器平臺或者服務器羣組。

1、使用「URL重寫」功能
URL重寫是指WEB服務器將訪問者的請求URL路徑資源按指定的匹配規則解釋和匹配爲另外的一個真實RUL路徑資源。

好比,但願別人訪問「.php」類型的文件時,服務器返回 /404.html 這個文件:
rewrite=^/.+?\.(asp|php|cgi)$ /404.html
# 格式:
# 「rewrite=」的後面是兩部分阻成,兩部分之間由一個空格分開。
  空格前是匹配的條件:用正則表達式描述URL的匹配條件。
  空格後是匹配的目標:指的是若是用戶訪問的路徑合乎前面的匹配條件,服務器將以哪一個規則迴應。

又如:
把「/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段訪問本網站
denyfrom=111.222.111.*
denyfrom=101.202.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
注:V5.1版默認值是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    #即UseGzip
解釋:啓用這個功能後,當用戶訪問「.htm」「.js」等文件時,Jexus會將這些文件進行GZIP壓縮後發送給用戶瀏覽器,這樣,能夠節約更多的網絡帶寬。

11、啓用HTTPS進行SSL安全傳輸
本功能是對服務器與客戶之間的數據進行加密傳送,提供數據的保密性。具體方法請訪問www.linuxdot.net的專題講解。


7、Jexus操做:

1、基本的啓動命令的格式(僅做例子,不建議使用)
mono /usr/jexus/jws.exe
如:mono /usr/jexus/jws.exe
這個命令運行後,用 Ctrl+c 組合鍵退出程序

2、以「服務」方式進行後臺運行, 只須要基本命令後加一空格再加一「&」號(僅做例子,不建議使用)
mono /usr/jexus/jws.exe &

3、開機自動啓動:
在/etc/rc.local 或類試的開機啓動腳本中加入下面這一行命令:
mono /usr/jexus/jws.exe >/dev/null 2>&1 &
或者
/usr/jexus/jws.start  #推薦方式


(注意:不一樣的Linux系統可能有不一樣的啓動方式,用戶應根據不一樣系統的特色靈活定製)
(提示:jws.start是腳本文件,用戶能夠根據本身系統的特色去適當修改它,以便其啓動)

4、使用腳本操做Jexus(推薦使用):
Jexus自帶了三個腳本,分別是:jws.start、jws.restart、jws.stop。

功能1,對Jexus服務器操做:
jws.start     #啓動JEXUS服務,能夠寫入rc.local文件中,從而達到開機自啓動的目的;
jws.stop      #中止Jexus的運行。
jws.restart   #重啓Jexus;

功能2,對某個指定的網站操做:
jws.restart 網站名     #加載/啓動/重啓一個指定的網站
jws.stop 網站名        #中止一個指定的網站


注意,這些腳本須要具備可執行權限,同時操做者也必須擁有管理員(root)權限。


8、卸載:
1、在rc.local文件中刪除你手工添加的開機自動啓動Jexus的命令行(若是原本就沒有添加過,這步操做就沒必要作了)
2、刪除jexus文件夾及所有內容(建議只刪除*.exe和*.dll,其它的,好比網站配置文件等沒必要刪除,以便未來從新啓用)。
View Code

 

 

學習過程當中也參照了不少大神們寫的文章

張善友:

  http://www.cnblogs.com/shanyou/p/jexus582.html

  https://www.cnblogs.com/shanyou/p/6107248.html

  https://www.cnblogs.com/shanyou/p/5518152.html

https://www.cnblogs.com/shanyou/p/5518152.html

 

 http://www.cnblogs.com/staneee/p/6852559.html

https://www.cnblogs.com/stulzq/p/7324616.html

https://www.cnblogs.com/jackytang/p/9111902.html

高級配置:

https://www.cnblogs.com/msdynax/p/3735344.html

 

https://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html

https://www.cnblogs.com/shanyou/p/6107248.html

配置https服務:https://www.cnblogs.com/CKExp/p/8469831.html#3911195

相關文章
相關標籤/搜索