zoukankan      html  css  js  c++  java
  • supervisor 守护者进程配置小记

      

    安装 Supervisor

    联网状态下,官方推荐首选安装方法是使用easy_install,它是setuptools(Python 包管理工具)的一个功能。所以先执行如下命令安装 setuptools:

    yum install python-setuptools

    请更换root用户,执行如下命令安装 Supervisor:

    easy_install supervisor

    配置 Supervisor

    运行supervisord服务的时候,需要指定 Supervisor 配置文件,如果没有显示指定,默认会从以下目录中加载:

    $CWD/supervisord.conf  #$CWD表示运行 supervisord 程序的目录
    $CWD/etc/supervisord.conf
    /etc/supervisord.conf
    /etc/supervisor/supervisord.conf (since Supervisor 3.3.0)
    ../etc/supervisord.conf (Relative to the executable)
    ../supervisord.conf (Relative to the executable)

    所以,先通过如下命令创建目录,以便让 Supervisor 成功加载默认配置:

    mkdir /etc/supervisor

    加载目录有了,然后通过echo_supervisord_conf程序(用来生成初始配置文件)来初始化一个配置文件:

    echo_supervisord_conf > /etc/supervisor/supervisord.conf

    打开supervisord.conf文件,可以看到echo_supervisord_conf已经帮我们初始化好了一个样例配置,我们需要简单修改一下。

    尾部找到如下文本片段:

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

    改为:

    [include]
    files = conf.d/*.conf

    即,把注释去除、设置/etc/supervisor/conf.d为 Supervisor 进程配置文件加载目录。

    这样,Supervisor 会自动加载该目录下.conf后缀的文件作为共同服务配置。Supervisor 管理的每个进程单独写一个配置文件放在该目录下,supervisord.conf配置文件中保留公共配置。

    创建进程配置加载目录:

    mkdir /etc/supervisor/conf.d

    接下来就需要为我们已经部署的 ASP .NET Core 程序的宿主进程创建一个进程配置文件netcore.conf,保存并上传到/etc/supervisor/conf.d目录。

    配置文件netcore.conf内容如下:

    [program:Scorpio.WebApi]                        ;自定义进程名称
    command=dotnet Scorpio.WebApi.dll               ;程序启动命令
    directory=/home/wwwroot/scorpio                 ;命令执行的目录
    autostart=true                                  ;在Supervisord启动时,程序是否启动
    autorestart=true                                ;程序退出后自动重启
    startretries=5                                  ;启动失败自动重试次数,默认是3
    startsecs=1                                     ;自动重启间隔
    user=root                                       ;设置启动进程的用户,默认是root
    priority=999                                    ;进程启动优先级,默认999,值小的优先启动
    stderr_logfile=/var/log/Scorpio.WebApi.err.log  ;标准错误日志
    stdout_logfile=/var/log/Scorpio.WebApi.out.log  ;标准输出日志
    environment=ASPNETCORE_ENVIRONMENT=Production   ;进程环境变量
    stopsignal=INT                                  ;请求停止时用来杀死程序的信号

    启动 Supervisor 服务,命令如下:

    supervisord -c /etc/supervisor/supervisord.conf

    这时,在会发现我们部署的网站程序不在 shell 中通过dotnet xxx.dll启动,同样可以访问。

    设置 Supervisor 开机启动

    首先为 Supervisor 新建一个启动服务脚本supervisor.service,然后保存并上传至服务器/usr/lib/systemd/system/目录。

    脚本内容如下:

    # supervisord service 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 $OPTIONS shutdown
    ExecReload=/usr/bin/supervisorctl $OPTIONS reload
    KillMode=process
    Restart=on-failure
    RestartSec=42s
    
    [Install]
    WantedBy=multi-user.target

    设置开启启动:

    systemctl enable supervisor

    验证是否成功:

    systemctl is-enabled supervisor

    如果输出enabled则表示设置成功,也可重启服务器验证。

    Supervisorctl 管理进程

    Supervisor 服务启动后,受其管理的进程会在后台运行。可以通过supervisorctl客户端管理进程。

    输入如下命令进入supervisorctl交互终端,按Ctrl+C键退出:

    supervisorctl

    输入help查询帮助:

    supervisor> help
    
    default commands (type help <topic>):
    =====================================
    add    exit      open  reload  restart   start   tail
    avail  fg        pid   remove  shutdown  status  update
    clear  maintail  quit  reread  signal    stop    version
    

    输入help ****查询详细命令,比如输入help stop

    supervisor> help stop
    
    stop <name>             Stop a process
    stop <gname>:*          Stop all processes in a group
    stop <name> <name>      Stop multiple processes or groups
    stop all                Stop all processes



    说明一下,netcore.conf配置里的中文都去掉,那个是原文里解释用的,如果编辑的时候直接copy过去的话是不会生效的(而且好像也没错误提示,谨记!)



    原文:https://www.cnblogs.com/esofar/p/8043792.html

  • 相关阅读:
    exp 和imp 与expdp / impdp 区别
    nginx优化
    nginx root alias proxypass
    mysql3
    logrotate 用法
    SQL执行顺序
    http与RPC的关系
    docker
    windows 时间同步
    Java生成指定长度的随机字符串
  • 原文地址:https://www.cnblogs.com/sunshine-wy/p/9871050.html
Copyright © 2011-2022 走看看