因為老項目用的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來區分請求,分別轉發。