Asp.NetCore轻松学-使用Supervisor进行托管部署
前言
上一篇文章 Asp.NetCore轻松学-部署到 Linux 进行托管 介绍了如何在 Centos 上部署自托管的 .NET Core 应用程序,接下来的内容就是介绍如何使用第三方任务管理程序来托管 .NET Core 应用程序,这里以笔者常用的 Supervisor 为例子,从安装环境开始,一步一步的进入 Linux 的世界,部署程序还是以上一篇的项目文件 Deploy.Linux 为基础。
1. 安装前置条件
Centos 和 ubuntu 下,安装 supervisor 的步骤有所不同,在 Centos 下,需要先添加 Centos 下的扩展包源,
1.1 安装 Centos 扩展源
sudo yum install epel-release
1.2. 安装 supervisor
sudo yum install supervisor
- ubuntu 下使用 apt-get install supervisor 进行安装
1.3 supervisor 安装完成
- 输入supervisord --version 查看安装已完成,
注意是 supervisord 后面多了一个字符:d,因为安装的服务名称是:supervisord.service,通过命令查看服务文件可知道
cat /usr/lib/systemd/system/supervisord.service
1.4 设置 supervisor 开机启动
sudo systemctl enable supervisordsudo systemctl start supervisord
1.5 进入 supervisor 控制台执行命令
sudo supervisorctl
进入 supervisor 控制台,表示服务安装成功,并已成功启动
2. 创建 supervisor 托管的 .NET Core 的服务配置文件
2.1 查看配置文件目录
通过查看 cat /etc/supervisord.conf 看到 supervisor 引入配置文件的指定目录为
[include]files = supervisord.d/*.ini
可以看到,默认的托管服务配置文件目录在 supervisord.d/ 下面,这个目录的完整地址是 /etc/supervisord.d/
2.2 建立配置文件 demo.ini
关于 supervisor 配置文件的含义,这里不做过多的解释,可移步官网查看帮助文档:http://www.supervisord.org/configuration.html,我们在这里只做一个最简单的配置文件,刚好够启动 .NET Core 应用程序即可
[program:demo]command=/usr/bin/dotnet Deploy.Linux.dll ; 输入执行命令,这里表示 dotnet Deploy.Linux.dlldirectory=/data/sites/demo/publish ; 应用程序根目录 autostart=true ; 是否自动启动,当 supervisor 加载该配置文件的时候立即启动它 autorestart=true ; 是否自动重启,当执行 dotnet Deploy.Linux.dll 启动失败时,会重复的自动重启 logfile_maxbytes=50MB ; 该配置文件输出单个日志文件的大小 logfile_backups=10 ; 日志备份个数 loglevel=info ; 记录日志级别 stderr_logfile=/data/logs/demo/demo.err.log ; 指定标准错误输出日志文件 stdout_logfile=/data/logs/demo/demo.out.log ; 指定标准输出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 可配置环境变量,该环境变量将通过执行 dotnet Deploy.Linux.dll 命令的时候传入到 .NET Core 应用程序中 user=root ;启动服务的用户 stopsignal=INTredirect_stderr=true
- 上面包含了几个关键的参数,都在注释中了,接下来建立日志目录,否则服务启动出错,输入命令
2.3 创建日志文件目录
sudo mkdir -p /data/logs/demo
2.4 重启 supervisor 服务,并进入 supervisorctl
sudo systemctl restart supervisordsudo supervisorctl
2.5 查看服务状态
输入站点地址:http://139.219.9.102/ 查看服务已正常启动
2.6 查看日志输出
查看日志输出,定位到目录 /data/logs/demo 查看日志文件内容正常
结束语
本文从零开始介绍如何使用 Supervisor,一步一步的从安装环境到编写托管服务文件,设置执行文件、执行文件目录、日志输出配置等细节,最终成功将 .NET Core 应用程序托管到了 Supervisor 中,文中都是通过命令形式进行安装部署,对于接触 Linux 比较少的同学来说,可能有些不适应,不过不要紧,这些都是很基础的命令,我们呢,就是要多学多用,达到熟悉和强化记忆,然后平滑过渡到 Linux 平台。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C语言小笔记(1)
- 这一次搞懂Spring的XML解析原理
- 这一次搞懂Spring自定义标签以及注解解析原理
- 这一次搞懂Spring的Bean实例化原理
- 单片机入门学习十三 STM32单片机学习十 通用定时器
- Spring IOC原理补充(循环依赖、Bean作用域等)
- 这一次搞懂Spring代理创建及AOP链式调用过程
- 这一次搞懂Spring事务注解的解析
- 这一次搞懂Spring事务是如何传播的
- 这一次搞懂SpringMVC原理
- 这一次搞懂Spring Web零xml配置原理以及父子容器关系
- 这一次搞懂SpringBoot核心原理(自动配置、事件驱动、Condition)
- 全网最深分析SpringBoot MVC自动配置失效的原因
- Mybatis源码初探——优雅精良的骨架
- 深入Mybatis源码——配置解析