1. 程式人生 > >CentOs7 +Jexus 5.8.2部署Asp.Net Core WebApi 1.0生產環境

CentOs7 +Jexus 5.8.2部署Asp.Net Core WebApi 1.0生產環境

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 執行環境

上面引用自張善友的部落格,原文地址為:http://www.cnblogs.com/shanyou/p/jexus582.html

怎麼安裝.net runtime就不介紹了 官網都有地址:https://www.microsoft.com/net/core#linuxcentos

安裝jexus5.8.2獨立版(推薦)

cd /tmp
wget linuxdot.net/down/jexus-5.8.2-x64.tar.gz #下載程式 據作者說之後會有5.8.2.1,5.8.2.1裡面日誌使可以選擇不配置的。
tar zxvf jexus-5.8.2-x64.tar.gz #解壓
sudo mv jexus /usr #移動至usr下 cd /usr/jexus/ cd siteconf/ vi default #編輯檔案
修改為如下內容:
######################
# Web Site: Default 
########################################
port=80
root=/ /var/www/default
hosts=*    #OR your.com,*.your.com
AppHost={
CmdLine=dotnet /var/www/wechat/Elisoft.PMForWechat.Web.dll;
AppRoot=/var/www/wechat;
Port=5000;
OutLog=/tmp/wechatout.log;
ErrLog=/tmp/wechaterr.log;
} NoLog=false

補充一點:root中的路徑千萬千萬千萬不要和工作路徑(AppRoot)一致,不然打死也打不開。建議作為轉發web時root設定個不存在的路徑。

格式:AppHost={CmdLine=命行行; AppRoot=工作路徑; Port=埠號}
說明:CmdLine:必選項。表示啟動這個web應用程式的命令(含引數),如 CmdLine= dotnet /var/www/wechat/Elisoft.PMForWechat.Web.dll
       AppRoot:必選項。表示這個應用程式的工作目錄,如:AppRoot=/var/www/wechat
       Port:可選項。表示這個應用程式的偵聽埠,多個埠用英文逗號分隔(注:如果沒有填寫這一項,就請在AppHost.port或reproxy中填寫埠號,否則,請求資料無法轉發給應用程式)。
       Env:可選引數。表示這個應用程式工作時需要的環境變數,如 env=(PATH=/usr/local/bin:/var/www/aspnetcore:$PATH),多個設定用英文逗號分開。
       ErrLog:必選(保證路徑存在)。表示將這個應用程式的異常輸出重定向到指定的檔案(需填寫完整路徑),如果不原意輸出日誌,可以不用OutLog項。這時, jexus會自動關掉控制檯輸出(實質是重定向到/dev/null中了);
       OutLog:必選(保證路徑存在)。表示將這個應用程式的控制檯輸出重定向到指定的檔案(需填寫完整路徑);
       User: 可選項。以指定的使用者身份執行該應用程式,預設為root身份。

   在5.8.2.1及之後版本中ErrLog和OutLog為可選項。
注意:
   1,AppHost像AppHost.Port一樣,不支援虛擬路徑;
   2,AppHost功能是將指定的具有http服務能力的web應用程式納入jexus工作程序進行管理,對Asp.Net Core或Node.js等自宿主web程式用於生產環境具有重要的意義。

配置jexus開機自啟動:

在/lib/systemd/system 下建立檔案jexus.service

vi jexus.service

新增內容如下:

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

Description:描述服務

After:描述服務類別

[Service]服務執行引數的設定

Type=forking是後臺執行的形式

ExecStart為服務的具體執行命令

ExecReload為重啟命令

ExecStop為停止命令

PrivateTmp=True表示給服務分配獨立的臨時空間

[Install]服務安裝的相關設定,可設定為多使用者

修改時注意服務的路徑

p: 你也可以從/lib/systemd/system 資料夾下複製一個service結尾的檔案,改名後修改裡面的內容。

修改後 chmod 754 jexus.service 設定許可權

systemctl enable jexus.service 加入到服務中去

然後就可以暢快的使用服務命令去開啟、停止、重啟 jexus了。

好了reboot 看看效果吧

網上的方法我試了不好使,可能是我用的方法不對。linux還不算熟悉。