close
文章出處

前言

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

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

目錄

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

安裝 Linux DotNet 環境

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

新建一個 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 服務器。 具體介紹我就直接放鏈接了。

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

安裝 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程序創建一個守護進程,及宕機失敗自動重啟等等。。。 請持續關注。

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


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


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    AutoPoster 發表在 痞客邦 留言(0) 人氣()