本文共 4715 字,大约阅读时间需要 15 分钟。
进程的管理工具,监控服务器状态,遇到问题会自动重启。
1:sudo pip install supervisor
# 用python2安装
2:echo_supervisord_conf > supervisord.conf
# 执行这个命令,在当前文件夹下生成supervisor的配置文件 3:vim supervisord.conf
# 编辑生成的supervisor配置文件,把下面的代码加到文件最下面。 [include]files = /etc/supervisor/*.conf
4:cp supervisord.conf /etc
# 把生成的配置文件cp到etc下
5:mkdir /etc/supervisor
# 创建这个文件夹,用来储存要supervisor要管理的项目和执行脚本。 (第三步指定过) 6:cd /etc/supervisor
touch 项目名.conf
# 创建一个项目的配置文件,加入以下内容(要复制代码在图片下面,指定的两个路径要改成自己的)
[group:backend]programs=3dvserver[program:3dvserver]command=/etc/supervisor/scripts/3dv_script.shdirectory=/home/tanzhihao/3dview_remoteuser=rootautorestart=trueredirect_stderr=falseloglevel=infostopsignal=KILLstopasgroup=truekillasgroup=true
7:mkdir script
# 用来存放要执行的脚本
cd script
8: touch 脚本文件名.sh
# 用来执行的脚本,并编辑加入以下内容
#! /bin/bashsource ~/.bashrcexport FLASK_ENV=productioncd /home/tanzhihao/3dview_remoteexec gunicorn -w 2 -b 127.0.0.1:5005 manage:app
9:chmod 777 脚本文件名.sh
# 给这个文件加执行权限,只加x也可。
10:supervisord -c /etc/supervisord.conf
# 启动supervisor 11: supervisorctl
# 进入supervisor管理进程 相关命令
status # 查看程序状态,会显示你布置好的程序名 start 程序名称 # 启动程序 stop 程序名称 命令很多可以网上查下,这俩常用.supervisord -c /etc/supervisord.conf
启动supervisord并使用配置
注意这个命令有时候会启动多个supervisor进程,保证启动一个就可以.
unix:///tmp/supervisor.sock no such file 原因是 supervisor 默认配置会把 socket
文件和 pid 守护进程生成在/tmp/目录下,/tmp/目录是缓存目录,Linux 会根据不同情况自动删除其下面的文件。 原因找到了,就好办了,将 supervisor 配置文件里的相应地方改掉就好了。2、修改如下: vi /etc/supervisord.conf [unix_http_server]
;file=/tmp/supervisor.sock ; (the path to the socket file) file=/var/run/supervisor.sock ; 修改为 /var/run 目录,避免被系统删除[supervisord] ;logfile=/tmp/supervisord.log ; (main log file;default
$CWD/supervisord.log) logfile=/var/log/supervisor/supervisord.log ; 修改为 /var/log 目录,避免被系统删除 pidfile=/var/run/supervisord.pid ; 修改为 /var/run 目录,避免被系统删除 …[supervisorctl] ; 必须和’unix_http_server’里面的设定匹配
;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket serverurl=unix:///var/run/supervisor.sock ; 修改为 /var/run 目录,避免被系统删除 3、更新配置文件 supervisorctl update 至此就可以了,socket 文件 supervisor.sock 和守护进程 supervisord.pid 两个文件放在/var/run/下面,log 文件 supervisord.log 放在/var/log/下面。
原因:tmp文件夹属于linux的缓存文件夹,会被定期清除 1、打开配置文件
vim /etc/supervisord.conf 1 这里把所有的/tmp路径改掉,/tmp/supervisor.sock 改成
/var/run/supervisor.sock,/tmp/supervisord.log 改成 /var/log/supervisor.log,/tmp/supervisord.pid 改成 /var/run/supervisor.pid 要不容易被linux自动清掉 日志文件可以放在tmp文件夹下,问题不大,但是需要移动pid,sock这种后缀文件到其他文件夹,不一定需要/var/run这个文件夹, 2、修改权限(一般情况可不用修改)sudo chmod 777 /run sudo chmod 777 /var/log 1 2 如果没改,启动报错 IOError:
[Errno 13] Permission denied: ‘/var/log/supervisord.log’3、创建supervisor.sock(个人没有创建也可以正常启动)
sudo touch /var/run/supervisor.sock sudo chmod 777
/var/run/supervisor.sock 1 2 4、启动supervisord,注意stop之前的实例或杀死进程supervisord -c /etc/supervisor/supervisord.conf
启动supervisor,如果配置文件有错会报错 配置文件为/etcsupervisor/supervisor.conf 和conf.d文件里面的配置 然后执行 supervisorctl reload 重新加载配置supervisorctl status:查看所有进程的状态 supervisorctl stop
beanstalk:停止beanstalk supervisorctl start es:启动beanstalk supervisorctl restart beanstalk: 重启beanstalk supervisorctl update :配置文件修改后可以使用该命令加载新的配置 supervisorctl reload: 重新启动配置中的所有程序 1 2 3 4 5 6 总结:安装supervisor时候又遇到很奇怪的问题,可以直接找到pid然后kill,或者直接pkill supervisord
错误解决办法:A:Starting supervisor: Unlinking stale socket /var/run/supervisor.sockfind / -name supervisor.sockunlink /***/supervisor.sock
那就查看一下,必须保证全部杀死.
ps aux | grep supervisor ps aux | grep gunicornimport multiprocessing#预加载资源preload_app = True# 并行工作进程数workers = 2# 指定每个工作者的线程数threads = 2# 端口 5000bind = '127.0.0.1:5000'# 设置守护进程,将进程交给supervisor管理daemon = 'false'# 工作模式协程worker_class = 'gevent'# 设置最大并发量worker_connections = 2000# 设置进程文件目录pidfile = '/var/run/gunicorn.pid'# 设置访问日志和错误信息日志路径accesslog = "/home/tanzhihao/3dview_remote/gunlog/access.log"errorlog = "/home/tanzhihao/3dview_remote/gunlog/error.log"loglevel = "debug"# 设置日志记录水平loglevel = 'warning'
#! /bin/bashsource ~/.bashrcexport FLASK_ENV=productioncd /home/tanzhihao/3dview_remote#exec gunicorn -w 2 -b 127.0.0.1:5005 -k 'gevent' manage:app# -c 指定gunicorn配置文件exec gunicorn -c gunicorn.conf manage:app
[group:backend]programs=3dvserver[program:3dvserver]command=/etc/supervisor/scripts/3dv_script.shdirectory=/home/tanzhihao/3dview_remoteuser=rootautorestart=trueredirect_stderr=falseloglevel=infostopsignal=KILLstopasgroup=truekillasgroup=true
转载地址:http://xyvnz.baihongyu.com/