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

运行环境
照例,先亮底
centos:7.2
cpu:1核 2G内存 1M带宽
辅助工具:xshell xftp
搭建.net core运行环境
.net core 的运行环境我单独写了一篇,请看我的这篇文章[linux(centos)搭建.net core 运行环境]
准备你的.net core web 程序
我这里新建一个空的.net core web程序用以演示,实际部署时是你的项目
创建web项目(我自己使用vs2017 ,如使用vscode的需要自己安装windows的SDK和使用dotnet命令)

首先确保你的项目能在windows上运行

ok,接下来发布
我发布到默认的 bin\Release\netcoreapp2.1\publish\ 下面,你们可以自定义目录

发布完成后可看到如下文件结构

ok,web程序已经准备好。
上传应用程序到linux
我这里使用xftp工具上传,上传目录是 /home/website/WebApplication3

启动web站点
去程序所在目录
cd /home/website/WebApplication3
启动站点
dotnet WebApplication3.dll

显示上示信息代表启动成功。现在打开 http://你的服务器ip:5000
看到运行正常的web页面(5000端口打不开请检查你的服务器防火墙,网络配置等);
配置守护进程(Supervisor)
从上面的运行结果来看,.net core 程序是以服务的方式前台运行(类似windows控制台),那么如果:
1、服务器突然死机重启了;
2、异常导致站点服务挂掉了;
3、运行的shell被运维人员或什么人不知道,关掉了;
等等原因,不管什么原因,服务异常关闭在生产环境都是不可接受的,那么我能不能有什么办法保证,我的服务时刻要处于运行状态,一旦挂掉,我立刻重启它呢?
有,这就是Supervisor干的事;
(其实还有其他的进程守护工具的,有机会我们再单独聊聊)
1、安装Supervisor
yum install python-setuptools
easy_install supervisor
2、配置Supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
将supervisord.conf文件的最底下的,改成这样

