在Centos7使用supervisor
置顶:
推荐使用pip install supervisor安装最新版supervisor,yum install supervisor最高版本3.1.4,有很多bug
名称解释
supervisor:要安装的软件的名称。
supervisord:装好supervisor软件后,supervisord用于启动supervisor服务。
supervisorctl:用于管理supervisor配置文件中program。
Centos7 Python3.7安装最新版supervisor
Centos7 通过编译安装的Python3.7 pip37 安装supervisor最新版。pyhton3支持日志中文,python3配合最新版supervisor,bug最少,体验最佳。
1 | ➜ ~ pip37 install supervisor |
卸载的时候,发现了Python3的supervisor路径
1 | ➜ ~ pip37 uninstall supervisor |
supervisor配置
1 | ➜ ~ /usr/local/python3/bin/echo_supervisord_conf > /etc/supervisor/supervisord.conf |
启动服务
1 | ➜ ~ /usr/local/python3/bin/supervisord -c /etc/supervisor/supervisord.conf |
配置修改后的重新载入,代替supervisorctl reload1
2
3
4
5
6
7
8
9
10
11
12
13
14(scrapy_hub) ➜ gamble_monitor git:(master) /usr/local/python3/bin/supervisorctl -c /etc/supervisor/supervisord.conf
update_api_run RUNNING pid 22136, uptime 0:09:04
supervisor> reload
Really restart the remote supervisord process y/N? y
Restarted supervisord
supervisor> help
default commands (type help <topic>):
=====================================
add exit open reload restart start tail
avail fg pid remove shutdown status update
clear maintail quit reread signal stop version
supervisor>
分割线:下面供参考,yum方式安装是旧版本。
使用yum安装
1 | yum install epel-release |
应用配置
Supervisor 管理应用的进程,需要对每个应用进行配置。在 /etc/supervisord.d
中创建 helloworld.ini
,每个应用对应一个配置文件即可。
下面是配置文件的示例:1
2
3
4
5
6
7
8
9
10
11[program:helloworld] ;程序的名称
command = dotnet HelloWorld.dll ;执行的命令
directory = /root/www/ ;命令执行的目录
environment = ASPNETCORE__ENVIRONMENT=Production ;环境变量
user = root ;执行进程的用户
stopsignal = INT
autostart = true ;是否自动启动
autorestart = true ;是否自动重启
startsecs = 1 ;自动重启间隔
stderr_logfile = /var/log/helloworld.err.log ;标准错误日志
stdout_logfile = /var/log/helloworld.out.log ;标准输出日志
实际项目:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16supervisor部署:
cd /etc/supervisord.d/
vim product_new_merchant.ini
[program:product_new_merchant]
user = root
directory = /root/data_hub/all_script
command = /root/.virtualenvs/ProductNewMerchant/bin/python3.7 product_new_merchant.py
autostart = true
autorestart = true
startsecs = 1
environment = MYSQL_HOST="192.168.6.160",MYSQL_DATABASE="xxxxx",MYSQL_USER_NAME="xxxxxx",MYSQL_PASSWORD="xxxxx",MYSQL_PORT=3306,REDIS_HOST="192.168.95.55",LANG="en_US.utf8",LC_ALL="en_US.UTF-8",LC_LANG="en_US.UTF-8"
stdout_logfile = /var/log/product_new_merchant.log
redirect_stderr=true
stopsignal = INT
创建好配置文件后,重启 Supervisor1
supervisorctl reload
或热重启,不会重启其他子进程1
2
3supervisorctl reread
supervisorctl update
为确保没有错误,可以正常启动,使用前文提到的查看Supervisor状态的命令查看。或者查看要管理的进程是否启动,本例中可以使用下面的命令:1
2
3
4ps -ef | grep HelloWorld.dll
或
ps -ef | grep dotnet
可能遇到的问题
1、我在网页上tail的时候,要不就是一直不返回,要不就是Error response
Error code 410.
Message: Gone.
解决方法:可能是Chrome某个插件不兼容,影响到了supervisor。使用无痕模式或者换一个Safari浏览器,解决了。
2、stderr_logfile和stdout_logfile 颠倒
3、web界面中文乱码
参考:https://www.crifan.com/upgrade_centos_supervisor_to_latest_version/1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
213.1.4老版本,升级最新版
[root@web-95-55 admin]# supervisord --version
3.1.4
备份yum版本supervisor配置文件,供参考:
yum remove supervisor
yum remove python-meld3
pip install supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
vim /etc/supervisor/supervisord.conf
修改应用配置文件路径:
;[include]
files = /etc/supervisor/config.d/*.ini
mkdir /etc/supervisor/config.d
cd /etc/supervisor/config.d
启动supervisor:
supervisord -c /etc/supervisor/supervisord.conf
附:公司运维小哥笔记
1 | yum install supervisor -y |
参考:
1、https://www.chengxulvtu.com/supervisor-on-centos-7/
2、https://blog.csdn.net/DongGeGe214/article/details/80264811