您的位置:首页 > 运维架构 > Linux

centos安装supervisor守护进程与简单配置使用

2018-01-31 12:33 746 查看
转载:http://blog.csdn.net/qq_36587980/article/details/54312467

首先确定你的yum仓库有supervisor的包:

yum list | grep supervisor

如果没有先加入repo源。
centos6:

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

centos7:

wget https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm

之后再运行

yum install supervisor

安装结束会有一个默认的配置文件在 /etc/supservisord.conf
; Sample supervisor config file.

[unix_http_server]


file=/var/run/supervisor/supervisor.sock ; (the path to the socket file)

;chmod=0700 ; sockef 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=/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=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)

nodaemon=false ; (start in foreground if true;default false)

minfds=1024 ; (min. avail startup file descriptors;default 1024)

minprocs=200 ; (min. avail process descriptors;default 200)

;umask=022 ; (process file creation umask;default 022)

;user=chrism ; (default is current user, required if root)

;identifier=supervisor ; (supervisord identifier, default is 'supervisor')

;directory=/tmp ; (default is not to cd during start)

;nocleanup=true ; (don't clean up tempfiles at start;default false)

;childlogdir=/tmp ; ('AUTO' child log dir, default $TEMP)

;environment=KEY=value ; (key value pairs to add to environment)

;strip_ansi=false ; (strip ansi escape codes in logs; def. false)

; the below section must remain in the config file
for RPC

; (supervisorctl/web interface) to work, additional interfaces may be

; added by defining them in separate rpcinterface: sections

[rpcinterface:supervisor]

supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]

serverurl=unix:///var/run/supervisor/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

;prompt=mysupervisor ; cmd line prompt (default "supervisor")

;history_file=~/.sc_history ; use readline history if available

; The below sample program section shows all possible
program subsection values,

; create one or more 'real' program: sections to be able to control them under

; supervisor.


;[program:theprogramname]

;command=/bin/cat ; the program (relative uses PATH, can take args)

;process_name=%(program_name)s ; process_name expr (default %(program_name)s)

;numprocs=1 ; number of processes copies to start (def 1)

;directory=/tmp ; directory to cwd to before exec (def no cwd)

;umask=022 ; umask for process (default None)

;priority=999 ; the relative start priority (default 999)

;autostart=true ; start at supervisord start (default: true)

;autorestart=true ; retstart at unexpected quit (default: true)

;startsecs=10 ; number of secs prog must stay running (def. 1)

;startretries=3 ; max # of serial start failures (default 3)

;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)

;stopsignal=QUIT ; signal used to kill process (default TERM)

;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)

;user=chrism ; setuid to this UNIX account to run the program

;redirect_stderr=true ; redirect proc stderr to stdout (default false)

;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO

;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)

;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)

;stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)

;stdout_events_enabled=false ; emit events on stdout writes (default false)

;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO

;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)

;stderr_logfile_backups=10 ; # of stderr logfile backups (default 10)

;stderr_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)

;stderr_events_enabled=false ; emit events on stderr writes (default false)

;environment=A=1,B=2 ; process environment additions (def no adds)

;serverurl=AUTO ; override serverurl computation (childutils)

; The below sample eventlistener section shows all
possible

; eventlistener subsection values, create one or more 'real'

; eventlistener: sections to be able to handle event notifications

; sent by supervisor.

;[eventlistener:theeventlistenername]

;command=/bin/eventlistener ; the program (relative uses PATH, can take args)

;process_name=%(program_name)s ; process_name expr (default %(program_name)s)

;numprocs=1 ; number of processes copies to start (def 1)

;events=EVENT ; event notif. types to subscribe to (req'd)

;buffer_size=10 ; event buffer queue size (default 10)

;directory=/tmp ; directory to cwd to before exec (def no cwd)

;umask=022 ; umask for process (default None)

;priority=-1 ; the relative start priority (default -1)

;autostart=true ; start at supervisord start (default: true)

;autorestart=unexpected ; restart at unexpected quit (default: unexpected)

;startsecs=10 ; number of secs prog must stay running (def. 1)

;startretries=3 ; max # of serial start failures (default 3)

;exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)

