supervisor 安装与使用

  • 下载

    sudo apt-get install supervisor
    
  • /etc/supervisor/conf.d/ 下新建 xx.conf

    sudo touch celery_req.conf
    
  • 编辑配置信息

    [program:celery_req]
    # 项目目录
    directory=/home/ubuntu/cache-task/
    # 执行命令
    command=/home/ubuntu/.local/share/virtualenvs/ubuntu-7Wf190Ea/bin/celery -A celery_tasks.tasks.req worker -l info
    # 子进程启动N秒后,如果状态为running,则认为启动成功
    startsecs=1
    # 哪个用户执行
    user = ubuntu
    # 随着supervisord启动,也一并启动。
    autostart=true
    # 日志输出 
    stderr_logfile=/home/ubuntu/cache-task/logs/req_stderr.log
    stdout_logfile=/home/ubuntu/cache-task/logs/req_stdout.log
    #把stderr重定向到stdout,默认 false
    redirect_stderr = true
    #stdout日志文件大小,默认 50MB
    stdout_logfile_maxbytes = 20MB
    #stdout日志文件备份数
    stdout_logfile_backups = 20
    
    [program:celery_cron]
    # 项目目录
    directory=/home/ubuntu/cache-task/
    # 执行命令
    command=/home/ubuntu/.local/share/virtualenvs/ubuntu-7Wf190Ea/bin/celery -A celery_tasks.tasks.cron worker -l info
    # 子进程启动N秒后,如果状态为running,则认为启动成功
    startsecs=1
    # 哪个用户执行
    user = ubuntu
    # 随着supervisord启动,也一并启动。
    autostart=true
    # 日志输出 
    stderr_logfile=/home/ubuntu/cache-task/logs/cron_stderr.log
    stdout_logfile=/home/ubuntu/cache-task/logs/cron_stdout.log
    
    [program:celery_cron_beat]
    # 项目目录
    directory=/home/ubuntu/cache-task/
    # 执行命令
    command=/home/ubuntu/.local/share/virtualenvs/ubuntu-7Wf190Ea/bin/celery -A celery_tasks.tasks.cron beat
    # 子进程启动N秒后,如果状态为running,则认为启动成功
    startsecs=1
    # 哪个用户执行
    user = ubuntu
    # 随着supervisord启动,也一并启动。
    autostart=true
    # 日志输出 
    stderr_logfile=/home/ubuntu/cache-task/logs/cron_beat_stderr.log
    stdout_logfile=/home/ubuntu/cache-task/logs/cron_beat_stdout.log
    
  • 启动 supervisord

    sudo supervisord -c /etc/supervisor/supervisord.conf
    
  • 查看是否启动

    sudo supervisorctl
    
  • 添加新的配置文件

    这里不要写 daemonize 日志输出 ,这会和 supervisor 会起冲突。

    # uwsgi 配置文件
    [uwsgi]
    # 配合nginx使用
    http = 127.0.0.1:5000
    # 项目路径
    chdir = /home/ubuntu/cache-task
    # 启动模块
    module = main:app
    # 指定工作进程
    processes = 4
    # 主进程
    master = true
    # 每个工作进程有2个线程
    threads = 2
    # 保存主进程的进程号,要写绝对路径
    pidfile = uwsgi.pid
    #虚拟环境环境路径
    virtualenv = /home/ubuntu/.local/share/virtualenvs/ubuntu-7Wf190Ea
    

    这里是supervisor 关于 uwsgi.conf 的文件。

    # supervisor 关于uwsgi的配置文件 /etc/supervisor/conf.d/uwsgi.conf
    [program:uwsgi]
    # 项目目录
    directory=/home/ubuntu/cache-task/
    # 执行命令
    command=/home/ubuntu/.local/share/virtualenvs/ubuntu-7Wf190Ea/bin/uwsgi --ini uwsgi.ini
    # 子进程启动N秒后,如果状态为running,则认为启动成功
    startsecs=5
    # 哪个用户执行
    user=ubuntu
    # 随着supervisord启动,也一并启动。
    autostart=true
    # 日志输出
    stderr_logfile=/home/ubuntu/cache-task/logs/uwsgi_stderr.log
    stdout_logfile=/home/ubuntu/cache-task/logs/uwsgi_stdout.log
    
  • 平滑启动

    # 1. 启动 supervisor 客户端
    sudo supervisorctl
    # 2. 读取新添加的配置文件
    reread
    # 3. 更新配置文件
    update
    # 4. 启动新的配置、进程名为 [program:uwsgi] 中的冒号后面自定义的部分
    start 进程名
    # 5. 查看状态
    status