前言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