在MacOS+Linux+Nginx中發(fā)布和部署Asp.Net?Core
新建一個 WebApp 項目
在 Asp.Net Core 項目中,我們使用 dotnet new -t WebApp
命令和創(chuàng)建一個新的空的 Web 應用程序。
以下是我在 Mac 中的截圖:
主要是用以下幾個命令:
mkdir HelloWebApp
這個命令是創(chuàng)建一個名為 HelloWebApp 的文件夾。
dotnet new -t Web
這個命令是使用 Web 模板來新建一個 WebApp 的 Mvc 應用程序。
新建了應用程序之后,使用dotnet restore
和 dotnet run
命令來測試一下我們的應用程序。
可以看到已經(jīng)成功運行了。
我們打開瀏覽器輸入 http://localhost:5000,來看一下效果。
ps: Safari 下面,瀏覽器地址欄看不到端口號,實際上是5000端口。
發(fā)布到 Linux,Mac OS
如果發(fā)布應用程序,我們需要使用 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
使用默認的發(fā)布路徑,當看到Published 1/1 projects successfully
的時候,說明已經(jīng)發(fā)布成功了。 接著進入到 bin 文件夾下的Debug 文件夾下的netcoreapp1.0 文件夾,然后會看到有一個 publish 的文件夾。這就是默認發(fā)布生成的文件夾,在這個文件夾中可以看到我們程序所有依賴的程序集文件。
發(fā)布之后 publish 文件夾里面的子文件夾有必要說明一下。
appsettiong.json 應用程序的配置文件 refs 應用程序引用的.net fx系統(tǒng)程序集 runtimes 運行時環(huán)境,可以看到里面的文件夾包含 win7、linxu,mac os 等,說明我們這個應用程序是跨平臺的。 views 這個文件夾存放的就是我們的 mvc 的視圖文件。 wwwroot 文件夾,存放的是前端使用的 js 庫,css 樣式表,和圖片等。
然后我們把工作目錄切換到發(fā)布的 publish 文件夾。使用dotnet HelloWebApp.dll
測試發(fā)布過后的程序是否運行正常。
使用 Nginx 進行反向代理
- Mac OS
- Linux(Ubuntu)
- 注意事項
反向代理,即把我們應用程序的一部分路徑交給 Nginx 去處理,比如靜態(tài)文件,圖片等。另外一部分動態(tài)的交給 Kestrel 來處理。這樣可以降低我們的后端 Kestrel 的壓力,以及可以在 Nginx 配置負載均衡等。
還有一個很重要的優(yōu)勢就是 Web 中的緩存,會在代理服務器這一步來處理。大家看下面這個圖:
Mac OS
安裝 dotnet 環(huán)境參見官方網(wǎng)站 https://www.microsoft.com/net/core。
- 1、 在 mac 中打開命令行,輸入
brew install nginx
首先安裝 nginx。 - 2、 安裝完成之后,輸入
nginx -v
查看是否安裝成功。顯示nginx version: nginx/1.10.1
表示安裝已經(jīng)成功。 - 3、配置 nginx 代理。
安裝完 nginx 之后,默認的配置文件路徑在 /usr/local/etc/nginx
文件夾中。在這個文件夾中找到nginx.conf 配置文件,使用 Visual Studio Code 打開,在 Server
節(jié)點中,找到監(jiān)聽 80端口的location 節(jié)點,修改配置為如下:
location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
保存并退出。 然后使用sudo nginx -s reload
命令來重新加載配置。
然后我們打開瀏覽器 輸入http://localhost,發(fā)現(xiàn)此時已經(jīng)通過 nginx 來訪問我們的站點了。
ps: Safari 下面,瀏覽器地址欄看不到端口號,實際上是80端口。
Linux(Ubuntu)
安裝 dotnet 環(huán)境參見官方網(wǎng)站 https://www.microsoft.com/net/core。
首先在Ubuntu 中新建一個文件夾,把我們發(fā)布的 publish 文件夾拷貝到 Liunx 中。然后測試一下是否可以正常運行。
- 1、 在 linux(Ubuntu) 中新開一個命令行窗口,輸入
apt-get install nginx
首先安裝 nginx。 - 2、 安裝完成之后,輸入
nginx -v
查看是否安裝成功。顯示nginx version: nginx/1.4.6
表示安裝已經(jīng)成功。
yxd@ubuntu:~$ sudo nginx -v nginx version: nginx/1.4.6 (Ubuntu)
測試 nginx 是否運行成功,打開瀏覽器,輸入 http://localhost 查看是否顯示如下界面。
- 3、配置 nginx 代理。
安裝完 nginx 之后,默認的配置文件路徑在 /etc/nginx/sites-available/default
文件中。切換工作目錄到/etc/nginx/sites-available/
,使用sudo gedit default
命令打開 default 文件。 在 Server
節(jié)點中,找到監(jiān)聽 80端口的location 節(jié)點,修改內(nèi)容為如下:
server { listen 80; #root /usr/share/nginx/html; #index index.html index.htm; # Make site accessible from http://localhost/ server_name localhost; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
保存并退出。 然后使用sudo nginx -s reload
命令來重新加載配置。
然后我們打開瀏覽器 輸入http://localhost,發(fā)現(xiàn)此時已經(jīng)通過 nginx 來訪問我們的站點了。
注意事項
1、在使用 nginx 代理訪問站點的時候, 保持命令dotnet run HelloWebApp.dll
的命令行窗口必須開啟。
2、可以使用下面的命令來讓一個命令行運行在后臺進程中。
nohup dotnet HelloWebApp.dll &
這個時候你就可以把命令行窗口關掉了。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- 在Linux+Jexus中發(fā)布和部署Asp.Net?Core
- Linux?CentOS下docker部署Asp.Net?Core(.Net6)
- Linux系統(tǒng)Docker 部署 ASP.NET Core應用的流程分析
- .net core Api 部署到Linux的方法步驟
- .Net Core WebApi部署在Linux服務器上的方法
- Linux服務器下利用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)
相關文章
在ASP.NET 2.0中操作數(shù)據(jù)之四十五:DataList和Repeater里的自定義Button
本文主要介紹在DataList和Repeater添加諸如Button,LinkButton和ImageButton等控件的方法,并根據(jù)相關控件CommandName屬性觸發(fā)相應的事件,執(zhí)行相應的操作。2016-05-05Mac中體驗ASP.NET 5 beta2的K gen代碼生成
這篇文章主要介紹了Mac中體驗ASP.NET 5 beta2的K gen代碼生成,需要的朋友可以參考一下。2016-06-06在ASP.NET 2.0中操作數(shù)據(jù)之五十五:編輯和刪除現(xiàn)有的二進制數(shù)據(jù)
前面幾節(jié)我們講解了ASP.NET中如何上傳顯示二進制圖片數(shù)據(jù),這一節(jié)我們來介紹一下如何在GridView編輯和刪除已經(jīng)存在的二進制數(shù)據(jù)。2016-05-05在ASP.NET 2.0中操作數(shù)據(jù)之三十五:使用Repeater和DataList單頁面實現(xiàn)主/從報表
前面已經(jīng)介紹了ASP.NET 2.0中如何使用兩個頁面實現(xiàn)主/從報表,本文主要講解,如何使用一個單獨頁面實現(xiàn)主/從報表。2016-05-05在Linux+Jexus中發(fā)布和部署Asp.Net?Core
這篇文章介紹了在Linux+Jexus中發(fā)布和部署Asp.Net?Core,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-12-12《解剖PetShop》之三:PetShop數(shù)據(jù)訪問層之消息處理
本文主要講解PetShop4.0的數(shù)據(jù)訪問層的消息處理部分,需要的朋友可以參考下。2016-05-05解讀ASP.NET 5 & MVC6系列教程(14):View Component
這篇文章主要介紹了ASP.NET 5 MVC6 中View Component創(chuàng)建和視圖的使用,需要的朋友可以參考下2016-06-06Visual Studio 2017使用EF選擇MySQL數(shù)據(jù)源
這篇文章介紹了Visual Studio 2017使用EF選擇MySQL數(shù)據(jù)源,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-01-01ASP.NET MVC4入門教程(五):從控制器訪問數(shù)據(jù)模型
本文介紹ASP.NET MVC4中在創(chuàng)建控制器的時候,同時使用Entity Framework為模型生成增刪改查等方法,方便控制器調(diào)用。2016-04-04