Quiet
  • HOME
  • ARCHIVE
  • CATEGORIES
  • TAGS
  • LINKS
  • ABOUT

Sean

  • HOME
  • ARCHIVE
  • CATEGORIES
  • TAGS
  • LINKS
  • ABOUT
Quiet主题
  • ASP.NET
  • Linux
  • 部署
  • CentOS

CentOS 7下.net core安装进程守护Supervisor

Sean
技术文章

2022-11-14 20:00:00

CentOS 7下.net core安装进程守护Supervisor


Supervisor主要用于解决后台运行及服务器重启的问题

  • 安装Supervisor

    yum install python-setuptools
    easy_install supervisor  #安装Supervisor
    

    若安装失败,可采用:

    yum install epel-release
    yum install -y supervisor
    
  • 配置Supervisor

    mkdir /etc/supervisor
    echo_supervisord_conf > /etc/supervisor/supervisord.conf  #配置 Supervisor
    vi /etc/supervisor/supervisord.conf
    

    文件的最后

    ;[include]
    ;files = relative/directory/*.ini
    

    改成(【注意】去掉;且不能有空格)

    [include]
    files = conf.d/*.conf
    
  • 配置应用(netcore为应用名称)

    mkdir /etc/supervisor/conf.d    --创建conf.d文件夹
    vi /etc/supervisor/conf.d/netcore.conf
    

    输入如下

    [program:netcore]
    command=dotnet mhqtalks.dll ; #(注意)运行程序的命令
    directory= /home/netcore/mhqtalks/ ; #(注意 注意)对应的你的项目的存放目录,这个地方好多初学者搞错!!!
    autorestart=true ; #程序意外退出是否自动重启
    stderr_logfile=/var/log/netcore.err.log ; #错误日志文件
    stdout_logfile=/var/log/netcore.out.log ; #输出日志文件
    #environment=ASPNETCORE_ENVIRONMENT=Production ; #进程环境变量
    user=root ; #进程执行的用户身份
    stopsignal=INT
    
  • 运行Supervisor

    supervisord -c /etc/supervisor/supervisord.conf 
    
  • 配置Supervisor开机启动

    vi /usr/lib/systemd/system/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 #来验证是否为开机启动
    
  • Supervisor其他命令

    命令 说明
    supervisord 初始启动Supervisord,启动、管理配置中设置的进程
    supervisorctl stop myproject 停止某一个进程(programxxx),programxxx为[program:chatdemon]里配置的值,这个示例就是chatdemon
    supervisorctl start myproject 启动某个进程
    supervisorctl restart myproject 重启某个进程
    supervisorctl stop groupworker 重启所有属于名为groupworker这个分组的进程(start,restart同理)
    supervisorctl stop all 停止全部进程,注:start、restart、stop都不会载入最新的配置文件
    supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
    supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
    注意:显示用stop停止掉的进程,用reload或者update都不会自动重启
  • 常见问题

    • 应用更新后怎么重启Supervisor

      ps -ef | grep supervisord 
      
      kill -9 pid #结束进程
      
      supervisord -c /etc/supervisor/supervisord.conf 
      
上一篇

在 CentOS 上安装 .NET SDK 或 .NET 运行时

下一篇

Windows下部署Nginx

©2023 By Sean. Theme:Quiet
Quiet主题