CentOS 安装和使用 Supervisor(进程管理)

root安装

yum install python-setuptools
easy_install supervisor

卸载

yum -y remove supervisor

生成配置文件:

mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisord.conf

修改配置文件vim /etc/supervisord.conf

[unix_http_server]
;file=/tmp/supervisor.sock   ; (the path to the socket file)
file=/var/run/supervisor.sock   ; 修改为 /var/run 目录,避免被系统删除
;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))
...

[supervisord]
;logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile=/var/log/supervisor/supervisord.log ; 修改为 /var/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)
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 目录,避免被系统删除
;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
...

;[include]
;files = relative/directory/*.ini
修改为:
[include]
files=/etc/supervisor/*.conf 
(注意去掉分号);

创建一个文件 文件名随意 后缀为.conf
路径/etc/supervisor/tj_service.conf

[program:task-server]
autorestart=True
autostart=True
command=java -jar /home/qxj/programs/tasks/server/task-server-0.0.1-SNAPSHOT.jar
user=root
directory=/home/qxj/programs/tasks/server/
startsecs=30
priority=30
redirect_stderr = true
stdout_logfile = /home/qxj/logs/task-server.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1

[program:zk]
autorestart=True
autostart=True
command=/home/qxj/programs/kafka/bin/zookeeper-server-start.sh /home/qxj/programs/kafka/config/zookeeper.properties
user=root
directory=/home/qxj/programs/kafka/
startsecs=5
priority=5
redirect_stderr = true
stdout_logfile = /home/qxj/logs/zk.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1

[program:kafka]
autorestart=True
autostart=True
command=/home/qxj/programs/kafka/bin/kafka-server-start.sh /home/qxj/programs/kafka/config/server.properties
user=root
directory=/home/qxj/programs/kafka/
startsecs=10
priority=10
redirect_stderr = true
stdout_logfile = /home/qxj/logs/kafka.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1

[program:cassandra]
autorestart=True
autostart=True
command=/home/qxj/programs/cassdandra/bin/cassandra -f
user=root
directory=/home/qxj/programs/cassandra/
startsecs=15
priority=15
redirect_stderr = true
stdout_logfile = /home/qxj/logs/cassandra.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1

[program:elastic]
autorestart=True
autostart=True
command=/home/qxj/programs/elasticsearch/bin/elasticsearch
user=root
directory=/home/qxj/programs/elasticsearch/
startsecs=20
priority=20
redirect_stderr = true
stdout_logfile = /home/qxj/logs/elastic.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1

启动

supervisord -c /etc/supervisord.conf
supervisorctl reload
supervisorctl restart all

命令 说明
supervisorctl 是 supervisord 的命令行客户端工具

supervisorctl stop program_name 停止某个进程
supervisorctl start program_name 启动某个进程
supervisorctl restart program_name 重启某个进程
supervisorctl stop all 停止全部进程
supervisorctl reload 载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程
supervisorctl update 根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启

输入命令 supervisorctl 进入 supervisorctl 的 shell 交互界面(还是纯命令行?),就可以在下面输入命令了。:
help # 查看帮助
status # 查看程序状态
stop program_name # 关闭 指定的程序
start program_name # 启动 指定的程序
restart program_name # 重启 指定的程序
tail -f program_name # 查看 该程序的日志
update # 重启配置文件修改过的程序(修改了配置,通过这个命令加载新的配置)
也可以直接通过 shell 命令操作:

supervisorctl status
supervisorctl update

elassandra配置

不能开启dameon模式 必须要前台模式,增加 -f

[program:elassandra]
autorestart=True
autostart=True
command=/home/elassandra/bin/cassandra -e -f
user=t1
directory=/home/elassandra/
startsecs=15
priority=15
redirect_stderr = true
stdout_logfile = /home/t1/logs/elassandra.log
stopwaitsecs=10
stopasgroup=True
killasgroup=True
logfile_backups=1

查看日志supervisorctl tail elassandra
步骤:
1、停止supervisorctl stop all,没有停止的kill
2、修改配置文件/etc/supervisor/service.ini
3、重新加载supervisorctl reload
4、启动supervisorctl start all

0  2    * * * root supervisorctl restart all

配置Supervisor开机启动

vim /usr/lib/systemd/system/supervisord.service

[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

重新加载Systemd配置,使得Supervisord配置生效:

systemctl daemon-reload

执行命令:systemctl enable supervisord
执行命令测试是否为开机启动systemctl is-enabled supervisord
执行systemctl start supervisord失败
查看

[root@xx]# whereis supervisord
supervisord: /etc/supervisord.conf /root/anaconda2/bin/supervisord
[root@xx]# whereis supervisorctl 
supervisorctl: /root/anaconda2/bin/supervisorctl

查看supervisor日志

tail -f /var/log/supervisord.log

参考:https://www.cnblogs.com/52fhy/p/10161253.html

你可能感兴趣的:(Supervisor,linux,centos7)