supervisord的用途:
把不是守護進程的進程變成守護進程
監控它本身啓動的進程
能夠精確控制進程的狀態java
supervisord須要python,系統是ubuntu,py版本是2.7.6,要先安裝pip:python
apt-get updateweb
apt-get install pipdocker
pip install supervisor apache
問題:ubuntu
在某些機器上安裝pip失敗,以下:centos
root@tanxf:/opt/jdk1.8.0_121# apt-get install pip
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關係樹
正在讀取狀態信息... 完成
E: 未發現軟件包 pip
root@tanxf:/opt/jdk1.8.0_121# apt-get install aptitude
root@tanxf:/opt/jdk1.8.0_121# aptitude install python-piptomcat
可先裝aptitude工具python2.7
這個也行:工具
apt-get install python-setuptools
easy_install pip
......
Installing /usr/local/lib/python2.7/dist-packages/supervisor-3.3.1-nspkg.pth
Installing echo_supervisord_conf script to /usr/local/bin
Installing pidproxy script to /usr/local/bin
Installing supervisorctl script to /usr/local/bin
Installing supervisord script to /usr/local/bin
Successfully installed supervisor meld3
Cleaning up...
centos環境,py版本是2.7.5,用這個:
yum install python-setuptools
easy_install supervisor
安裝完成,腳本插入到了/usr/local/bin/目錄下(centos會在/usr/bin/目錄下 )
root@lq-OptiPlex-755:/usr/local/bin# ll
總用量 8444
drwxr-xr-x 2 root root 4096 3月 17 14:38 ./
drwxr-xr-x 17 root root 4096 3月 7 09:07 ../
-rwxr-xr-x 1 root root 8260272 3月 6 16:12 docker-compose*
-rwxr-xr-x 1 root root 338 3月 17 14:38 echo_supervisord_conf*
-rwxr-xr-x 1 lq lq 358330 7月 28 2016 nmon*
-rwxr-xr-x 1 root root 312 3月 17 14:38 pidproxy*
-rwxr-xr-x 1 root root 322 3月 17 14:38 supervisorctl*
-rwxr-xr-x 1 root root 318 3月 17 14:38 supervisord*
root@lq-OptiPlex-755:/usr/local/bin# echo_supervisord_conf > supervisord.conf
root@lq-OptiPlex-755:/usr/local/bin# ll
總用量 8456
drwxr-xr-x 2 root root 4096 3月 17 14:40 ./
drwxr-xr-x 17 root root 4096 3月 7 09:07 ../
-rwxr-xr-x 1 root root 8260272 3月 6 16:12 docker-compose*
-rwxr-xr-x 1 root root 338 3月 17 14:38 echo_supervisord_conf*
-rwxr-xr-x 1 lq lq 358330 7月 28 2016 nmon*
-rwxr-xr-x 1 root root 312 3月 17 14:38 pidproxy*
-rwxr-xr-x 1 root root 322 3月 17 14:38 supervisorctl*
-rwxr-xr-x 1 root root 318 3月 17 14:38 supervisord*
-rw-r--r-- 1 root root 8658 3月 17 14:40 supervisord.conf
root@lq-OptiPlex-755:/usr/local/bin#
以tomcat爲例(/usr/local/apache-tomcat-demo/bin):
在supervisord.conf里加上
[program:tt]
user=root
command=/usr/local/apache-tomcat-demo/bin/catalina.sh run
autostart=true
autorestart=true
stderr_logfile=/usr/local/logs/supervisord/tomcat_err.log
stdout_logfile=/usr/local/logs/supervisord/tomcat_sout.log
environment=JAVA_HOME="/opt/jdk1.7.0_79"
root@lq-OptiPlex-755:/usr/local/bin# supervisord -c ./supervisord.conf
啓動程序,能夠經過supervisorctl查看狀態。(不過失敗了,去看下日誌調試下)
root@lq-OptiPlex-755:/usr/local/bin# supervisorctl
tt FATAL Exited too quickly (process log may have details)
supervisor> restart tt
tomcattest: ERROR (not running)
tomcattest: ERROR (spawn error)
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> reload
Really restart the remote supervisord process y/N? y
Restarted supervisord
supervisor> start tt
tt: ERROR (already started)
supervisor> restart tt
tt: stopped
tt: started
supervisor> status
tt RUNNING pid 10180, uptime 0:00:05
調試狀況,查看日誌時發現
/usr/local/apache-tomcat-demo/bin/catalina.sh: 1: exec: /opt/jdk1.7.0_79 /bin/java: not found
沒找到jdk,可是單獨啓動tomcat是沒有問題的,系統環境變量沒有問題,多是supervisord 的環境變量找不到java_home,查看supervisord 配置發現能設置環境變量,加上environment
修改完.conf,先reload,在restart下,查看狀態,已經running了。
還有它自帶web管理頁面,默認配置是註釋掉的
[inet_http_server] ; inet (TCP) server disabled by default
port=*:9001
;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))
修改完配置,從新reload下,就能夠了