原文翻译: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 ;
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

帮助到您了吗?

打赏作者(支付宝):

发布ASP.NET Core程序到Linux生产环境的更多相关文章

  1. 从零开始,将ASP.NET Core部署到Linux生产环境

    研究.NET Core已经一段时间了,一直都是在Windows上开发,这2天尝试着将公司一个很简单的内部Web项目改造成了ASP.NET Core,并且部署到Linux上.生产环境如下: Linux ...

  2. 使用Docker发布Asp.Net Core程序到Linux

    CentOS安装Docker 按照docker官方文档来,如果有之前安装过旧版,先卸载旧版,没有的话,可跳过. sudo yum remove docker \ docker-client \ doc ...

  3. CentOs7 +Jexus 5.8.2部署Asp.Net Core WebApi 1.0生产环境

    Jexus 是一款运行于 Linux 平台,以支持  ASP.NET.PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器.最新版 5.8.2 已经发布,有如下更新: 1,现在大 ...

  4. ASP.NET Core MVC 在linux上的创建及发布

    前言 ASP.NET core转眼都发布半月多了,社区最近也是非常活跃,虽然最近从事python工作,但也一直对.NET念念不忘,看过了园区大神们搭建的Asp.net core项目之后,自己也是跃跃欲 ...

  5. Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署

    运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...

  6. Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署

    运行环境 照例,先亮底 centos:7.2 cpu:1核 2G内存 1M带宽 辅助工具:xshell xftp 搭建.net core运行环境 .net core 的运行环境我单独写了一篇,请看我的 ...

  7. ASP.NET Core 发布至Linux生产环境 Ubuntu 系统

    ASP.NET Core 发布至Linux生产环境 Ubuntu 系统,之前跟大家讲解了 dotnet publish 发布,而没有将整个系统串起来. 今天就跟大家综合的讲一下ASP.NET Core ...

  8. ASP.NET Core 程序发布到Linux(Centos7)爬坑实战

    前言 前阶段弄了个Linux系统想倒腾倒腾.NET Core,结果看了下网上的资料,大部分都是过期的,走了不少弯路,不过还好,今下午总算捣鼓出来了.Linux命令太多了,唉.血的教训:安装一定要看官网 ...

  9. ASP.NET Core教程:ASP.NET Core程序部署到Linux

    一.前言 这篇文章我们将讲解如何将ASP.NET Core 程序部署到Linux.这里我们使用的是虚拟机里面安装的Centos7.这里的ASP.NET Core程序,以上篇文章中发布的框架依赖文件为例 ...

随机推荐

  1. MS SQL的存储过程

    -- ============================================= -- Author: -- Create date: 2016-07-01 -- Descriptio ...

  2. Python--Cmd窗口运行Python时提示Fatal Python error: Py_Initialize: can't initialize sys standard streams LookupError: unknown encoding: cp65001

    源地址连接: http://www.tuicool.com/articles/ryuaUze 最近,我在把一个 Python 2 的视频下载工具 youku-lixian 改写成 Python 3,并 ...

  3. vs.php调试php使用外部的apache进行调试

    vs.php中使用外部的apache进行调试 一般phper们都会有自己配置好的开发调试环境,那么如何在vs.php中使用自己已经配置好的apache+php环境调试 php程序呢?如下: (1)从官 ...

  4. POJ 2083 Fractal

    Fractal Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6646   Accepted: 3297 Descripti ...

  5. 移动API-restful的设计原则和参考

    移动应用API设计10大技巧 http://jingyan.baidu.com/article/455a9950fd27ffa166277825.html RESTful API 设计指南 http: ...

  6. Part 2: Oracle E-Business Suite on Cloud FAQ

    Running Oracle E-Business Suite on Oracle Cloud is simple, but it doesn't take too much effort to co ...

  7. [LeetCode] Combination Sum 回溯

    Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C wher ...

  8. MyBatis知多少(21)更新操作

    上一章展示了如何使用MyBatis对表进行读取操作.本章将告诉你如何在一个表中使用MyBatis更新记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( ...

  9. hdu 2014鞍山赛区 5073 Galaxy

    题意:就是给你 n 个数,代表n个星球的位置,每一个星球的重量都为 1 ! 开始的时候每一个星球都绕着质心转动,那么质心的位置就是所有的星球的位置之和 / 星球的个数 现在让你移动 k 个星球到任意位 ...

  10. Network - Nmap

    wiki - Nmap Nmap - homepage Nmap参考指南(Man Page) Nmap中文网 常用示例 1) Ping扫描,打印出对扫描做出响应的主机: nmap -sP 192.16 ...