在Linux+Jexus中發(fā)布和部署Asp.Net?Core
安裝 Linux DotNet 環(huán)境
安裝 dotnet 環(huán)境參見官方網(wǎng)站 https://www.microsoft.com/net/core。
新建一個 WebApp 項目,并發(fā)布
在 Asp.Net Core 項目中,我們使用 dotnet new -t WebApp 命令和創(chuàng)建一個新的空的 Web 應(yīng)用程序,然后使用dotnet resotre還原 Nuget。

主要是用以下幾個命令:
mkdir HelloWebApp 這個命令是創(chuàng)建一個名為 HelloWebApp 的文件夾。
dotnet new -t Web 這個命令是使用 Web 模板來新建一個 WebApp 的 Mvc 應(yīng)用程序。
新建了應(yīng)用程序之后,使用dotnet restore 和 dotnet run 命令來測試一下我們的應(yīng)用程序。
我們打開瀏覽器輸入 http://localhost:5000,來看一下效果。

可以看到已經(jīng)成功運行了。
如果發(fā)布應(yīng)用程序,我們需要使用 dotnet publish命令,通過使用 --help 參數(shù)可以看到一些可以使用的命令參數(shù)。
-f|--framework <FRAMEWORK> Target framework to compile for -r|--runtime <RUNTIME_IDENTIFIER> Target runtime to publish for -b|--build-base-path <OUTPUT_DIR> Directory in which to place temporary outputs -o|--output <OUTPUT_PATH> Path in which to publish the app --version-suffix <VERSION_SUFFIX> Defines what `*` should be replaced with in version field in project.json -c|--configuration <CONFIGURATION> Configuration under which to build --native-subdirectory Temporary mechanism to include subdirectories from native assets of dependency packages in output --no-build Do not build projects before publishing
我們運行dotnet publish -o ~/WorkSpace/publish 發(fā)布到 publish 文件夾,當(dāng)看到Published 1/1 projects successfully的時候,說明已經(jīng)發(fā)布成功了。
PS: 如果提示沒有安裝 NPM 工具,運行
sudo install apt-get npm -g,先安裝 NPM。如果提示沒有 bower 管理工具,使用
sudo npm install bower -g安裝 bower。如果提示沒有 gulp 構(gòu)建工具,使用
sudo npm install gulp -g安裝 gulp。如安裝過程中無響應(yīng),請科學(xué)上網(wǎng)后再安裝。
發(fā)布之后 publish 文件夾里面的子文件夾有必要說明一下。
appsettiong.json 應(yīng)用程序的配置文件 refs 應(yīng)用程序引用的.net fx系統(tǒng)程序集 runtimes 運行時環(huán)境,可以看到里面的文件夾包含 win7、linxu,mac os 等,說明我們這個應(yīng)用程序是跨平臺的。 views 這個文件夾存放的就是我們的 mvc 的視圖文件。 wwwroot 文件夾,存放的是前端使用的 js 庫,css 樣式表,和圖片等。
然后使用dotnet HelloWebApp.dll測試發(fā)布過后的程序是否運行正常。

使用 Jexus 進(jìn)行反向代理
- Jexus 介紹
- 安裝 Jexus
- 配置 Jexus
- 注意事項
Jexus 介紹
Jexus 是一款國產(chǎn)的,運行在 Linux 上的 Web 服務(wù)器。 具體介紹我就直接放鏈接了。
官網(wǎng): http://www.jexus.org/
安裝 Jexus
在命令行窗口中,使用以下命令來安裝一個綠色版的 jexus(無需另行安裝 Mono)。
cd /tmp wget linuxdot.net/down/jexus-5.8.1-x64.tar.gz tar -zxvf jexus-5.8.1-x64.tar.gz sudo mv jexus /usr sudo rm -rf /tmp/jexus*
使用以下命令來啟動 jexus
cd /usr/jexus sudo ./jws start
打開瀏覽器輸入http://localhost 如果看到下面這個異常界面,代表運行成功了。

配置 Jexus
有兩種方式可以在 Jexus 上訪問我們的 Web 應(yīng)用程序。 即端口轉(zhuǎn)發(fā)和反向代理的方式,下面是兩種方式的配置方法。
- 1、** 端口轉(zhuǎn)發(fā) **
端口轉(zhuǎn)發(fā),即把 Jexus 配置的端口直接轉(zhuǎn)發(fā)到我們的 asp.net 程序中,即轉(zhuǎn)發(fā)到 Kestrel 去處理。
- 2、** 反向代理 **
反向代理,即把我們應(yīng)用程序的一部分路徑交給 Jexus 去處理,比如靜態(tài)文件,圖片等。另外一部分動態(tài)的交給Kertrel 來處理。這樣可以降低我們的后端 Kertrel 的壓力。
還有一個很重要的優(yōu)勢就是 Web 中的緩存,會在代理服務(wù)器這一步來處理。
至于怎么樣添加代理服務(wù)器可以識別到的緩存,可以關(guān)注我后面發(fā)表的博客文章。
按照上述方式安裝完 Jexus 之后,配置文件路徑在 /usr/jexus/siteconf/default 文件中。
切換工作目錄到/usr/jexus/siteconf/,使用sudo gedit default命令打開 default 文件。
修改內(nèi)容為如下:
port=80 # Jexus 默認(rèn)訪問的工作目錄 root=/ /home/yxd/Workspace/publish # 下面這種方式是反向代理。我設(shè)置的路徑是"/"即根目錄,大家可以根據(jù) # 需要設(shè)置為非靜態(tài)的路徑 reproxy=/ http://localhost:5000/ # 下面這種方式是使用端口轉(zhuǎn)發(fā) AppHost.Port=5000 # 注意: 以上兩種方式配置一種即可。
保存并退出。 然后使用sudo ./jws restart命令來重啟一下。
然后我們打開瀏覽器 輸入http://localhost,發(fā)現(xiàn)此時已經(jīng)通過 jexus 來訪問我們的站點了。

