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