;stopsignal=QUIT ; signal used to kill process (default TERM)

;stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)

;user=chrism ; setuid to this UNIX account to run the program

;redirect_stderr=true ; redirect proc stderr to stdout (default false)

;stdout_logfile=/a/path ; stdout log path, NONE for none; default AUTO

;stdout_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)

;stdout_logfile_backups=10 ; # of stdout logfile backups (default 10)

;stdout_events_enabled=false ; emit events on stdout writes (default false)

;stderr_logfile=/a/path ; stderr log path, NONE for none; default AUTO

;stderr_logfile_maxbytes=1MB ; max # logfile bytes b4 rotation (default 50MB)

;stderr_logfile_backups ; # of stderr logfile backups (default 10)

;stderr_events_enabled=false ; emit events on stderr writes (default false)

;environment=A=1,B=2 ; process environment additions

;serverurl=AUTO ; override serverurl computation (childutils)

; The below sample group section shows all possible
group values,

; create one or more 'real' group: sections to create "heterogeneous"

; process groups.

;[group:thegroupname]

;programs=progname1,progname2 ; each refers to 'x' in [program:x] definitions

;priority=999 ; the relative start priority (default 999)

; The [include] section can just contain the "files"
setting. This

; setting can list multiple files (separated by whitespace or

; newlines). It can also contain wildcards. The filenames are

; interpreted as relative to this file. Included files *cannot*

; include files themselves.

[include]

files = supervisord.d/*.ini

其中已经有各个设置选项的默认配置:

1. unix_http_server 通讯端口约定

2. supservisord 主服务进程配置,需要此服务启动才能正常使用

3. rpcinterface rpc接口

4. supervisorctl 客户端配置,用来调度各个被守护的进程

5. program:example 监听的进程配置

6. eventlistener 事件监听

7. group 组

8. include 所加载的配置文件
一般按照默认配置即可使用,不建议在主配置里写其他进程,注意最后的include,会调用/etc/supervisord.d/*.ini文件。举例:

vi /etc/supervisord.d/example.ini

[program:swoole]

command=php /home/swoole.php //运行的命令

autostart=true //自动开启

autorestart=true //自动重启

user=root //用户

numprocs=3 //进程数

stdout_logfile=/var/log/supervisor-swoole.log //日志路径

使用

supervisorctl reread

重新加载配置,之后守护开始运行
如果有其他问题,可以使用命令重新运行所守护的进程

supervisorctl reload


(inet_http_server) 配置说明

配置后可使用浏览器查看和控制进程状态

[inet_http_server]         ; inet (TCP) server disabled by default

port=0.0.0.0: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))

[/code]


启动和关闭

启动 supervisord

supervisord
-c /etc/supervisord.conf


查看服务器进程

ps
-ef | grep super


关闭 supervisord

supervisorctl
shutdown


重新载入配置

supervisorctl
reload


其他客户端命令
supervisorctl status #查看程序状态

supervisorctl stop theprogramname # 停止 theprogramname

supervisorctl start theprogramname # 启动theprogramname

supervisorctl restart theprogramname # 重启

supervisorctl reread # 读取有更新(增加)的配置文件,不会启动新添加的程序

supervisorctl update # 重启配置文件修改过的程序

[/code]


设置开机启动

创建 supervisord.service
# supervisord service for systemd (CentOS 7.0+)

# by ET-CS (https://github.com/ET-CS)

[Unit]

Description=Supervisor daemon


[Service]

Type=forking

ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf

ExecStop=/usr/bin/supervisorctl  shutdown

ExecReload=/usr/bin/supervisorctl  reload

KillMode=process

Restart=on-failure

RestartSec=42s


[Install]

WantedBy=multi-user.target

[/code]

supervisord.service 代码仓库: https://github.com/Supervisor/initscripts/blob/master/centos-systemd-etcs

加入开机启动
cp supervisord.service  /usr/lib/systemd/system/supervisord.service

systemctl enable supervisord

systemctl is-enabled supervisord


[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  supervisor