Supervisord安装配置笔记
2017-03-10 00:00
218 查看
摘要: Supervisor 是基于 Python 的进程管理工具,只能运行在 Unix-Like 的系统上,也就是无法运行在 Windows 上。Supervisor 官方版目前只能运行在 Python 2.4 以上版本,但是还无法运行在 Python 3 上,不过已经有一个 Python 3 的移植版 supervisor-py3k。
Supervisor 有两个主要的组成部分:
如果出现没有权限的问题,可以使用这条命令
打开配置文件
默认的配置文件是下面这样的,但是这里有个坑需要注意,supervisord.pid 以及 supervisor.sock 是放在 /tmp 目录下,但是 /tmp 目录是存放临时文件,里面的文件是会被 Linux 系统删除的,一旦这些文件丢失,就无法再通过 supervisorctl 来执行 restart 和 stop 命令了,将只会得到
默认情况下,进程的日志文件达到50MB时,将进行分割,最多保留10个文件,当然这些配置也可以对每个进程单独配置。
更多参数请参考文档
注意:显示用 stop 停止掉的进程,用 reload 或者 update 都不会自动重启。也可以参考这里
centos7+上面可以使用 initscripts/centos-systemd-etcs 这个脚本
把这个文件重命名并放到 /usr/lib/systemd/system/supervisord.service 路径下。
然后执行一下命令,重新加载系统服务:
执行这个命令,启动服务:
查看服务状态:
可以看到服务以正常启动:
Supervisor 有两个主要的组成部分:
supervisord,运行 Supervisor 时会启动一个进程 supervisord,它负责启动所管理的进程,并将所管理的进程作为自己的子进程来启动,而且可以在所管理的进程出现崩溃时自动重启。
supervisorctl,是命令行管理工具,可以用来执行 stop、start、restart 等命令,来对这些子进程进行管理。
安装
sudo pip install supervisor
创建配置文件
echo_supervisord_conf > /etc/supervisord.conf
如果出现没有权限的问题,可以使用这条命令
sudo su - root -c "echo_supervisord_conf > /etc/supervisord.conf"
配置文件说明
想要了解怎么配置需要管理的进程,只要打开 supervisord.conf 就可以了,里面有很详细的注释信息。打开配置文件
vi /etc/supervisord.conf
默认的配置文件是下面这样的,但是这里有个坑需要注意,supervisord.pid 以及 supervisor.sock 是放在 /tmp 目录下,但是 /tmp 目录是存放临时文件,里面的文件是会被 Linux 系统删除的,一旦这些文件丢失,就无法再通过 supervisorctl 来执行 restart 和 stop 命令了,将只会得到
unix:///tmp/supervisor.sock不存在的错误 。
[unix_http_server] ;file=/tmp/supervisor.sock ; (the path to the socket file) ;修改为 /var/run 目录,避免被系统删除 file=/var/run/supervisor.sock ; (the path to the socket file) ;chmod=0700 ; socket file mode (default 0700) ;chown=nobody:nogroup ; socket file uid:gid owner ;username=user ; (default is no username (open server)) ;password=123 ; (default is no password (open server)) ;[inet_http_server] ; inet (TCP) server disabled by default ;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for ;all iface) ;username=user ; (default is no username (open server)) ;password=123 ; (default is no password (open server)) ... [supervisord] ;logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) ;修改为 /var/log 目录,避免被系统删除 logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) logfile_backups=10 ; (num of main logfile rotation backups;default 10) loglevel=info ; (log level;default info; others: debug,warn,trace) ;pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) ;修改为 /var/run 目录,避免被系统删除 pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) ... ;设置启动supervisord的用户,一般情况下不要轻易用root用户来启动,除非你真的确定要这么做 ;user=chrism ; (default is current user, required if root) ... [supervisorctl] ; 必须和'unix_http_server'里面的设定匹配 ;serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket ;修改为 /var/run 目录,避免被系统删除 serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket ;username=chris ; should be same as http_username if set ;password=123 ; should be same as http_password if set ...
默认情况下,进程的日志文件达到50MB时,将进行分割,最多保留10个文件,当然这些配置也可以对每个进程单独配置。
使用 include
在配置文件的最后,有一个 [include] 的配置项,跟 Nginx 一样,可以 include 某个文件夹下的所有配置文件,这样我们就可以为每个进程或相关的几个进程的配置单独写成一个文件。[include] files = /etc/supervisord.d/*.ini
启动 supervisord
执行 supervisord 命令,将会启动 supervisord 进程,同时我们在配置文件中设置的进程也会相应启动。# 使用默认的配置文件 /etc/supervisord.conf supervisord # 明确指定配置文件 supervisord -c /etc/supervisord.conf # 使用 user 用户启动 supervisord supervisord -u user
更多参数请参考文档
supervisorctl 命令介绍
# 停止某一个进程,program_name 为 [program:x] 里的 x supervisorctl stop program_name # 启动某个进程 supervisorctl start program_name # 重启某个进程 supervisorctl restart program_name # 结束所有属于名为 groupworker 这个分组的进程 (start,restart 同理) supervisorctl stop groupworker: # 结束 groupworker:name1 这个进程 (start,restart 同理) supervisorctl stop groupworker:name1 # 停止全部进程,注:start、restart、stop 都不会载入最新的配置文件 supervisorctl stop all # 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程 supervisorctl reload # 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启 supervisorctl update
注意:显示用 stop 停止掉的进程,用 reload 或者 update 都不会自动重启。也可以参考这里
开机自动启动 Supervisord
Supervisord 默认情况下并没有被安装成服务,它本身也是一个进程。官方已经给出了脚本可以将 Supervisord 安装成服务,可以参考这里查看各种操作系统的安装脚本centos7+上面可以使用 initscripts/centos-systemd-etcs 这个脚本
把这个文件重命名并放到 /usr/lib/systemd/system/supervisord.service 路径下。
然后执行一下命令,重新加载系统服务:
systemctl daemon-reload
执行这个命令,启动服务:
systemctl start supervisord
查看服务状态:
systemctl status supervisord
可以看到服务以正常启动:
● supervisord.service - Supervisor daemon Loaded: loaded (/usr/lib/systemd/system/supervisord.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2017-03-10 15:35:32 CST; 25min ago Process: 4073 ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf (code=exited, status=0/SUCCESS) Main PID: 4076 (supervisord) CGroup: /system.slice/supervisord.service └─4076 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.co... Mar 10 15:35:32 iz2zefecs7fwoasgkebymoz systemd[1]: supervisord.service holdo... Mar 10 15:35:32 iz2zefecs7fwoasgkebymoz systemd[1]: Starting Supervisor daemo... Mar 10 15:35:32 iz2zefecs7fwoasgkebymoz systemd[1]: Started Supervisor daemon. Hint: Some lines were ellipsized, use -l to show in full.
相关文章推荐
- AD学习笔记8——活动目录服务的基本安装和配置
- cvs安装配置笔记
- ANT的安装/配置笔记
- ANT的安装/配置笔记
- trac0.11+python2.5+svn1.5 安装配置笔记(不用apache)
- ANT的安装/配置笔记
- Django学习笔记一:安装配置
- JDK安装配置笔记.
- FreeBSD学习笔记12-pureftpd使用详解(1)-安装、配置、实现匿名登录
- linux 学习笔记 - php 环境安装与配置
- mod_python安装配置笔记
- ANT的安装/配置笔记
- freebsd 6.2 安装配置笔记[转]
- UBUNTU安装配置笔记一点点
- ANT的安装/配置笔记
- 简单的smarty安装配置笔记
- ANT的安装/配置笔记
- ANT安装配置笔记和最佳实践
- 写第一个Django app 笔记(安装配置)
- J2ME学习笔记_1_开发环境的安装和配置