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

Jexus 是一款運行於 Linux 平臺,以支持  ASP.NET、PHP 爲特點的集高安全性和高性能爲一體的 WEB 服務器和反向代理服務器。最新版 5.8.2 已經發布,有以下更新:html

1,如今大部分網站已經部署HTTPS,你們對於安全愈來愈重視,順應潮流新增HTTPS多證書支持,每一個網站均可以配置本身獨立的SSL證書,如今有2種方式支持網站部署HTTPS。linux

   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」git

注3:若是單獨爲網站配備SSL證書,那麼該站的hosts項填寫的域名須要與SSL證書支持的域名一致。github

2, 新增AppHost(HTTP自宿主應用程序管理器)配置項,用於對Asp.net Core、Node.js、Tomcat等自宿主應用程序的管理和高速數據轉發,爲自宿主服務程序提供了與站點操做相一致的同步管理和高可用性,爲 AppHost.Port(應用程序端口轉發)提供多端口支持。web

3,啓用FastCGI的KEEP鏈接複用機制,進一步提高了與PHP等Fast CGI處理程序間的數據交換性能。centos

4,完善WebSockets的Close方法。安全

6,新增對HTTP PATCH方法的支持。服務器

7,修復當使用Https向fastcgi、反向代理POST數據時,可能出現數據不完整的BUG。併發

8,靜態文件併發處理速度提高14%左右。app

本 版的亮點是新增「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

上面引用自張善友的博客,原文地址爲: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還不算熟悉。

相關文章
相關標籤/搜索