前言css
在上篇文章中,主要介紹了 Dotnet Core Run 命令,這篇文章主要是講解如何在Linux中,對 Asp.Net Core 的程序進行發佈和部署。html
目錄
前端
- 新建一個 WebApp 項目
- 發佈到 Linux,Mac OS
- 使用 Nginx 進行反向代理
新建一個 WebApp 項目linux
在 Asp.Net Core 項目中,咱們使用 dotnet new -t WebApp 命令和建立一個新的空的 Web 應用程序。nginx
如下是我在 Mac 中的截圖:macos
主要是用如下幾個命令:json
mkdir HelloWebApp 這個命令是建立一個名爲 HelloWebApp 的文件夾。ubuntu
dotnet new -t Web 這個命令是使用 Web 模板來新建一個 WebApp 的 Mvc 應用程序。後端
新建了應用程序以後,使用dotnet restore 和 dotnet run 命令來測試一下咱們的應用程序。瀏覽器
能夠看到已經成功運行了。
咱們打開瀏覽器輸入 http://localhost:5000,來看一下效果。
ps: Safari 下面,瀏覽器地址欄看不到端口號,其實是5000端口。
發佈到 Linux,Mac OS
若是發佈應用程序,咱們須要使用 dotnet publish命令,經過使用 --help 參數能夠看到一些可使用的命令參數。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
-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 運行時環境,能夠看到裏面的文件夾包含 win七、linxu,mac os 等,說明咱們這個應用程序是跨平臺的。
- views 這個文件夾存放的就是咱們的 mvc 的視圖文件。
- wwwroot 文件夾,存放的是前端使用的 js 庫,css 樣式表,和圖片等。
而後咱們把工做目錄切換到發佈的 publish 文件夾。使用dotnet HelloWebApp.dll測試發佈事後的程序是否運行正常。
使用 Nginx 進行反向代理
- Mac OS
- Linux(Ubuntu)
- 注意事項
反向代理,即把咱們應用程序的一部分路徑交給 Nginx 去處理,好比靜態文件,圖片等。另一部分動態的交給 Kestrel 來處理。這樣能夠下降咱們的後端 Kestrel 的壓力,以及能夠在 Nginx 配置負載均衡等。
還有一個很重要的優點就是 Web 中的緩存,會在代理服務器這一步來處理。你們看下面這個圖:
至於怎麼樣添加代理服務器能夠識別到的緩存,能夠關注我後面發表的博客文章。
Mac OS
安裝 dotnet 環境參見官方網站 https://www.microsoft.com/net/core#macos。
一、 在 mac 中打開命令行,輸入 brew install nginx 首先安裝 nginx。
二、 安裝完成以後,輸入 nginx -v查看是否安裝成功。顯示nginx version: nginx/1.10.1表示安裝已經成功。
三、配置 nginx 代理。
安裝完 nginx 以後,默認的配置文件路徑在 /usr/local/etc/nginx 文件夾中。在這個文件夾中找到nginx.conf 配置文件,使用 Visual Studio Code 打開,在 Server 節點中,找到監聽 80端口的location 節點,修改配置爲以下:
1
2
3
4
5
6
7
8
|
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,發現此時已經經過 nginx 來訪問咱們的站點了。
ps: Safari 下面,瀏覽器地址欄看不到端口號,其實是80端口。
Linux(Ubuntu)
安裝 dotnet 環境參見官方網站 https://www.microsoft.com/net/core#ubuntu。
首先在Ubuntu 中新建一個文件夾,把咱們發佈的 publish 文件夾拷貝到 Liunx 中。而後測試一下是否能夠正常運行。
一、 在 linux(Ubuntu) 中新開一個命令行窗口,輸入 apt-get install nginx 首先安裝 nginx。
二、 安裝完成以後,輸入 nginx -v查看是否安裝成功。顯示nginx version: nginx/1.4.6表示安裝已經成功。
1
2
|
yxd@ubuntu:~$
sudo
nginx -
v
nginx version: nginx
/1
.4.6 (Ubuntu)
|
測試 nginx 是否運行成功,打開瀏覽器,輸入 http://localhost 查看是否顯示以下界面。
三、配置 nginx 代理。
安裝完 nginx 以後,默認的配置文件路徑在 /etc/nginx/sites-available/default 文件中。切換工做目錄到/etc/nginx/sites-available/,使用sudo gedit default命令打開 default 文件。 在 Server 節點中,找到監聽 80端口的location 節點,修改內容爲以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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,發現此時已經經過 nginx 來訪問咱們的站點了。
注意事項
一、在使用 nginx 代理訪問站點的時候, 保持命令dotnet run HelloWebApp.dll的命令行窗口必須開啓。
二、可使用下面的命令來讓一個命令行運行在後臺進程中。
1
|
nohup
dotnet HelloWebApp.dll &
|
這個時候你就能夠把命令行窗口關掉了。
以上就是本文的所有內容,但願對你們的學習有所幫助,也但願你們多多支持腳本之家。
原文連接:http://www.cnblogs.com/savorboard/p/dotnet-core-publish-nginx.html