VPS搬家了,重装一堆服务还有点麻烦,顺便记录一下部署Python Web的过程。
Gunicorn
Gunicorn是Python下支持WSGI的Web服务器,平常用到的Django、Flask这些Web框架也是自带服务器的,由于性能有限一般只在测试环境用,而uWSGI/Gunicorn 都是专门的服务器。
之前用uWSGI配置好麻烦,这次就用Gunicorn。
在Web应用的虚拟环境中安装
pip install gunicorn
,测试一下是否能启动
gunicorn app:app -w 3 -b localhost:5000
,能够正常启动便可以了,详细参数见
文档
,这里只设置了3个工作进程。
Supervisor
Supervisor是Python下的Linux进程管理工具,这样Web应用就可以作为服务自动启动,也方便管理。
安装
yum install supervisor
,启动服务
service supervisord start
。
添加配置文件
vim /etc/supervisor.d/daily.ini
。
[program:daily]
directory=/root/python/daily
command=/root/python/daily/env/bin/gunicorn app:app -w 3 -b localhost:5000
autostart=true
autorestart=true
stderr_logfile=/var/log/daily/daily.err.log
stdout_logfile=/var/log/daily/daily.out.log
加载配置
supervisorctl reread
重启服务
service supervisord restart
这样就可以了,如果之后修改代码,通过
supervisorctl start/restart/stop daily
可以轻松控制了。
Nginx
整合到Nginx里面就很简单了,反代
127.0.0.1:5000
,就可以了,Gunicorn最好绑定在本机地址上或者设置防火墙。
server {
...
...
location /daily {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header SCRIPT_NAME /daily;
proxy_pass http://127.0.0.1:5000;
}
}