发布ASP.NET Core程序到Linux生产环境详解编程语言
原文翻译:Publish to a Linux Production Environment
作者:Sourabh Shirhatti
在这篇文章里我们将介绍如何在 Ubuntu 14.04 Server上部署ASP.NET Core应用程序。我们将把ASP.NET Core应用程序放到一个反向代理服务器的后面,由代理服务器把请求转交给我们的Kestrel服务器。除此之外,我们还将保证我们的web应用程序作为一个守护进程来进行启动。我们需要配置一个进程管理工具来帮助我们在程序崩溃时恢复程序,以保证高可用性。
章节:
准备 复制你的应用程序 配置一个反向代理服务器 监控我们的应用程序 启动我们的应用程序 观察日志 使我们的应用程序安全化 准备工作1、使用一个具体有sudo权限的标准帐号访问Ubuntu 14.04 Server;
2、ASP.NET Core应用程序。
复制你的应用程序运行dotnet publish把你的ASP.NET Core应用程序打包成一个自包含(Self-Contained)的目录(publish目录,这个目录下的程序将被上传到服务器上并运行)。什么是自包含(Self-Contained)程序,请参考我的这篇文章:
.NET Core应用类型(Portable apps Self-contained apps)。在操作之前,通过FTP工具(WinSCP等)把publish目录下的程序全部上传到服务器指定的目录下。接下来我们运行我们的程序,具体怎么运行程序请参考这篇文章:使用.NET Core 1.0创建一个Self-Contained控制台应用。
配置一个反向代理服务器对于动态web应用来说,反向代理是一个非常常用的设置。反向代理会终止当前的请求并把请求转交给后端的ASP.NET Core应用程序。
为什么要使用反向代理服务器Kestrel作为一个web服务器,在处理动态内容方面是非常优秀的,但它并不像那些成熟的web服务器一样功能完备,这些服务器包括: IIS, Apache or Nginx。反向代理服务器可以把一些工作从Http服务器上卸掉,这些工作包括:静态内容处理、缓存、压缩以及SSL等。反向代理服务器可以部署在一个专用的服务器上或者和Http服务器在同一个集群里。本例中我们将使用Nginx作为反向代理服务器并和Http服务器部署在同一个机器上。
安装代理服务器sudo apt-get install nginx
安装Nginx
sudo service nginx start
启动Nginx
配置Nginx编辑文件:/etc/nginx/sites-available/default为如下:
server { listen 80; 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; }
监听在80端口,Http的默认端口;代理使用HTTP版本为:HTTP 1.1;把原始请求转交给:http://localhost:5000。
上述配置完成后使用如下命令来验证配置文件语法是否正确:
sudo nginx -t
如果配置语法没有问题,则重启Nginx以使配置生效:
sudo nginx -s reload监控我们的web应用
Nginx将转发请求给你的Kestrel服务器,但Kestrel并不像Windows上的IIS,它并不管理你的Kestrel进程,在这篇文章中我们将使用supervisor来启动我们的应用程序,当系统启动的时候或者当进程崩溃时进行自我恢复。
安装supervisor:
sudo apt-get install supervisor
配置supervisor:
/etc/supervisor/conf.d/hellomvc.conf (新增的一个文件)
[program:hellomvc] command=/usr/bin/dotnet /var/aspnetcore/HelloMVC/HelloMVC.dll directory=/var/aspnetcore/HelloMVC/ autostart=true autorestart=true stderr_logfile=/var/log/hellomvc.err.log stdout_logfile=/var/log/hellomvc.out.log environment=ASPNETCORE__ENVIRONMENT=Production user=www-data stopsignal=INT
重启supervisord
sudo service supervisor stop sudo service supervisor start启动我们的web应用程序
在这个案例中因为我们使用了supervisor来管理我们的应用,应用将会被supervisor自动开启。当操作系统启动的时候,supervisor作为守护进程使用一个System V的初始化脚本来启动,supervisor启动后紧接着会启动你的应用程序。
观察日志supervisord日志
sudo tail -f /var/log/supervisor/supervisord.log
我们自己应用的日志
tail -f /var/log/hellomvc.out.log
帮助到您了吗?
打赏作者(支付宝):
15877.html
cjavalinuxwindows相关文章
- Linux swapon命令:激活交换空间
- 宝塔面板Linux系统通过Docker部署VB.NET Asp.Net Core WebAPI应用
- .NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Ruby/Shell/Agile/CSS/HTML/HTTP/Unix/Linux大量PDF书籍/电子书籍下载, Effective Java 下载详解编程语言
- Linux下编写简易脚本教程(linux写一个脚本)
- Linux登录次数:计数与安全保障(linux登录次数)
- Linux下定时任务管理(c定时器linux)
- 对等深入理解Linux用户UID对等(linux用户uid)
- 扫描Linux远程漏洞扫描:及时发现保护网络安全(linux远程漏洞)
- Linux SD卡读写:掌握轻松技巧(linuxsd卡读写)
- .net搭建ASP.NET应用程序在Linux系统上(linux搭建asp)
- 深入Linux:挂载虚拟硬盘的方法(linux挂载虚拟硬盘)
- Linux支持ASP:开启新的Web应用之旅(linux支持asp)
- Linux的分支:从基础到智能扩展(linux的分支)
- 探索Linux系统在手机上的新可能(linux系统手机)
- Linux分支:前景光明(linux的分支)
- ASP.NET 下一代将全部开源并同时支持 Windows、Linux和Mac
- Linux下如何安装IDEA?(linux安装idea)
- 如何正确使用 Linux 引号?(linux的引号怎么打)
- Linux上安装.NET:提高开发效率,拓展技术栈(linux安装.net)
- 使用Linux和Snort防御网络安全(linuxsnort)
- Linux下ASP编程的新体验(linux支持asp吗)
- 服务器Xshell快速连接Linux服务器的技巧(xshell连接linux)
- 操作Linux远程控制:键盘操作技能(linux远程键盘)
- 如何正确发音 Linux?(linux发音)
- Exploring the Power of Linux Parallel Computing for Faster Computing Solutions.(linux并行计算)
- Linux软连接的创建方法和注意事项(linux如何软连接)
- 妙用Linux命令,更高效解决问题(linux 命令方法)
- Linux红帽服务器:强大而可靠的选择(linux红帽 服务器版)
- 深入了解Linux内核路由表(linux内核路由表)
- Linux:解析高效的逻辑分区空间(linux的逻辑分区)