专栏首页嘿dotNetAsp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署

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部署(已发布)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • linux(centos)搭建.net core 运行环境

    1、打开https://www.microsoft.com/net/download?initial-os=linux

    乔达摩@嘿
  • C# devExpress GridControl 行中行 子行 多级行

    乔达摩@嘿
  • Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署

    创建web项目(我自己使用vs2017 ,如使用vscode的需要自己安装windows的SDK和使用dotnet命令)

    乔达摩@嘿
  • OSPF-5种报文、3个阶段、3张表

    在理解OSPF各种报文之前,需先清楚OSPF协议,通过下面图例帮助理解(口诀:5种报文、3个阶段、3张表)

    py3study
  • Angular 4 组件通信

    最近在项目上,组件跟组件之间可能是父子关系,兄弟关系,爷孙关系都有。。。。。我也找找了很多关于组件之间通讯的方法,不同的方法应用在不同的场景,根据功能需求选择组...

    半指温柔乐
  • HBase 读流程解析与优化的最佳实践

    本文首先对 HBase 做简单的介绍,包括其整体架构、依赖组件、核心服务类的相关解析。再重点介绍 HBase 读取数据的流程分析,并根据此流程介绍如何在客户端以...

    Fayson
  • Flutter 约束宽高比的控件 AspectRatio

    撸码前有个点要注意一下,文档上面说了, 该widget 首先会尝试布局约束所允许的最大宽度。

    Flutter笔记
  • 容器云之K8s自动化安装方式的选择

    目前kubernetes 已经发展到1.5的时代,但在这之前学习和使用kubernetes还是走了不少弯路,第一个问题就是安装,也许你会说安装很简单。照着官网或...

    yuanyi928
  • 【Flutter 专题】83 图解自定义 ACEWave 波浪 Widget (一)

    和尚今天尝试一下绘制波浪的效果,虽然 pub 仓库中已经有成熟的插件,但和尚还是准备用之前学习的 Canvas 和 Animation 尝试自定义一个 ACEW...

    阿策
  • 你云我云•兄弟夜谈会 第一季 企业云

    周五的晚上,4个搞云计算的中年男人,在洗完碗、完成老板交代的工作,并把小孩弄上床后,10点多,通过微信群聊,又『坐』在一起,从一个场景开始,聊起了几个关于『云计...

    力哥聊运维与云计算

扫码关注云+社区

领取腾讯云代金券