1. 程式人生 > >Asp.Net Core 釋出和部署(Linux + Jexus )

Asp.Net Core 釋出和部署(Linux + Jexus )

前言

上篇文章中,主要介紹了 Dotnet Core Run 命令,這篇文章主要是講解如何在 asp.net core 中對我們的已經完成的程式進行釋出和部署。

目錄

  • 安裝 Liunx DotNet 環境
  • 新建一個 Web 專案,併發布
  • 使用 Jexus 進行反向代理

安裝 Linux DotNet 環境

新建一個 WebApp 專案,併發布

在 Asp.Net Core 專案中,我們使用 dotnet new -t WebApp 命令和建立一個新的空的 Web 應用程式,然後使用dotnet resotre還原 Nuget。

image

主要是用以下幾個命令:

mkdir HelloWebApp

這個命令是建立一個名為 HelloWebApp 的資料夾。

dotnet new -t Web 這個命令是使用 Web 模板來新建一個 WebApp 的 Mvc 應用程式。

新建了應用程式之後,使用dotnet restoredotnet run 命令來測試一下我們的應用程式。
我們開啟瀏覽器輸入 http://localhost:5000,來看一下效果。
image
可以看到已經成功運行了。

如果釋出應用程式,我們需要使用 dotnet publish命令,通過使用 --help 引數可以看到一些可以使用的命令引數。

  -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 釋出到 publish 資料夾,當看到Published 1/1 projects successfully的時候,說明已經發布成功了。

PS: 如果提示沒有安裝 NPM 工具,執行sudo install apt-get npm -g,先安裝 NPM。
如果提示沒有 bower 管理工具,使用 sudo npm install bower -g安裝 bower。
如果提示沒有 gulp 構建工具,使用 sudo npm install gulp -g安裝 gulp。
如安裝過程中無響應,請科學上網後再安裝。

釋出之後 publish 資料夾裡面的子資料夾有必要說明一下。

appsettiong.json  應用程式的配置檔案
refs 應用程式引用的.net fx系統程式集
runtimes 執行時環境,可以看到裡面的資料夾包含 win7、linxu,mac os 等,說明我們這個應用程式是跨平臺的。
views 這個資料夾存放的就是我們的 mvc 的檢視檔案。
wwwroot 資料夾,存放的是前端使用的 js 庫,css 樣式表,和圖片等。

然後使用dotnet HelloWebApp.dll測試釋出過後的程式是否執行正常。

image

使用 Jexus 進行反向代理

  • Jexus 介紹
  • 安裝 Jexus
  • 配置 Jexus
  • 注意事項

Jexus 介紹

Jexus 是一款國產的,執行在 Linux 上的 Web 伺服器。 具體介紹我就直接放連結了。

安裝 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 如果看到下面這個異常介面,代表執行成功了。
image

配置 Jexus

有兩種方式可以在 Jexus 上訪問我們的 Web 應用程式。 即埠轉發和反向代理的方式,下面是兩種方式的配置方法。

1、** 埠轉發 **

埠轉發,即把 Jexus 配置的埠直接轉發到我們的 asp.net 程式中,即轉發到 Kestrel 去處理。

2、** 反向代理 **

反向代理,即把我們應用程式的一部分路徑交給 Jexus 去處理,比如靜態檔案,圖片等。另外一部分動態的交給Kertrel 來處理。這樣可以降低我們的後端 Kertrel 的壓力。

還有一個很重要的優勢就是 Web 中的快取,會在代理伺服器這一步來處理。大家看下面這個圖:
image

至於怎麼樣新增代理伺服器可以識別到的快取,可以關注我後面發表的部落格文章。

按照上述方式安裝完 Jexus 之後,配置檔案路徑在 /usr/jexus/siteconf/default 檔案中。
切換工作目錄到/usr/jexus/siteconf/,使用sudo gedit default命令開啟 default 檔案。
修改內容為如下:

port=80

# Jexus 預設訪問的工作目錄
root=/ /home/yxd/Workspace/publish 

# 下面這種方式是反向代理。我設定的路徑是"/"即根目錄,大家可以根據
# 需要設定為非靜態的路徑
reproxy=/ http://localhost:5000/

# 下面這種方式是使用埠轉發
AppHost.Port=5000

# 注意: 以上兩種方式配置一種即可。

儲存並退出。 然後使用sudo ./jws restart命令來重啟一下。

然後我們開啟瀏覽器 輸入http://localhost,發現此時已經通過 jexus 來訪問我們的站點了。
image

注意事項

1、在使用 jexus 代理訪問站點的時候, 保持命令dotnet run HelloWebApp.dll的命令列視窗必須開啟。

2、可以使用下面的命令來讓一個命令列執行在後臺程序中。

nohup dotnet HelloWebApp.dll &

這個時候你就可以把命令列視窗關掉了。

下一篇將講解如何在 Linux 中使用 Docker 進行部署,以及如何脫離命令列宿主給我們的dotnet程式建立一個守護程序,及宕機失敗自動重啟等等。。。 請持續關注。

如果你覺得本文對你有幫助,不妨點個【推薦】。

相關推薦

Asp.Net Core 釋出部署Linux + Jexus

前言 在上篇文章中,主要介紹了 Dotnet Core Run 命令,這篇文章主要是講解如何在 asp.net core 中對我們的已經完成的程式進行釋出和部署。 目錄 安裝 Liunx DotNet 環境 新建一個 Web 專案,併發布 使用 Jexus 進行反向代理 安裝 Linux DotNet

Asp.Net Core 釋出部署 MacOS + Linux + Nginx

