環境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即可
本文中版權歸獨秀天狼團隊所有,轉載請標註清楚。