supervisor php脚本,linux下安装supervisor 保证脚本持续执行

安装supervisor

$ yum install -y supervisor

$ supervisord -v

3.1.4

安装配置

$ echo_supervisord_conf > /etc/supervisord.conf

安装配置

$ echo_supervisord_conf > /etc/supervisord.conf

修改配置

$ vim /etc/supervisord.conf

拖到代码最下面:将注释的代码改成下面的目录

[include]

files = /etc/supervisor/etc/*.conf

创建应用目录

mkdir -p /etc/supervisor /etc/supervisor/etc /etc/supervisor/log

创建脚本

vim /etc/supervisor/etc/redis_worker.conf[program:redis_worker]

command=/usr/local/redis5.0/redis-server /usr/local/redis5.0/redis.conf

process_name=%(process_num)02d

numprocs=20

user=root

autostart=true

autorestart=true

startsecs=1

startretries=20

redirect_stderr=false

stdout_logfile=/etc/supervisor/log/redis_worker.out.log

stderr_logfile=/etc/supervisor/log/redis_worker.err.log

f929c11a489847427edbd97282c44194.png

修改文件执行权限

$ chmod -R 0755 /etc/supervisord.conf

$ chmod -R 0755 /etc/supervisor

开启服务加载配置

$ supervisord -c /etc/supervisord.conf

$ supervisorctl update

$ supervisorctl reload

$ supervisorctl status

$ supervisorctl shutdown

若服务期间修改配置则使用update进行更新配置

$ supervisorctl reload

效果演示

4d25839d21a2864e93f7f71ebbc9ef48.png

$ supervisorctl reload 重新加载配置

$ supervisorctl status 查看脚本运行的状态

f48b936775e5c5dae9d512d680ccc49d.png

supervisor 配置文件:

/etc/supervisor.conf

[unix_http_server]

file=/tmp/supervisor.sock   ; unix socket文件,supervisorctl会使用

;chmod=0700                 ; socket文件权限

;chown=nobody:nogroup       ; socket文件所属用户和用户组

[inet_http_server]          ; web管理界面

port=127.0.0.1:9001         ; 管理界面的IP和端口

username=admin              ; 登陆管理界面的用户名

password=123456             ; 登陆管理界面的密码

[supervisord]

logfile=/tmp/supervisord.log ; 日志文件

logfile_maxbytes=50MB        ; 日志文件大小,为0表示不限制

logfile_backups=10           ; 日志文件备份数量,为0表示不备份

loglevel=info                ; 日志级别,也可设置为 debug,warn,trace

pidfile=/tmp/supervisord.pid ; PID文件路径

nodaemon=false               ; 是否前台启动,为false表示守护进程方式

minfds=1024                  ; 打开文件描述符的最小值

minprocs=200                 ; 创建进程数的最小值

[supervisorctl]

serverurl=unix:///tmp/supervisor.sock ; 通过 unix sokcet 连接supervisord

;serverurl=http://127.0.0.1:9001 ; 通过http方式连接supervisord

[include]

files = /etc/supervisord/confs/*.conf ; 包含其他配置文件,可以是.conf或.ini

我们需要把 [include] 前面的注释打开,并配置 files 的路径。

2.直接运行 supervisorctl status 报:

Error: Server requires authentication

For help, use /usr/local/bin/supervisorctl -h

因为你设置访问账号密码,所以只能先supervisorctl进去,在status。

需要先输入 supervisorctl 命令,输入用户名和密码进入,才能使用命令进行操作。

创建 files 中配置的目录。

mkdir -p /etc/supervisord/confs/

配置一个php脚本进程

我们在 /etc/supervisord/confs/ 目录下创建一个 demo.conf 文件。;demo表示程序名称

[program:demo]

;需要执行的命令

command=php demo.php

;命令执行的目录

directory=/data/wwwroot

;环境变量

environment=PATH="/data/nmp/php/bin/"

;哪个用户运行

user=root

;是否自启动

autostart=true

;是否自动重启

autorestart=true

;自动重启时间间隔,单位秒

startsecs=3

;错误日志文件

stderr_logfile=/tmp/demo.err.log

;输出日志文件

stdout_logfile=/tmp/demo.out.log

特别注意: 在一个conf下可以写多个脚本命令

例如:

[program:kr8851queue-csvsite]

process_name=%(program_name)s_%(process_num)02d

user=root

command=php /home/website/kr8851queue_web/artisan queue:work --queue=csvsite --tries=5 --memory=512 --sleep=5

autostart=true

autorestart=true

stderr_logfile=/home/logs/supervisord/kr8851queue/csvsite/error.log

stdout_logfile=/home/logs/supervisord/kr8851queue/csvsite/nohup.log

[program:kr8851queue-olddata]

process_name=%(program_name)s_%(process_num)02d

user=root

command=php /home/website/kr8851queue_web/artisan queue:work --queue=olddata --tries=5 --memory=512 --sleep=5

autostart=true

autorestart=true

stderr_logfile=/home/logs/supervisord/kr8851queue/olddata/error.log

stdout_logfile=/home/logs/supervisord/kr8851queue/olddata/nohup.log

[program:kr8851queue-official]

process_name=%(program_name)s_%(process_num)02d

user=root

command=php /home/website/kr8851queue_web/artisan queue:work --queue=official --tries=5 --memory=512 --sleep=5

autostart=true

autorestart=true

stderr_logfile=/home/logs/supervisord/kr8851queue/official/error.log

stdout_logfile=/home/logs/supervisord/kr8851queue/official/nohup.log

管理进程。

管理进程,需要我们启动 supervisor 服务,这里我们配置 systemctl,开机自动启动 supervisor。

创建 /usr/lib/systemd/system/supervisord.service 文件,配置如下:

[Unit]

Description=Supervisor daemon

[Service]

Type=forking

ExecStart=/usr/bin/supervisord

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

启动 supervisord

systemctl start supervisord.service

成功后,就可以通过 supervisorctl 交互命令管理进程脚本了。

读取有更新的配置文件

supervisorctl reread

更新配置文件修改过的程序

supervisorctl update

如果修改过 /etc/supervisord.conf 请使用如下命令

supervisorctl reload

启动,停止,重启,程序。

supervisorctl start 程序名

supervisorctl stop 程序名

supervisorctl restart 程序名

五、supervisor图形化管理界面

需要开启 /etc/supervisord.conf 文件中的 [inet_http_server]

[inet_http_server]

port=0.0.0.0:9001

username=admin

password=123456

设置完后,要开放 9001 端口

firewall-cmd --zone=public --add-port=9001/tcp --permanent

firewall-cmd --reload

重启 supervisor

supervisorctl reload

supervisor开启后如果日志文件过大,则可以采用定时任务的形式删除日志文件。

为避免日志文件过大,添加定时任务定时删除服务器上的日志文件。

$ mkdir /home/shell

$ vim delete.sh

#! /bin/bash

rm -rf /home/wwwroot/runtime/log/2020*/*

