Asp.Net項目的部署到Linux中(Linux + Jexus+Nginx )


  因為老項目用的Asp.Net Web API技術開發部署到Window系統上,而新項目用的是.Net Core部署到Ubuntu系統中,所以在管理切換上有些不便。於是決定將老項目的測試服部署到Ubuntu中,試試水。

一、簡述

  要實現Asp.Net項目部署到Linux中,必須要通過Mono。Mono就相當於Window中的.Net Framework 是Linux中的.Net 運行時,不但可以運行在Linux中也可以運行在Window中。

  jexus是一款基於.NET兼容環境,運行於Linux/unix操作系統之上,以支持ASP.NET為核心功能的高性能WEB服務器。說白了就相當於Window中的IIS。jexus有專業版和通用版兩個版本。Jexus專業版中自帶Mono,不需要在客戶服務器安裝mono就能正常運行的Jexus版本,該版本只支持 64位Linux操作系統。Jexus通用版不帶Mono,因此,使用者應該首先在客戶機安裝mono和libgdiplus。為了避免不必要的麻煩我選擇專業版進行部署。

二、安裝

  2.1、下載:  

  地址:http://www.linuxdot.net/down/jexus-5.1.tar.gz

  2.2、解壓:
  tar -zxvf jexus-5.1.tar.gz

  2.3、安裝:
  解壓后,就直接可以使用。卸載的時候直接刪除這個文件夾就行,完全綠色版。

  2.4、常用命令

  啟動:sudo ./jws start

  重啟:sudo ./jws restart

  停止:sudo ./jws stop

  2.5、測試

  首先創建/var/www/default文件夾(這個文件夾是指定的默認網站路徑),在文件夾中創建一個Index.aspx,寫入

<%@Page Language="C#"%>
<%=DateTime.Now.ToString()%>

切換到jexus目錄,啟動jexus,然后請求Index頁面。因為此Linux系統中只對外開放了80端口,並且80端口已經被其他項目占用。所以需要在jexus的siteconf文件夾中配置default文件中端口為8020。如果你的機器上沒有部署過其他網站,那就不需要配置端口,只需要culr localhost。如果成功打印出時間,則配置成功。

三、jexus配置

  jexus的配置文件是jws.conf,文件指明了網站配置文件的存放位置、日志、證書等等。下面為詳細內容

    SiteLogDir=log               #網站日志以及Jexus系統日志的存放位置,必填項。可以使用基於jws.exe文件的相對路徑
    SiteConfigDir=siteconf           #網站配置文件存放的位置,是必填項。可以使用絕對路徑,也可以使用基於jws.conf文件的相對路徑
    Runtime=v4.0.30319           #設定Jexus工作進程運行於哪個.NET版本
    httpd.processes=1              #工作進程的數量,建議每6-8核CPU用一個進程,最多可設4個進程
    httpd.user=www-data                    #工作進程以什么用戶身份和對應權限工作,默認為root
    php-fcgi.set=/usr/bin/php-cgi,6     #如果需要Jexus同時充當PHP FastCGI服務器,這一句就是fast-cgi設置,分兩個部分,逗號前為php-cgi這個文件的路徑,逗號后是php進程數
    CertificateFile=/xxxx/xx.crt             #SSL證書路徑(如果需要使用https協議才填)
    CertificateKeyFile=/xxxx/xx.key     #SSL密鑰文件路徑(如果需要使用https協議才填)

  注:jws.conf 中,SiteConfigDir 和 SiteLogDir 兩項是必填項。

   在網站配置文件中,此文件夾默認有一個default文件,默認端口為80,默認網站資源路徑為/var/www/default,上面測試例子就是用的最簡單的配置。

  配置時,首先要注意如下三個規則:
  1)必須把所有網站配置文件放到jws.conf指定的網站配置文件夾內,這個文件夾除了網站配置文件,不能有其它任何文件,因為jexus會認為這兒的任何一個文件都代表着一個不同的網站。
  2)每個網站有且只有一個配置文件,配置文件的文件名就是這個網站的名稱,比如 www.mysite.cn這個網站,配置文件名可以寫成“mysite”,當然也可以寫成其它文件名,以便管理員容易記憶和識別,但要特別注意:文件名不能有空格!
  3)一個網站可以擁有任意多的域名,不同網站不能有相同的域名,沒有域名的網站只能有一個,這個沒有域名的網站叫做“默認網站”,而一台服務器最多只能有一個默認網站。

  如果你的機器上端口有多余,直接上傳Asp.Net項目,新建一個網站配置文件,通過外網直接就可以訪問了,本來到此應該配置完了。但是我的機器對外開放了80和443端口,所有的項目都是通過Nginx分發實現,所以上面測試的例子只能本機訪問。

四、配置Nginx

  如果你有其他域名,直接在Nginx中設置如下配置,Nginx就會將訪問此域名的請求轉發到對應的項目中處理。

    server {
    listen 80;
    server_name api.abc-cn.com(你的域名);
        location / {
            proxy_pass http://localhost:8060/;(本地配置的jexus地址)
        }
    }

由於我只有一個二級域名,所以讓Nginx通過請求的URL來區分請求,分別轉發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM