环境Centos6+,Python2.7
如果Python环境不满足2.7,请先升值至2.7版本(因老服务为老版本的centos6系统,默认python环境为2.6,经测试2.6环境使用supervisord报错无法启动)
一、Python环境升级安装过程
-
先安装相应的依赖
yum -y install gcc openssl-devel bzip2-devel
如果没安装好这些依赖的,后面还要重新走编译流程,别问我为什么知道 。 -
下载软件包
cd /opt
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz -
解压安装包
tar xvzf Python-2.7.15.tgz -
安装
cd Python-2.7.15
./configure --enable-optimizations
make && make altinstall
在检测脚本中加上enable-optimizations优化,主要是在这个版本上能启用PGO优化,让Python在运行时能变得更快,详细参考[2]。make 加altinstall参数,避免覆盖原来安装在/usr/bin/python 的版本。 -
查看安装是否成功
/usr/local/bin/python2.7 -V
–>
Python 2.7.15 -
建立软连接,使系统默认python指向2.7版本
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python -
解决yum不支持python2.7的问题
sed -i ‘s/python/python2.6.6/’ /usr/bin/yum
或者直接用vi编辑/usr/bin/yum把头部的python换成2.6.6。ps:编辑前记得备份。 -
安装pip
因为2.7.15版本已经内建了ensurepip模块,所以直接运行下面的命令去安装pip即可
python -m ensurepip
mv /usr/bin/pip /usr/bin/pip2.6.6
ln -s /usr/local/bin/pip /usr/bin/pip
ps:因为前面把默认Python版本换成了2.7.15,所以就没有指定全路径了,没换的需要确保用2.7的去安装。
输出:
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-9.0.3 setuptools-39.0.1
查看一下:
pip -V
–>pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)
二、supervisord安装及配置
pip install supervisor
supervisord --help #查看是否安装成功该命令
mkdir /etc/supervisor
mkdir /etc/supervisord.d
echo_supervisord_conf > /etc/supervisor/supervisord.conf #创建配置文件
下面我们来浅谈一下配置文件的内容:
从上至下,依次包括如下Section:
unix_http_server,其中,file指定了socket file的位置。
inet_http_server,用于启动一个含有前端的服务,可以从Web页面中管理服务。其中,port用于设置访问地址,username和password用于设置授权认证。
supervisord是对管理服务本身的配置。包含日志文件相关、进程文件、启动方式等等。
rpcinterface:supervisor中包含了rpc相关的接口。
supervisorctl是对supervisorctl服务相关的配置。
program是真正配置需要管理的任务。
eventlistener是对事件进行的管理。
group可以实现对任务组的管理。
include中可以引用其他的配置文件。
需要修改的内容为最尾部的include,其余均保持默认即可
vim /etc/supervisor/supervisord.conf
[include]
files = /etc/supervisord.d/*.ini
以127服务器的stafserver为例,创建该程序的守护进行配置文件
vim /etc/supervisord.d/stafserver6666.ini
[program:stafserver6666]
autostart = true ; 在supervisord启动的时候也自动启动
directory = /data/stafserver
command = /usr/java/jdk1.8.0_171/bin/java -jar -Xms256m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError staf-0.0.1.jar --server.port=6666
startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
user=root
stdout_logfile=/data/stafserver/svlog/stdout6666.log
stderr_logfile=/data/stafserver/svlog/stderr6666.log ;该项可以不要
stopasgroup = true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
autorestart = true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
redirect_stderr = true ; 把stderr重定向到stdout,默认false
保存
启动Supervisor服务
supervisord -c /etc/supervisor/supervisord.conf
服务管理
除了使用supervisord进行服务启动外,针对单独的服务,我们还可以使用supervisorctl进行服务管理。
例如:
启动指定的服务
supervisorctl start stafserver6666
停止指定的服务
supervisorctl stop stafserver6666
更新配置文件变化并重启变化的服务
supervisorctl update
三、添加supervisord为系统自启动服务
1、centos6
echo “/usr/bin/supervisord -c /etc/supervisor/supervisord.conf” >> /etc/rc.local
2、centos7
vim /usr/lib/systemd/system/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/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.targe
保存后执行systemctl daemon-reload
再执行systemctl enable supervisord.service即可
本文中版权归独秀天狼团队所有,转载请标注清楚。