來(lái)源:玩雙截棍的熊貓
cnblogs.com/staneee/p/6852559.html
第一步 安裝.Net Core環(huán)境
安裝 dotnet 環(huán)境參見(jiàn)官方網(wǎng)站 https://www.microsoft.com/net/core。
選擇對(duì)應(yīng)的系統(tǒng)版本進(jìn)行安裝。安裝完成過(guò)后 輸入命令查看版本,目前最新版為 1.04:
dotnet --version
此時(shí)已經(jīng)可以發(fā)布Asp.Net Core應(yīng)用程序到Linux上運(yùn)行了
將Asp.Net Core程序發(fā)布到Linux服務(wù)器上,通過(guò) dotnet 命令來(lái)運(yùn)行,如:
dotnet /應(yīng)用程序全路徑/應(yīng)用程序名.dll
成功運(yùn)行后會(huì)顯示 :
Hosting environment: Production Content root path: /應(yīng)用程序全路徑/ Now listening on: http://localhost:5000 Application started. Press Ctrl C to shut down.
(Asp.Net Core應(yīng)用程序默認(rèn)使用5000端口,可以在項(xiàng)目 Program.cs 中進(jìn)行自定義端口,但不建議在Program.cs中進(jìn)行自定義端口)
但是這個(gè)時(shí)候,只要關(guān)閉當(dāng)前的 ssh 會(huì)話 那么 Asp.Net Core應(yīng)用程序就會(huì)結(jié)束運(yùn)行。
那么該怎么辦呢?使用 Jexus ! (需要使用5.8.2 版本或更高版本的)https://news.cnblogs.com/n/569277/
Jexus 官網(wǎng)地址: https://www./
Jexus 官網(wǎng)論壇: https://www.
第二步 安裝Jexus
安裝 Jexus 直接使用一下命令即可(需要在root身份下執(zhí)行):
curl https:///release/x64/install.sh|sh
安裝成功后會(huì)提示:OK, Jexus has been installed in /usr/jexus.
第三步 發(fā)布程序到Linux服務(wù)器
將的Asp.Net Core 應(yīng)用程序文件夾 發(fā)布到Linux服務(wù)器的 /var/www/ 路徑下
(如果 www 文件夾不存在,則使用 mkdir /var/www/ 命令創(chuàng)建 www 文件夾)
此時(shí),應(yīng)用程序所在的完整路徑為 /var/www/應(yīng)用程序文件夾/應(yīng)用程序名稱.dll
第四步 配置Jexus運(yùn)行Asp.Net Core應(yīng)用程序
使用以下命令:
1、切換到Jexus配置文件目錄
cd /usr/jexus/siteconf
2、復(fù)制默認(rèn)的配置文件為test
cp default test
3、編輯test配置文件
vi test
test文件默認(rèn)內(nèi)容為:
###################### # Web Site: Default ########################################
port=80 root=/ /var/www/default hosts=* #OR your.com,*.your.com
# addr=0.0.0.0 # CheckQuery=false NoLog=true # AppHost={CmdLine=/usr/local/x/xx;AppRoot=/usr/local/x;Port=5000} # NoFile=/index.aspx # Keep_Alive=false # UseGZIP=false
# UseHttps=true # ssl.certificate=/x/xxx.crt #or pem # ssl.certificatekey=/x/xxx.key # ssl.protocol=TLSv1.0 # TLSv1.1 or TLSv1.2... # ssl.ciphers=
# DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24 # AllowFrom=192.168.*.* # DenyDirs=~/cgi, ~/upfiles # indexes=myindex.aspx # rewrite=^/. ?\.(asp|php|cgi|pl|sh)$ /index.aspx # reproxy=/bbs/ http://192.168.1.112/bbs/ # 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
編輯完成后 test 的內(nèi)容為(注意AppHost中的每一項(xiàng)結(jié)尾應(yīng)該有英文半角的分號(hào)):
###################### # Web Site: test ########################################
port=8888 root=/ /var/www/應(yīng)用程序文件夾/ hosts=* #OR your.com,*.your.com AppHost={ cmd=dotnet 應(yīng)用程序名稱.dll; root=/var/www/應(yīng)用程序文件夾/; port=0; }
# addr=0.0.0.0 # CheckQuery=false NoLog=true # AppHost={CmdLine=/usr/local/x/xx;AppRoot=/usr/local/x;Port=5000} # NoFile=/index.aspx # Keep_Alive=false # UseGZIP=false
# UseHttps=true # ssl.certificate=/x/xxx.crt #or pem # ssl.certificatekey=/x/xxx.key # ssl.protocol=TLSv1.0 # TLSv1.1 or TLSv1.2... # ssl.ciphers=
# DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24 # AllowFrom=192.168.*.* # DenyDirs=~/cgi, ~/upfiles # indexes=myindex.aspx # rewrite=^/. ?\.(asp|php|cgi|pl|sh)$ /index.aspx # reproxy=/bbs/ http://192.168.1.112/bbs/ # 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
編輯完成后,在英文半角輸入法下 按 Esc 鍵 輸入 :wq 完成保存文件修改并退出 (以上修改會(huì)在下面進(jìn)行詳細(xì)說(shuō)明)
4、啟動(dòng)/重啟 Jexus
當(dāng)配置文件編輯完成后使用以下命令對(duì)Jexus進(jìn)行 啟動(dòng)/重啟
# 如果已啟動(dòng) Jexus: sh /usr/jexus/jws restart
# 如果未啟動(dòng) Jexus: sh /usr/jexus/jws start
啟動(dòng)/重啟成功后,在瀏覽器中輸入 ip地址/域名:端口號(hào) 例如(192.168.1.1:8888 或 www.aspnetcore.com:8888 ) 即可訪問(wèn)Asp.Net Core應(yīng)用程序
以上即是Jexus托管Asp.Net Core應(yīng)用程序的配置全過(guò)程
通過(guò)微軟官方的介紹,Asp.Net Core應(yīng)用程序是運(yùn)行在 Kestrel 服務(wù)器上的,
那么Jexus和Kestrel之間的關(guān)系什么呢?正如 Apache與Tomcat之間的關(guān)系.
Jexus作為Web服務(wù)器,Kestrel是應(yīng)用服務(wù)器,Jexus會(huì)將瀏覽器發(fā)送的請(qǐng)求轉(zhuǎn)交給Kestrel,Kestrel 根據(jù)請(qǐng)求 交給Asp.Net Core應(yīng)用程序 處理后將處理結(jié)果返回到到Jexus,再由Jexus響應(yīng)到瀏覽器,如圖所示:
通過(guò)上面的圖片我們可以看到一次完整的請(qǐng)求響應(yīng)的過(guò)程。
那么Jexus是怎么將請(qǐng)求轉(zhuǎn)發(fā)到 Kestrel 服務(wù)器中的Asp.Net Core應(yīng)用程序上的呢?
這里不得不感嘆Jexus的強(qiáng)力與使用的便捷,只需要簡(jiǎn)單的編輯配置文件即可。
在上面 第四步 配置Jexus運(yùn)行Asp.Net Core應(yīng)用程序 時(shí),test文件編輯后的內(nèi)容含義
port=8888 # 外部訪問(wèn)的端口號(hào),可以改成你想要的端口號(hào),外部訪問(wèn)通過(guò) ip/域名:端口號(hào) 即可訪問(wèn) root=/ /var/www/應(yīng)用程序文件夾/ # 應(yīng)用程序的工作根目錄(全路徑) hosts=* #OR your.com,*.your.com # 如果為服務(wù)器設(shè)置了DNS解析,則可以填寫(xiě)解析到服務(wù)器的域名,如:www.myweb.com
AppHost={ # 最最最重要的配置 cmd=dotnet 應(yīng)用程序名稱.dll; # 命令,啟動(dòng)Asp.Net Core應(yīng)用要執(zhí)行的命令
root=/var/www/應(yīng)用程序文件夾/; # Asp.Net Core應(yīng)用程序所在的全路徑
port=0; # Asp.Net Core應(yīng)用程序所使用的端口號(hào),如果在程序中使用了UsrUrls自定義端口則使用UsrUrls中填寫(xiě)的端口(不建議使用UsrUrls自定義端口), # 在沒(méi)有使用UsrUrls自定義端口的情況下端口號(hào)設(shè)置為 0,Jexus會(huì)在運(yùn)行時(shí)與Asp.Net Core進(jìn)行'協(xié)商'具體使用的端口號(hào),避免多個(gè)應(yīng)用分配 # 端口的麻煩和沖突的風(fēng)險(xiǎn)。 }
配置的重點(diǎn)就在于AppHost中,需要注意的是在AppHost中的port(端口號(hào))不代表Jexus對(duì)外服務(wù)的port(端口號(hào)),而是指要轉(zhuǎn)發(fā)的 Asp.Net Core應(yīng)用程序的端口號(hào),簡(jiǎn)單來(lái)說(shuō)就是會(huì)將外部的請(qǐng)求轉(zhuǎn)發(fā)到這個(gè)端口,由這個(gè)端口對(duì)應(yīng)的Asp.Net Core應(yīng)用程序?qū)φ?qǐng)求進(jìn)行處理。
強(qiáng)烈推薦“協(xié)商端口”,而不是在Asp.Net Core中使用UsrUrls設(shè)置端口,避免多個(gè)應(yīng)用分配端口的麻煩和沖突的風(fēng)險(xiǎn)
看完本文有收獲?請(qǐng)轉(zhuǎn)發(fā)分享給更多人 關(guān)注「DotNet」,提升.Net技能
|