$ chmod -R 0755 /home/shell

新增定时任务

$ crontab -e

0 3 * * * /home/shell/delete.sh

每日凌晨3点执行脚本删除日志文件

supervisor 在一个文件中引入多个脚本命令[program:kr8851queue-csvsite]

process_name=%(program_name)s_%(process_num)02d

user=root

command=php /home/website/kr8851queue_web/artisan queue:work --queue=csvsite --tries=5 --memory=512 --sleep=5

autostart=true

autorestart=true

stderr_logfile=/home/logs/supervisord/kr8851queue/csvsite/error.log

stdout_logfile=/home/logs/supervisord/kr8851queue/csvsite/nohup.log

[program:kr8851queue-olddata]

process_name=%(program_name)s_%(process_num)02d

user=root

command=php /home/website/kr8851queue_web/artisan queue:work --queue=olddata --tries=5 --memory=512 --sleep=5

autostart=true

autorestart=true

stderr_logfile=/home/logs/supervisord/kr8851queue/olddata/error.log

stdout_logfile=/home/logs/supervisord/kr8851queue/olddata/nohup.log

[program:kr8851queue-official]

process_name=%(program_name)s_%(process_num)02d

user=root

command=php /home/website/kr8851queue_web/artisan queue:work --queue=official --tries=5 --memory=512 --sleep=5

autostart=true

autorestart=true

stderr_logfile=/home/logs/supervisord/kr8851queue/official/error.log

stdout_logfile=/home/logs/supervisord/kr8851queue/official/nohup.log

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值