V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yyy123456
V2EX  ›  问与答

supervisor 使用

  •  
  •   yyy123456 · 2017-07-04 14:33:22 +08:00 · 1418 次点击
    这是一个创建于 2700 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有时,php 守护进程会自己停掉。 保险起见,安装 supervisord

    当前系统:centos 6

    yum install supervisor
    

    启动命令: service supervisord start

    但是先不要启动。

    先写一个 php

    <?php
    while(1) {
      echo 1;echo "\n";
       sleep(1);
    }
    

    假设该 php 文件是 /var/www/html/public/temp/1.php 假设 linux 的 php 的 cli 命令文件是 /usr/local/php/bin/php

    确保 /etc/supervisord.conf 文件最后

    [include]
    files = /etc/supervisord.d/*.ini
    

    然后

    vim /etc/supervisord.d/1.ini
    

    (如果要监控不同的进程,多写几个 ini 即可,无需用组的方式,最简单)

    [program:a1]
    command = /usr/local/php/bin/php  /var/www/html/public/temp/1.php
    directory = /var/www/html/public/temp
    user = root
    stdout_logfile = /tmp/11.log
    redirect_stderr = true
    autostart = true
    autorestart = true
    

    解释看最下方的参考链接。 然后, 启动 supervisord,注意根据配置,会自动启动 1.php

    service supervisord start
    

    然后,现在查看 /tmp/11.log 会发现里面的内容不停增加,是 php 在输出。

    以下是一些可以在 shell 中使用的监控命令

    supervisorctl status 查看所有进程状况,最经常使用
    supervisorctl stop programxxx,停止某一个进程(programxxx),programxxx 为[program:chatdemon]里配置的值
    supervisorctl start programxxx,启动某个进程
    supervisorctl restart programxxx,重启某个进程
    supervisorctl stop all,停止全部进程,注:start、restart、stop 都不会载入最新的配置文件。
    supervisorctl reload,载入最新的配置文件,并按新的配置启动、管理所有进程。
    

    现在测试 supervisor 的自动重启功能。

    ps aux|grep 1.php
    然后
    kill -9 进程号
    

    继续 ps aux|grep 1.php 发现又有了!

    并通过不停增长的 /tmp/11.log 得到证实!

    现在我想停止 1.php 了,方法

    supervisorctl stop a1
    

    现在我想启动 1.php 了,方法

    supervisorctl start a1
    

    真是太方便了!!

    现在我要把 phpresque 的守护进程用其监控

    (QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380  php /var/www/worker3.php >> /tmp/1.log 2>&1 &)
    

    添加 /etc/supervisord.d/2.ini

    [program:a2]
    command = QUEUE=jobs3 REDIS_BACKEND=127.0.0.1:6380  /usr/local/php/bin/php /var/www/worker3.php
    directory = /var/www
    user = root
    stdout_logfile = /tmp/a2.log
    redirect_stderr = true
    autostart = true
    autorestart = true
    

    然后

    supervisorctl reload
    

    使用 参考:http://www.jb51.net/LINUXjishu/400050.html

    lsido
        1
    lsido  
       2017-07-04 21:12:31 +08:00 via Android
    supervisor 是很好用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2859 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:02 · PVG 23:02 · LAX 07:02 · JFK 10:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.