Asp.Net Core 發布和部署(Linux + Jexus )

來源:互聯網
上載者:User

標籤:hup   replace   建立   localhost   packages   field   儲存   lis   伺服器   

前言

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

有關如何使用 Nginx 進行部署,請參見本人的另一篇文章:
http://www.cnblogs.com/savorboard/p/dotnet-core-publish-nginx.html

目錄
  • 安裝 Liunx DotNet 環境
  • 建立一個 Web 項目,並發布
  • 使用 Jexus 進行反向 Proxy
安裝 Linux DotNet 環境

安裝 dotnet 環境參見官方網站 https://www.microsoft.com/net/core#ubuntu。

建立一個 WebApp 項目,並發布

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

主要是用以下幾個命令:

mkdir HelloWebApp 這個命令是建立一個名為 HelloWebApp 的檔案夾。

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

建立了應用程式之後,使用dotnet restore 和 dotnet run 命令來測試一下我們的應用程式。
我們開啟瀏覽器輸入 http://localhost:5000,來看一下效果。

可以看到已經成功運行了。

如果發布應用程式,我們需要使用 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測試發布過後的程式是否運行正常。

使用 Jexus 進行反向 Proxy
  • Jexus 介紹
  • 安裝 Jexus
  • 配置 Jexus
  • 注意事項
Jexus 介紹

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

官網: http://www.jexus.org/
張善友的介紹:http://www.cnblogs.com/shanyou/archive/2011/01/23/Jexus.html

安裝 Jexus

在命令列視窗中,使用以下命令來安裝一個綠色版的 jexus(無需另行安裝 Mono)。

cd /tmpwget linuxdot.net/down/jexus-5.8.1-x64.tar.gztar -zxvf jexus-5.8.1-x64.tar.gzsudo mv jexus /usrsudo rm -rf /tmp/jexus*

使用以下命令來啟動 jexus

cd /usr/jexussudo ./jws start

開啟瀏覽器輸入http://localhost 如果看到下面這個異常介面,代表運行成功了。

配置 Jexus

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

1、** 連接埠轉寄 **

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

2、** 反向 Proxy **

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

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

至於怎麼樣添加Proxy 伺服器可以識別到的緩衝,可以關注我後面發表的部落格文章。

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

port=80# Jexus 預設訪問的工作目錄root=/ /home/yxd/Workspace/publish # 下面這種方式是反向 Proxy。我設定的路徑是"/"即根目錄,大家可以根據# 需要設定為非靜態路徑reproxy=/ http://localhost:5000/# 下面這種方式是使用連接埠轉寄AppHost.Port=5000# 注意: 以上兩種方式配置一種即可。

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

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

注意事項

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

2、可以使用下面的命令來讓一個命令列運行在後台進程中。

nohup dotnet HelloWebApp.dll &

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

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

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

本文地址:http://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html
作者部落格:Savorboard
歡迎轉載,請保留出處

Asp.Net Core 發布和部署(Linux + Jexus )

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.