前言 在上篇文章中,主要介紹了 Dotnet Core Run 命令,這篇文章主要是講解如何在Linux中,對 Asp.Net Core 的程式進行釋出和部署。 目錄 新建一個 WebApp 專案 釋出到 Linux,Mac OS 使用 Nginx 進行反向代理 新建一個 WebApp 專案 在 Asp

翻譯 - ASP.NET Core 託管部署 - 在 Linux 上使用 Nginx 託管 ASP.NET Core 網站

翻譯自 https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-5.0 本文介紹了在 Ubuntu 16.04 伺服器上設定生產環境可用的 ASP.NET Core 環境。這裡的

VisualStudioCode建立的asp.net core控制檯程式部署linux

1、asp.net core控制檯程式 static void Main(string[] args) { int times=10; while(times>=0) { Co

ASP.NET Core快速入門】十四MVC開發:UI、 EF + Identity實現

dfa models cti ted lec inpu word pri numeric 前言 之前我們進行了MVC的web頁面的Cookie-based認證實現,接下來的開發我們要基於之前的MvcCookieAuthSample項目做修改。 MvcCookieAuth

ASP.NET Core】處理異常上篇

關心 指向 然而 sub 相關 pri roo epon netcore 依照老周的良好作風,開始之前先說點題外話。 前面的博文中,老周介紹過自定義 MVC 視圖的搜索路徑,即向 ViewLocationFormats 列表添加相應的內容,其實,對 Razor Page

ASP.NET Core 2 學習筆記十二REST-Like API

light namespace strong postman space 新增 html move engine Restful幾乎已算是API設計的標準,通過HTTP Method區分新增(Create)、查詢(Read)、修改(Update)和刪除(Delete),簡稱

ASP.NET Core 2 學習筆記十四Filters

span ans 黃色 返回 lec red addm spn using 原文:ASP.NET Core 2 學習筆記(十四)FiltersFilter是延續ASP.NET MVC的產物,同樣保留了五種的Filter,分別是Authorization Filter、Res

ASP.NET Core 2 學習筆記十一Cookies & Session

自動 asp Go 內存 rtu serialize .html call names 原文:ASP.NET Core 2 學習筆記(十一)Cookies & Session基本上HTTP是沒有記錄狀態的協定,但可以通過Cookies將Request來源區分出來,並

Core中使用Hangfire 在Asp.Net Core中使用DI的方式使用Hangfire構建後臺執行指令碼 解決 ASP.NET Core Hangfire 未授權401 Unauthorized

    之前使用Quartz.Net,後來發現hangfire對Core的繼承更加的好,而且自帶管理後臺,這就比前者好用太多了。 安裝註冊 安裝 PM> Install-Package Hangfire Startup.cs,在ConfigureServices方法中添加註冊:

ASP.NET Core快速入門】準備CentOSNginx環境

正常 b- 進入 運行 ins 輸入 最小 我們 -128 基本軟件 VMware虛擬機 centos:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1708.iso

ASP.NET Core快速入門】在CentOS上安裝.NET Core運行時、部署到CentOS

ati libunwind serve code api cal 之前 prompt conn 下載.NET Core SDK 下載地址:https://www.microsoft.com/net/download/windows 第一步:Add the dotne

ASP.NET Core應用程序部署至生產環境中CentOS7

for linux home web 虛擬 direct director block bic 閱讀目錄 環境說明 準備你的ASP.NET Core應用程序 安裝CentOS7 安裝.NET Core SDK for CentOS7。 部署ASP.NET

ASP.NET Core MVC EF Core 構建Web應用

work nal nta 多個 包括 catch web 應用 自動 選項卡 本節學習如何執行基本的 CRUD (創建、 讀取、 更新、 刪除) 操作。 自定義“詳細信息”頁 學生索引頁的基架代碼省略了 Enrollments 屬性,因為該屬性包含一個集合。 在“詳細信息”

ASP.NET Core MVC EF Core 構建Web應用

fix pro school time lap namespace 繼承映射 數據庫表 eas 在上一節中,已經處理了並發異常。 本節將演示如何在數據模型中實現繼承。 在面向對象的編程中,可以使用繼承以便於重用代碼。 在本教程中,將更改 Instructor和 Studen

ASP.NET Core MVC EF Core 構建Web應用

pan 信息 expr dispose writing AS das ech 任務欄 之前的學習中,已經以每個類一張表的方式實現了繼承。 本節將會介紹在掌握開發基礎 ASP.NET Core web 應用程序之後使用 Entity Framework Core 開發時需要註

ASP.NET Core快速入門】部署到IIS

圖片 cor .com servers 訪問 publish img 控制臺 -m 原文:【ASP.NET Core快速入門】(二)部署到IIS配置IIS模塊 ASP.NET Core Module載地址:https://docs.microsoft.com/en-us/

ASP.NET Core MVC Visual Studio入門 使用 SQL Server LocalDB

ASP.NET Core MVC 和 Visual Studio入門(五)   使用 SQL Server LocalDB Rick Anderson     MvcMovieContext物件操縱連線到資料庫並對映電影物件到資料庫記

ASP.NET Core MVC Visual Studio入門新增模型

ASP.NET Core MVC 和 Visual Studio入門(四)新增模型   Rick Anderson 和Tom Dykstra   在要節中將新增一些在資料庫中管理電影的類,這些類將成為MVC應用的“Model(模型)”部分。 這些類將與Enti

ASP.NET Core MVC Visual Studio入門 新增檢視

ASP.NET Core MVC 和 Visual Studio入門(三)   新增檢視 本節將修改HelloWorldController類,從而使用Razor檢視模板來乾淨利索地封裝產生一個HTML迴應給客戶端的過程。 我們將使用Razor建立一個檢視模板,基於