[include]
files = conf.d/*.conf
如果需要启用UI管理的话也是修改这个文件
改这几句
;[inet_http_server] ; inet (TCP) server disabled by default
;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) #监听
;username=user ; (default is no username (open server)) #用户名
;password=123 #密码
*ps:如果服务已启动,修改配置文件可用“supervisorctl reload”命令来使其生效*
3、添加对WebApplication3.dll的守护
创建一个 WebApplication3.conf文件,内容如下:
;后面的中文是注释,为避免乱码等问题导致supervisor启动失败,可以先删掉注释再放到服务器
[program:WebApplication3]
command=dotnet WebApplication3.dll ; 运行程序的命令
directory=/home/wwwroot/WebApplication3/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/WebApplication3.err.log ; 错误日志文件
stdout_logfile=/var/log/WebApplication3.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
将文件拷贝至:“/etc/supervisor/conf.d/WebApplication3.conf”下
运行supervisord,查看是否生效
supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep WebApplication3
可以看到,WebApplication3正在运行,那么对WebApplication3站点的进程守护配置完成,下面测试一下;

4、Supervisor配置开机启动
不言而喻,这个很重要了,守护进程是需要开机启动的;
cd /usr/lib/systemd/system/
vim supervisord.service
插入以下内容,保存:
# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
激活开机启动:
systemctl enable supervisord
查看是否已激活:
systemctl is-enabled supervisord
5、测试Supervisor对.net core 站点的守护
使用:reboot命令重启后即可,再次访问站点,你会惊喜的发现站点依旧在运行
[参考]
http://www.cnblogs.com/ants/p/5732337.html
至此,.net core 程序普通部署方式完毕,若使用docker方式部署,请看我的 Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署(已发布)
Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署的更多相关文章
- ASP.NET Core 程序发布到Linux(Centos7)爬坑实战
前言 前阶段弄了个Linux系统想倒腾倒腾.NET Core,结果看了下网上的资料,大部分都是过期的,走了不少弯路,不过还好,今下午总算捣鼓出来了.Linux命令太多了,唉.血的教训:安装一定要看官网 ...
- Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...
- ASP.NET Core教程:ASP.NET Core程序部署到Linux
一.前言 这篇文章我们将讲解如何将ASP.NET Core 程序部署到Linux.这里我们使用的是虚拟机里面安装的Centos7.这里的ASP.NET Core程序,以上篇文章中发布的框架依赖文件为例 ...
- 从头认识一下docker-附带asp.net core程序的docker化部署
从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...
- .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)
在.NET Core部署到linux(CentOS)最全解决方案,常规篇一文,我们详细讲解了传统的.NET Core部署到Linux服务器的方法,学到了Linux在虚拟机下的安装.Xshell,Xft ...
- .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
在前两篇: .NET Core部署到linux(CentOS)最全解决方案,常规篇 .NET Core部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx) 我们对. ...
- 如何优雅的利用Windows服务来部署ASP.NET Core程序
上一篇文章中我给大家讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是通过Windows服务来进行部署,这样既可以做到开启自启动,又不会因为iis的反向代理而损失部分性能.但是美中不足 ...
- ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统
一.创建项目 本篇文章介绍如何将一个ASP.NET Core Web程序部署到Windows系统上.这里以ASP.NET Core WebApi为例进行讲解.首先创建一个ASP.NET Core We ...
- 把Asp.net Core程序代码部署到Ubuntu(不含数据库)
今天记录一下第一次把.net core 程序发布到linux系统.linux用的是ubuntu Server 18.04版本.运行的IDE是vs 2019,发布出来是.net core 2.2版本. ...
随机推荐
- Linux环境下Hadoop集群搭建
Linux环境下Hadoop集群搭建 前言: 最近来到了武汉大学,在这里开始了我的研究生生涯.昨天通过学长们的耐心培训,了解了Hadoop,Hdfs,Hive,Hbase,MangoDB等等相关的知识 ...
- 大白话讲解Promise
去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范.作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise的基本 ...
- BZOJ1173 CDQ分治 笔记
目录 二维数据结构->cdq 预备知识 T1: 二维树状数组 T2:cdq分治 bzoj1176 mokia:Debug心得 一类特殊的CDQ分治 附: bzoj mokia AC代码 二维数据 ...
- Cause: java. lang.InstantiationException: tk.mybatis.mapper.provider.base.BaseInsertProvider
相信现在Java Web开发都是用的mybatis吧,而用到mybatis很多人都不会错过通用mapper吧! (纯属瞎扯淡...qwq). 如我上一篇博客所写,目前公司新项目,使用了通用mapper ...
- vijos搭建踩坑
nodejs我用的8.x版本,可以工作. 和制作组交谈之后他们说最好榨汁机和主机不要在同一系统下. vj4/vj4/handler/base.py的第343行 从 super(Connection, ...
- 调用获取学生信息的接口,保存到excel里面
# 2.http: // doc.nnzhp.cn / index.php?s = / 6 & page_id = 14# 调用获取学生信息的接口,保存到excel里面 import requ ...
- 自定义类在PropertyGrid上的展示方法
自定义类在PropertyGrid上的展示方法 零.引言 PropertyGrid用来显示某一对象的属性,但是并不是所有的属性都能编辑,基本数据类型(int, double等)和.Net一些封装的类型 ...
- vue 图片预览插件
https://github.com/daidaitu1314/vue2-preview //cnpm cnpm install vue2-preview -save //引入 import VueP ...
- Windows下搭建Redis集群
Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Redis是单线程处理的,多核CPU也只能使用一个核, 所以部署在同一台电脑上,通过运行多个Redis实例组成集群,然后能提高CPU的利用 ...
- RHEL7 配置网络yum源
redhat系统安装好尽管默认带有yum,但是redhat的更新包只对注册用户有效(收费).所以需要更换yum源. 基本的流程就是: 1.删除redhat7.0系统自带的yum软件包: 2.自行下载所 ...