前言

上一篇文章 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 supervisord
sudo 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.dll
directory=/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=INT
redirect_stderr=true
  • 上面包含了几个关键的参数,都在注释中了,接下来建立日志目录,否则服务启动出错,输入命令
2.3 创建日志文件目录
sudo mkdir -p /data/logs/demo
2.4 重启 supervisor 服务,并进入 supervisorctl
sudo systemctl restart supervisord
sudo supervisorctl

2.5 查看服务状态

输入站点地址:http://139.219.9.102/ 查看服务已正常启动

2.6 查看日志输出

查看日志输出,定位到目录 /data/logs/demo 查看日志文件内容正常

结束语

本文从零开始介绍如何使用 Supervisor,一步一步的从安装环境到编写托管服务文件,设置执行文件、执行文件目录、日志输出配置等细节,最终成功将 .NET Core 应用程序托管到了 Supervisor 中,文中都是通过命令形式进行安装部署,对于接触 Linux 比较少的同学来说,可能有些不适应,不过不要紧,这些都是很基础的命令,我们呢,就是要多学多用,达到熟悉和强化记忆,然后平滑过渡到 Linux 平台。

Asp.NetCore轻松学-使用Supervisor进行托管部署的更多相关文章

  1. 目录---Asp.NETCore轻松学系列【目录】

    随笔分类 - Asp.NETCore轻松学系列 Asp.NETCore轻松学系列阅读指引目录 摘要: 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进 ...

  2. 【目录】Asp.NETCore轻松学系列

    随笔分类 - Asp.NETCore轻松学系列 Asp.NETCore轻松学系列阅读指引目录 摘要: 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进 ...

  3. Asp.NETCore轻松学系列阅读指引目录

    前言 耗时两个多月,坚持写这个入门系列文章,就是想给后来者更好更快的上手体验,这个系列可以说是从入门到进阶,适合没有 .NETCore 编程经验到小白同学,也适合从 .NET Framework 迁移 ...

  4. Asp.NetCore轻松学-部署到 Linux 进行托管

    前言 上一篇文章介绍了如何将开发好的 Asp.Net Core 应用程序部署到 IIS,且学习了进程内托管和进程外托管的区别:接下来就要说说应用 Asp.Net Core 的特性(跨平台),将 .Ne ...

  5. Asp.NetCore轻松学-部署到 IIS 进行托管

    前言 经过一段时间的学习,终于来到了部署服务这个环节,.NetCore 的部署方式非常的灵活多样,但是其万变不离其宗,所有的 Asp.NetCore 程序都基于端口的侦听,在部署的时候仅需要配置侦听地 ...

  6. Asp.NetCore轻松学-使用Docker进行容器化托管

    前言 没有 docker 部署的程序是不完整的,在写了 IIS/Centos/Supervisor 3篇托管介绍文章后,终于来到了容器化部署,博客园里面有关于 docker 部署的文章比比皆是,作为硬 ...

  7. Asp.NetCore轻松学-配置服务 apollo 部署实践

    前言     Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置 ...

  8. Asp.NetCore轻松学-实现一个轻量级高可复用的RabbitMQ客户端

    前言 本示例通过对服务订阅的封装.隐藏细节实现.统一配置.自动重连.异常处理等各个方面来打造一个简单易用的 RabbitMQ 工厂:本文适合适合有一定 RabbitMQ 使用经验的读者阅读,如果你还没 ...

  9. Asp.NetCore轻松学-业务重点-实现一个简单的手机号码验证

    前言     本文纯干货,直接拿走使用,不用付费.在业务开发中,手机号码验证是我们常常需要面对的问题,目前市场上各种各样的手机号码验证方式,比如正则表达式等等,本文结合实际业务场景,在业务级别对手机号 ...

随机推荐

  1. 基于DP的矩阵连乘问题

    当多个连续可乘矩阵做乘法时,选择正确的做乘顺序可以有效减少做乘法的次数,而选择的方法可以很容易的通过DP实现. 原理就是对于每一个所求矩阵,搜索所有可以相乘得到它的方法,比较它们的消耗,选取最小值作为 ...

  2. HTML DOM innerHTML 属性及实现图片连续播放

    定义和用法 innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML. 语法 tablerowObject.innerHTML=HTML 实例 下面的例子返回了表格行的 inner H ...

  3. django管理数据库之中文字符编码问题

    django中通过models创建数据库字符编码文字mysql数据库中默认的字符编码都为latin1,插入中文时会出现以下的错误类型 1366 - Incorrect string value: '\ ...

  4. [CVPR2015] Is object localization for free? – Weakly-supervised learning with convolutional neural networks论文笔记

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px "Helvetica Neue"; color: #323333 } p. ...

  5. JS 数据类型、赋值、深拷贝和浅拷贝

    js 数据类型 六种 基本数据类型: Boolean. 布尔值,true 和 false. null. 一个表明 null 值的特殊关键字. JavaScript 是大小写敏感的,因此 null 与 ...

  6. Jms的MessageListener中的Jms事务

    摘要 一般来说,如果为JmsTemplate做了事务配置,那么它将会与当前线程的数据库事务挂钩,并且仅在数据库事务的afterCommit动作中提交. 但是,如果一个MessageListener在接 ...

  7. redis常见重要性能指标数据分析和相关问题解决方案

    性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息.通过这些信息来分析文章后面提到的一些性能指标. info命令输出的数 ...

  8. sniffer 软件的使用方法

    一.捕获数据包前的准备工作 在默认情况下,sniffer将捕获其接入碰撞域中流经的所有数据包,但在某些场景下,有些数据包可能不是我们所需要的,为了快速定位网络问题所在,有必要对所要捕获的数据包作过滤. ...

  9. spring中bean的scope属性理解

    bean的scope属性有prototype,singleton,request, session几个属性 spring和struts2整合的时候,struts2的action要配置成scope=&q ...

  10. Java NIO SocketChannel套接字通道

    原文链接:http://tutorials.jenkov.com/java-nio/socketchannel.html 在Java NIO体系中,SocketChannel是用于TCP网络连接的套接 ...