原文:asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二)

续上一篇文章:asp.net core2.0 部署centos7/linux系统 --安装部署(一),遗留的问题而来,对程序添加守护进程,使网站可以持续化的运行起来。

 

1、介绍supervisor

    Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。因为Supervisor是Python开发的,安装前先检查一下系统否安装了Python2.4以上版本。下面以CentOS7,Python2.7版本环境下,介绍Supervisor的安装与配置步聚:

 

1、安装Python包管理工具(easy_install),安装supervisor

    命令:yum install python-setuptools

              easy_install supervisor

    

    说明:supervisor安装完成后会生成三个执行程序:supervisortd、supervisorctl、echo_supervisord_conf,分别是supervisor的守护进程服务(用于接收进程管理命令)、客户端(用于和守护进程通信,发送管理进程的指令)、生成初始配置文件程序

 

2、配置supervisor

    新建配置目录命令:mkdir /etc/supervisor

     生成supervisor的初始化配置文件 :echo_supervisord_conf > /etc/supervisor/supervisord.conf

    修改配置文件:vi supervisord.conf,如图:

   

    

    取消注释并修改文件并保存

 

3、配置管理进程

    说明:进程管理配置参数,不建议全都写在supervisord.conf文件中,应该每个进程写一个配置文件放在include指定的目录下包含进supervisord.conf文件中

    a.创建 /etc/supervisor/conf.d目录, 用于存放进程管理的配置文件 

    b.修改/etc/supervisor/supervisord.conf中的include参数,将/etc/supervisor/conf.d目录添加到include中

    

    应用程序1的配置:比如我们应用程序名称为:WebApplication1

    命令 vi WebApplication1.conf

    输入代码:

    [program:WebApplication1]

    command=dotnet WebApplication1.dll

    directory=/root/aspnetcoreapi

    autorestart=true

    stderr_logfile=/var/log/WebApplication1.err.log

    stdout_logfile=/var/log/WebApplication1.out.log

    environment=ASPNETCORE_ENVIRONMENT=Production

    user=root

    stopsignal=INT

 

    保存并退出!!!

 

4、启动Supervisor服务

    命令:supervisord -c /etc/supervisor/supervisord.conf

    查看状态:supervisorctl status

    

    

    检查到有一个应用程序在运行中,说明正常

 

5、进程的控制

     说明:supervisord启动成功后,可以通过supervisorctl客户端控制进程,启动、停止、重启。运行supervisorctl命令,不加参数,会进入supervisor客户端的交互终端,并会列出当前所管理的所有进程。

    

    上图中的WebApplication1就是我们在配置文件中[program:WebApplication1]指定的名字。

 

6、bash终端控制

    启动:supervisord -c /etc/supervisor/supervisord.conf

    supervisorctl status

    supervisorctl stop WebApplication1

    supervisorctl start WebApplication1

    supervisorctl restartWebApplication1

    supervisorctl reload

    supervisorctl update

 

7、Web管理界面

    说明:出于安全考虑,默认配置是没有开启web管理界面,需要修改supervisord.conf配置文件打开http访权限,将下面的配置修改:

    

    此配置说明我的管理界面是开启的哦,9001端口,我们来浏览一下地址http://192.168.0.171:9001/

    

     

 

8、开机启动Supervisor服务

  • 首先进入/lib/systemd/system目录,并创建supervisor.service文件,输入代码如下:

 

        [Unit]

        Description=supervisor

        After=network.target

 

        [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

 

保存并退出!!!

 

  • 修改文件权限

            命令:chmod 766 supervisor.service

 

  • 设置开机启动

            systemctl enable supervisor.service

            systemctl daemon-reload

     

以上Supervisor开机服务启动已经好了!!!

 

交流qq群:18362376

最新文章

  1. jQuery-1.9.1源码分析系列(三) Sizzle选择器引擎——总结与性能分析
  2. ASP.NET MVC4框架揭秘 源代码下载
  3. HTML5播放器实例
  4. 关于NSLog
  5. WCF技术的不同应用场景及其实现分析
  6. ripple
  7. 通过navicat连接mysql服务器提示SQL Error (1130): Host '192.168.1.100' is not allowed to connect to this MySQL server
  8. STL algorithm算法lower_bound和upper_bound(31)
  9. dedecms 标签的基本用法
  10. 【秒懂】号称最为简明实用的Django上手教程(下)
  11. js 获取随机数 Math.random()
  12. 2018上IEC计算机高级语言(C)作业 第3次作业
  13. 【CV】ICCV2015_Unsupervised Learning of Visual Representations using Videos
  14. UVALive - 7637 E - Balanced String(构造)
  15. vue2.0项目中 localhost改成ip地址访问
  16. 初始化集合的花样new HashMap<String, String>{ {put("str1":"abc");} }(转)
  17. pta l2-4(这是二叉搜索树吗?)
  18. day1-windows下python和selenium的安装
  19. tomcat错误信息解决方案【严重:StandardServer.await: create[8005]】
  20. POJ 1117 Pairs of Integers

热门文章

  1. [Angular] Custom directive Form validator
  2. Excel查询序列所相应的值-vLoopup函数,求比例分子改变但分母不变
  3. Linux学习总结(4)——Centos6.5使用yum安装mysql——快速上手必备
  4. [置顶] WebService学习总结(1)——WebService相关概念
  5. HDU——T 3501 Calculation 2
  6. [Angular] HttpParams
  7. 关于mysql事务行锁for update实现写锁的功能
  8. 对Linux下常用头文件总结
  9. 对inetd、xinetd与TCP_Wrapper的基本了解
  10. 【习题 3-1 UVA - 1585】Score