supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。
安装supervisor
apt-get install supervisor
配置
生成配置文件
echo_supervisord_conf > /etc/supervisord.conf
添加自己的项目
用一个my_tornado项目 测试
vim /var/www/my_tornado/app.py
import tornado.httpserver
import tornado.ioloop
import tornado.web
import tornado.options
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello IndexHandler")
settings = {
"debug": True,
}
application = tornado.web.Application([
(r"/", IndexHandler),
], **settings)
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
tornado.options.parse_command_line()
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
vim /etc/supervisor/supervisord.conf
.......
#添加一个项目
[group:tornados]
programs=my_tornados
[program:my_tornados]
numprocs=8
numprocs_start=1
command=/home/hu/env/bin/python2.7 app.py --port=81%(process_num)02d
process_name=%(program_name)s%(process_num)d
directory=/var/www/my_tornado/
autorestart=true
redirect_stderr=true
stdout_logfile=/tmp/my_tornados.log
stdout_logfile_maxbytes=500MB
stdout_logfile_backups=50
stderr_logfile=/tmp/my_tornados.log
autostart=true
loglevel=info
user=www-data
numprocs=8 每个tornado一个进程,端口从8101到8109
autorestart=true 自动启动
command 执行的命令
加载配置文件
supervisorctl reload
hu@ubuntu:/tmp/page/1460476800$ ps -aux|grep python
lp 3450 0.0 0.2 136988 17140 ? D 4月12 0:00 /usr/bin/python /usr/lib/cups/backend/hpfax
root 43021 0.5 0.1 65888 15688 ? Ss 00:33 0:10 /usr/bin/python /usr/local/bin/supervisord
www-data 44217 0.2 0.2 62672 16620 ? S 00:58 0:01 /home/hu/env/bin/python2.7 app.py --port=8108
www-data 44218 0.2 0.1 62416 16108 ? S 00:58 0:01 /home/hu/env/bin/python2.7 app.py --port=8105
www-data 44219 0.2 0.1 62416 16180 ? S 00:58 0:01 /home/hu/env/bin/python2.7 app.py --port=8104
www-data 44220 0.2 0.1 62416 16156 ? S 00:58 0:01 /home/hu/env/bin/python2.7 app.py --port=8107
www-data 44221 0.2 0.1 62416 16164 ? S 00:58 0:01 /home/hu/env/bin/python2.7 app.py --port=8106
www-data 44222 0.2 0.1 62416 16024 ? S 00:58 0:01 /home/hu/env/bin/python2.7 app.py --port=8101
www-data 44223 0.2 0.1 62416 16016 ? S 00:58 0:01 /home/hu/env/bin/python2.7 app.py --port=8103
www-data 44224 0.2 0.1 62416 16112 ? S 00:58 0:01 /home/hu/env/bin/python2.7 app.py --port=8102
hu 44469 0.0 0.0 15980 2096 pts/6 S+ 01:05 0:00 grep --color=auto python
root@ubuntu:/home/hu# curl http://localhost:8101
Hello IndexHandler
root@ubuntu:/home/hu#
#查看状态
supervisorctl status
#停止服务
supervisorctl stop tornados:
#启动服务
supervisorctl start tornados:
#其他的命令
supervisorctl help