注意事項
- 1、在使用 jexus 代理訪問站點的時候, 保持命令
dotnet run HelloWebApp.dll的命令行窗口必須開啟。 - 2、可以使用下面的命令來讓一個命令行運行在后臺進(jìn)程中。
nohup dotnet HelloWebApp.dll &
這個時候你就可以把命令行窗口關(guān)掉了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 在MacOS+Linux+Nginx中發(fā)布和部署Asp.Net?Core
- Linux?CentOS下docker部署Asp.Net?Core(.Net6)
- Linux系統(tǒng)Docker 部署 ASP.NET Core應(yīng)用的流程分析
- .net core Api 部署到Linux的方法步驟
- .Net Core WebApi部署在Linux服務(wù)器上的方法
- Linux服務(wù)器下利用Docker部署.net Core項目的全過程
- NetCore1.1+Linux部署初體驗
- Linux下部署.net core環(huán)境的步驟詳解
- 詳解Asp.Net Core 發(fā)布和部署( MacOS + Linux + Nginx )
- Asp.net Core 初探(發(fā)布和部署Linux)
- 部署ASP.NET?Core程序到Linux系統(tǒng)
相關(guān)文章
在ASP.NET 2.0中操作數(shù)據(jù)之三十九:在DataList的編輯界面里添加驗證控件
為了防止用戶非法的輸入,這節(jié)主要介紹如何在編輯數(shù)據(jù)的時候添加驗證控件,以避免出現(xiàn)異常和保證數(shù)據(jù)的完整性。2016-05-05
解讀ASP.NET 5 & MVC6系列教程(12):基于Lamda表達(dá)式的強類型Routing實現(xiàn)
這篇文章主要介紹了基于ASP.NET 5 Lamda表達(dá)式的強類型Routing實現(xiàn),需要的朋友可以參考下2016-06-06
在ASP.NET 2.0中操作數(shù)據(jù)之四十六:使用SqlDataSource控件檢索數(shù)據(jù)
在前面的教程里,我們用ObjectDataSource控件充分的將表現(xiàn)層和數(shù)據(jù)訪問層(DAL)分開來。在這篇教程里我們看看怎樣在一個表現(xiàn)層和數(shù)據(jù)訪問層區(qū)分的不是很嚴(yán)格的簡單程序中使用SqlDataSource控件。2016-05-05
Visual Studio 2017使用EF選擇MySQL數(shù)據(jù)源
這篇文章介紹了Visual Studio 2017使用EF選擇MySQL數(shù)據(jù)源,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
基于.net開發(fā)的遵循web標(biāo)準(zhǔn)的個人站點程序包下載
基于.net開發(fā)的遵循web標(biāo)準(zhǔn)的個人站點程序包下載...2006-10-10
.Net?Core微服務(wù)網(wǎng)關(guān)Ocelot基礎(chǔ)介紹及集成
這篇文章介紹了.Net?Core微服務(wù)網(wǎng)關(guān)Ocelot基礎(chǔ)及集成,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
在ASP.NET 2.0中操作數(shù)據(jù)之三十一:使用DataList來一行顯示多條記錄
ASP.NET 2.0中DataList默認(rèn)情況使用單列多行的table來顯示項,本文介紹通過設(shè)置RepeatColumns屬性為每行的列數(shù)就可以達(dá)到顯示多條記錄這個目的。2016-05-05
解讀ASP.NET 5 & MVC6系列教程(3):項目發(fā)布與部署
這篇文章主要介紹了ASP.NET 5 項目發(fā)布與部署的設(shè)置和流程,并介紹IIS和web.cmd模式兩種發(fā)布模式的區(qū)別,需要的朋友可以參考一下。2016-06-06
ASP.NET MVC4入門教程(八):給數(shù)據(jù)模型添加校驗器
本文介紹給模型添加校驗器,以前我們做表單驗證都要前臺驗證一遍,后臺再驗證一遍,MVC4中這種方式,只需在模型上加驗證規(guī)則,前后臺就都驗證了。2016-04-04

