詳解Asp.Net Core 發布和部署( MacOS + Linux + Nginx )

發布時間:2019-11-20 18:33 來源:互聯網 當前欄目:網站服務器

前言

在上篇文章中,主要介紹了 Dotnet Core Run 命令,這篇文章主要是講解如何在Linux中,對 Asp.Net Core 的程序進行發布和部署。

目錄

新建一個 WebApp 項目 發布到 Linux,Mac OS 使用 Nginx 進行反向代理

新建一個 WebApp 項目

在 Asp.Net Core 項目中,我們使用 dotnet new -t WebApp 命令和創建一個新的空的 Web 應用程序。

以下是我在 Mac 中的截圖:

主要是用以下幾個命令:

mkdir HelloWebApp 這個命令是創建一個名為 HelloWebApp 的文件夾。

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

新建了應用程序之后,使用dotnet restore 和 dotnet run 命令來測試一下我們的應用程序。

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

我們打開瀏覽器輸入 http://localhost:5000,來看一下效果。

ps: Safari 下面,瀏覽器地址欄看不到端口號,實際上是5000端口。

發布到 Linux,Mac OS

如果發布應用程序,我們需要使用 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 使用默認的發布路徑,當看到Published 1/1 projects successfully的時候,說明已經發布成功了。 接著進入到 bin 文件夾下的Debug 文件夾下的netcoreapp1.0 文件夾,然后會看到有一個 publish 的文件夾。這就是默認發布生成的文件夾,在這個文件夾中可以看到我們程序所有依賴的程序集文件。

發布之后 publish 文件夾里面的子文件夾有必要說明一下。

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

然后我們把工作目錄切換到發布的 publish 文件夾。使用dotnet HelloWebApp.dll測試發布過后的程序是否運行正常。

使用 Nginx 進行反向代理

Mac OS Linux(Ubuntu) 注意事項

反向代理,即把我們應用程序的一部分路徑交給 Nginx 去處理,比如靜態文件,圖片等。另外一部分動態的交給 Kestrel 來處理。這樣可以降低我們的后端 Kestrel 的壓力,以及可以在 Nginx 配置負載均衡等。

  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、
  • 1、
  • 2、
  • 3、
  • 4、
  • 5、
  • 6、
  • 7、
  • 8、
  • 9、
  • 10、
  • 11、
  • 12、
  • 13、
  • 14、
  • 15、
  • 16、
  • 17、
  • 18、
  • 19、
  • 20、
  • 21、
  • 22、
  • 23、
  • 24、
  • 25、