创建flask简单应用(目录/home/shylin/demo下)
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'hello world' if __name__ == '__main__': app.debug = True app.run()
创建虚拟环境
virtualenv venv
(目录/home/shylin/demo下)进入虚拟环境
source venv/bin/activate
安装gunicornpip install gunicorn
配置Gunicorn ,新建gunicorn.conf 的配置文件和一个logs文件夹 (目录/home/shylin/demo下)
# gunicorn.conf 的配置 # 进程为3 workers = 3 # 绑定本地8000端口 bind = '127.0.0.1:8000'
下面步骤使用root操作,使用
sudo apt-get install supervisor
安装Supervisor (使用pip方式安装配置文件不会自动生成,项目中推荐使用pip进行安装)配置Supervisor,转到Supervisor的配置文件目录:
cd /etc/supervisor/conf.d/
新建demo.conf配置文件demo.conf配置 # 进程的名字 [program:demo] # gunicorn的安装路径 run是文件的应用名 gunicorn的配置文件 command=/home/shylin/demo/venv/bin/gunicorn run:app -c /home/shylin/demo/gunicorn.conf directory=/home/shylin/demo # # 项目的路径(run.py的上一级) numprocs=1 user=root # 启动进程的用户 startretries=3 # 重试次数 autostart=true autorestart=true # 自动重启 loglevel=info # 日志等级 stdout_logfile_maxbytes=10MB # 每个日志文件大小 stdout_logfile_backups=10 # 备份数 stdout_logfile=/home/shylin/demo/logs/demo_supervisor.log # 日志存放位置
supeivisor相关命令(注意绝对路径)
supervisord -c /usr/local/cloud/supervisor_conf/supervisord.conf # 启动命令(带上绝对路径)
------------------------------------------------
supervisorctl -c /usr/local/cloud/supervisor_conf/supervisord.conf # 进入supervisor终端(要先输入启动命令)
status # 查看进程状态
start/stop [program_name] # 开启/停止某个进程
start/stop all # 开启/停止全部进程
shutdown # 关闭所有进程
reread后再update # 重载配置文件
------------------------------------------------------------------------------
kill -s 9 `ps -aux | grep python | awk '{print $2}'` # 杀死python进程(慎用)
ps -ef | grep python | wc -l # 查看python进程个数
"使用supervisord和supervisorctl命令时要使用绝对路径 -c /xxxx"
Shylin