使用Supervisor 管理.net core mvc部署

简介: Supervisor简介Supervisor是一个用python编写的,linux平台下的进程守护工具,它通过子进程的方式运行目标服务。相比rc.d脚本,它能更加方便地知道子进程发生了什么,并在其崩溃时自动重启子进程。

Supervisor简介

Supervisor是一个用python编写的,linux平台下的进程守护工具,它通过子进程的方式运行目标服务。相比rc.d脚本,它能更加方便地知道子进程发生了什么,并在其崩溃时自动重启子进程。

Supervisor著称的特点

简单

通过简单的INI风格配置文件进行配置

集中

通过Ctl工具统一管理所有应用的启动,停止和监控,也可以配置Web或远程命令行

高效

通过fork / exec启动其子进程。当某个进程终止时,操作系统会立即向Supervisor发出信号,而不像某些依赖麻烦PID文件和定期轮询来重启失败进程的解决方案。

可扩展

通过一个简单的事件通知协议,用任何语言编写的程序都可以用来监视它,并且有一个XML-RPC接口用于控制。

兼容性强

可以处理除Windows以外的所有内容。它在Linux,Mac OS X,Solaris和FreeBSD上经过测试和支持。它完全用Python编写,因此安装不需要C编译器。

主要组成部分

服务(supervisord)

它负责在自己的调用中启动子程序,响应来自客户端的命令,重启崩溃或退出的子过程,记录其子过程stdout和stderr输出,以及生成和处理与子过程生存期中的点相对应的“事件”。

控制台(supervisorctl)

它提供了一个类似shell的界面,通过它可以连接到不同的supervisord进程(一次一个),获取受控制的子进程的状态,停止并启动子进程,并获取正在运行的进程列表。

Web服务

激活配置文件的[inet_http_server]部分后,访问服务器URL(例如http:// localhost:9001/)以通过Web界面查看和控制进程状态。

XML-RPC接口

HTTP服务器提供了一个XML-RPC接口,用于查询和控制管理程序及其运行的程序。

实验环境

实验过程

1、首先我们发布一个.net core mvc应用,这里是一个叫smartops的应用,存放在/home/root/smartops文件夹下,启动入口为SmartOps.Web.dll,可以通过dotnet SmartOpw.Web.dll启动应用

2、执行下列命令安装supervisor

cd /home
wget [https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm](https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm)
rpm -ivh epel-release-latest-7.noarch.rpm
yum install supervisor -y

安装完成后,我们到配置目录去添加一个smartops的配置

cd /etc/supervisord.d/
vim smartops.ini

添加配置为

#冒号后面为应用名称
[program:smartops]
#应用启动命令,需要dotnet的完整路径
command=/usr/share/dotnet/dotnet /home/root/smartops/SmartOps.Web.dll
#启动的目录,否则应用会报找不到appsetting.json错误
directory=/home/root/smartops
#服务启动时自动启动,崩溃自动重启
autostart=true
autorestart=true
# .net core mvc应用启动参数,表明是生产环境
environment=ASPNETCORE_ENVIRONMENT=Production
user=root
# 日志输出路径
stdout_logfile=/var/log/supervisor/smartops.log
stderr_logfile=/var/log/supervisor/smartops.err.log

启动或重启supervisord服务,重新加载配置

systemctl restart supervisord

为了能更面捷的管理,我们打开Web管理控制台
取消[inet_http_server]下面这几行的注释,并将port改为 *:9001

vim /etc/supervisor.conf

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123               ; (default is no password (open server))

保存,重启supervisor服务,输入 http://192.168.0.195:9001,提示需要输入密码,用户名为user,密码123

img_6f29e3e51bc9ac67238bce64368305d6.png
管理控制台

在这里可以看到我们刚才运行的smartops的状态,当我们上传了更新后,点击restart即可重新运行应用,不需要再像以前那样先kill进程,再重新运行dotnet xxx.dll

img_696736911a10081575e0f832f295f947.png
ROLLAWAY

常见问题

1、无法启动服务,报File Not found

应写全dotnet的路径

2、无法找到appsetting.json错误

应提供directory参数,为应用根目录

引用

Supervisor offical Introduction

相关文章
|
2月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
277 6
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:<https://github.com/khellang/Scrutor>
315 5
|
9月前
|
JSON 数据格式
【Azure Fabric Service】演示使用PowerShell命令部署SF应用程序(.NET)
本文详细介绍了在中国区微软云Azure上使用Service Fabrics服务时,通过PowerShell命令发布.NET应用的全过程。由于Visual Studio 2022无法直接发布应用,需借助PowerShell脚本完成部署。文章分三步讲解:首先在Visual Studio 2022中打包应用部署包,其次连接SF集群并上传部署包,最后注册应用类型、创建实例并启动服务。过程中涉及关键参数如服务器证书指纹和服务端证书指纹的获取,并附带图文说明,便于操作。参考官方文档,帮助用户成功部署并运行服务。
321 73
|
10月前
|
人工智能
D1net阅闻 | 奥特曼:把期望降低100倍,OpenAI下月不会部署AGI
D1net阅闻 | 奥特曼:把期望降低100倍,OpenAI下月不会部署AGI
|
10月前
|
人工智能 自动驾驶 机器人
D1net阅闻|国务院国资委部署深化中央企业“AI+”专项行动
D1net阅闻|国务院国资委部署深化中央企业“AI+”专项行动
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
280 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
12月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
365 5
|
12月前
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
292 1
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
347 3
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
252 5