centos安装Supervisor并开启web访问

2023-06-18 17:14 Linux 32 0

Supervisor是使用python开发的一个进程管工具,可以监控进程状态,异常退出时能自动重启

一、安装python环境

由于centos自带python环境,因此可以跳过安装

二、安装Supervisor

yum install -y supervisor
1
1

如果安装失败,需要安装下yum源

yum install -y epel-release
1
1

三、生成Supervisor配置文件

python /usr/bin/supervisord -c /etc/supervisord.conf
1
1

四、配置文件supervisord.conf

文件路径:/etc/supervisord.conf

; Sample supervisor config file.

[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; UNIX socket 文件,supervisorctl 使用
;chmod=0700                                ; socket文件的mode,默认是0700
;chown=nobody:nogroup                      ; socket文件的owner,格式:uid:gid
;username=user                             ; supervisorctl 操作时鉴权用户名(如果开启了)
;password=123                              ; supervisorctl 操作时鉴权用户名(如果开启了)

;[inet_http_server]                        ; HTTP服务器,提供web管理界面
;port=127.0.0.1:9001                       ; Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
;username=user                             ; 登录管理后台的用户名(如果开启了)
;password=123                              ; 登录管理后台的用户名(如果开启了)

[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; 日志文件,默认是 $CWD/supervisord.log
logfile_maxbytes=50MB                        ; 日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小
logfile_backups=10                           ; 日志文件保留备份数量默认10,设为0表示不备份
loglevel=info                                ; 日志级别,默认info,其它: debug,warn,trace
pidfile=/var/run/supervisord.pid             ; pid文件,默认supervisord.pid
nodaemon=false                               ; 是否在前台启动,默认是false,即以 daemon 的方式启动
minfds=1024                                  ; 可以打开的文件描述符的最小值,默认 1024
minprocs=200                                 ; 可以打开的进程数的最小值,默认 200
;umask=022                                   ; 进程文件创建umask,默认为022
;user=chrism                                 ; 默认值是当前用户,如果是root用户则需要
;identifier=supervisor                       ; 管理员标识符,默认为'supervisor'
;directory=/tmp                              ; 默认情况下,启动时不使用 cd
;nocleanup=true                              ; 不要在开始时清理tempfile,默认为false
;childlogdir=/tmp                            ; 'AUTO'子日志目录,默认$TEMP
;environment=KEY=value                       ; 要添加的环境变量,键值对
;strip_ansi=false                            ; 在日志中剥离ANSI转义码,默认为false

;下面的部分必须保留在RPC的配置文件中
;(superorctl /web接口)才能工作,其他接口可能需要
;通过在单独的rpcinterface:节中定义它们来添加
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; 通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致
;serverurl=http://127.0.0.1:9001                     ; 通过 http:// 的方式连接supervisord
;username=chris                                      ; 应该是相同的unix_http_server里的username(如果开启了)
;password=123                                        ; 应该是相同的unix_http_server里的password(如果开启了)
;prompt=mysupervisor                                 ; CMD行提示符(默认为"supervisor")
;history_file=~/.sc_history                          ; 使用readline历史记录(如果开启了)

;下面的示例程序部分显示了所有可能的程序分段值,
;创建一个或多个“真实的”程序段,以便能够控制它们

;[program:theprogramname]
;command=/bin/cat              ; 脚本执行命令,可以传递参数
;process_name=%(program_name)s ; 进程名,如果我们下面的numprocs参数为1的话,就不用管这个参数了,
;numprocs=1                    ; 启动进程的数目,非必须设置
;directory=/tmp                ; 进程运行前,会切换到这个目录,默认不设置,非必须设置
;umask=022                     ; 进程掩码,默认none,非必须
;priority=999                  ; 子进程启动关闭优先级,优先级低的,最先启动,关闭的时候最后关闭,默认值为999
;autostart=true                ; 如果是true的话,子进程将在supervisord启动后被自动启动,默认true
;autorestart=true              ; 子进程挂掉后自动重启的情况
;startsecs=10                  ; 子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功,默认10
;startretries=3                ; 当进程启动失败后,最大尝重启的次数,默认3
;exitcodes=0,2                 ; 进程的退出码
;stopsignal=QUIT               ; 进程停止信号 (default TERM)
;stopwaitsecs=10               ; 子进程发送stopsignal信号后,返回信息给supervisord所等待的最大时间。超过这个时间,supervisord会向该子进程发一个强制kill的信号一个强制kill的信号 (default 10)
;user=chrism                   ; 如果supervisord是root启动,可以设置个非root用户
;redirect_stderr=true          ; stderr的日志会被写入stdout日志文件中 (default false)
;stdout_logfile=/a/path        ; 子进程的stdout的日志路径,可以指定路径或者使用none和auto default AUTO
;stdout_logfile_maxbytes=1MB   ; 日志文件最大大小 (default 50MB)
;stdout_logfile_backups=10     ; 日志文件保留备份数量 (default 10)
;stdout_capture_maxbytes=1MB   ; 设定capture管道的大小 (default 0)
;stdout_events_enabled=false   ; 在stderr写入时触发事件 (default false)
;stderr_logfile=/a/path        ; 子进程的stderr的日志路径,可以指定路径或者使用none和auto default AUTO
;stderr_logfile_maxbytes=1MB   ; 日志文件最大大小 (default 50MB)
;stderr_logfile_backups=10     ; 日志文件保留备份数量 (default 10)
;stderr_capture_maxbytes=1MB   ; 设定capture管道的大小 (default 0)
;stderr_events_enabled=false   ; 在stderr写入时触发事件 (default false)
;environment=A=1,B=2           ; 子进程的环境变量,和其他的子进程不共 (def no adds)
;serverurl=AUTO                ; 覆盖服务器url计算 (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)


; 给进程分组,可以对组名进行统一的操作
;[group:thegroupname]
;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
;priority=999                  ; the relative start priority (default 999)

; 拆分配置文件,可以把每个program分成每个ini文件放到该目录
[include]
files = supervisord.d/*.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

五、开启web访问
修改配置文件里的inet_http_server
去掉前面的;

[inet_http_server]              ; HTTP服务器,提供web管理界面
port=0.0.0.0:9001               ; 0.0.0.0 表示监听全部ip
username=user                   ; 登录管理后台的用户名(如果开启了)
password=123                    ; 登录管理后台的用户名(如果开启了)
1
2
3
4
1
2
3
4

输入ip:9001,登录即可

五、常用命令

supervisorctl status         // 查看所有进程的状态
supervisorctl stop app       // 停止app
supervisorctl start app      // 启动app
supervisorctl restart        // 重启app
supervisorctl update         // 配置文件修改后使用该命令加载新的配置
supervisorctl reload         // 重新启动配置中的所有程序
1
2
3
4
5
6
1
2
3
4
5
6

暂无评论,我会出手
说点什么
最多上传8张图片,仅支持jpg,png格式图片,单张大小5MB以内!
用户名: