zoukankan      html  css  js  c++  java
  • linux centos Supervisor守护.netcore进程安装配置

     场景:当部署完.netcore程序后 使用dotnet xx.dll 后可以运行,但关闭shell或隔断时间会自动断开,此时部署的.netcore程序就不能访问了,此时需要用到Supervisor了

     Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

    1、安装Python

    yum install python-setuptools
    easy_install supervisor

    2、新建supervisor文件夹

    mkdir /etc/supervisor

    3、在该目录下,生成supervisord.conf文件

    echo_supervisord_conf > /etc/supervisor/supervisord.conf

    4、新建conf.d文件夹

    mkdir /etc/supervisor/conf.d

    此时的目录结构:

    5、编辑supervisord.conf文件,在文件中末尾添加

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

    6、在conf.d中添加文件test.conf

    文件内容:

    [program:testservice] ;程序名称,终端控制时需要的标识
    command=dotnet test2.dll ; 运行程序的命令
    directory=/home/website/test/ ; 命令执行的目录
    autorestart=true ; 程序意外退出是否自动重启
    stderr_logfile=/var/log/testservice.err.log ; 错误日志文件
    stdout_logfile=/var/log/testservice.out.log ; 输出日志文件
    environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
    user=root ; 进程执行的用户身份
    stopsignal=INT
    startsecs=1 ; 自动重启间隔

    7、指定supervisor配置文件

    supervisord -c /etc/supervisor/supervisord.conf

    8、Supervisor开机自启动

    在目录/usr/lib/systemd/system 中新建文件supervisord.service

    文件内容:

    #supervisord.service
    
    [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

    9、使配置生效

    systemctl daemon-reload

      重启supervisor服务
       $ supervisorctl reread
       如果重启的时候报错: 
       error: <class 'socket.error'>, [Errno 111] Connection refused: file: /usr/lib64/python2.6/socket.py line: 567
       则说明服务尚未启动,先启动即可:
       sudo supervisord -c /etc/supervisor/supervisord.conf
       sudo supervisorctl -c /etc/supervisor/supervisord.conf
       如果修改了 /etc/supervisord.conf ,需要执行 supervisorctl reload 来重新加载配置文件,否则不会生效。

    10、设置服务开机启动

    systemctl enable supervisor.service

     11、验证一下是否为开机启动

    systemctl is-enabled supervisord

     12、启动服务

    systemctl start supervisor.service

    至此完成

    参考文章:

    https://www.cnblogs.com/hobinly/p/7382038.html

    https://my.oschina.net/lichaoqiang/blog/1861791

    https://www.cnblogs.com/sundahua/p/9149692.html

    https://blog.csdn.net/chivalrousli/article/details/60324140

  • 相关阅读:
    Android(java)学习笔记68:使用proguard混淆android代码
    SGU 194 Reactor Cooling
    关于流量有上下界的网络流问题的求解
    关于最小割的求解方法
    HDU 5311 Hidden String
    POJ 3548 Restoring the digits
    POJ 2062 HDU 1528 ZOJ 2223 Card Game Cheater
    ZOJ 1967 POJ 2570 Fiber Network
    HDU 1969 Pie
    HDU 1956 POJ 1637 Sightseeing tour
  • 原文地址:https://www.cnblogs.com/xiao-sheng/p/11627748.html
Copyright © 2011-2022 走看看