Flask + gunicorn + nginx 部署Web

现在QA内部很多组都是用Flask做一些web开发,或者接口开发,然而很多应用可能直接使用Python 运行,这个存在很大的性能问题(之前做的AB测试数据)。下面介绍怎么使用Flask + gunicorn + nginx 部署一个Flask应用,实际上网上介绍这个的更多,但是大多偏于复杂,操作难度大。
 
一、准备好Flask应用
就是自己开发的Flask应用,可以使用Python跑起来即可,假设运行方式是python run_demo_flask,使用的端口是8080。
 
二、使用gunicorn
首先安装gunicorn,很简单,没有安装过的,直接:
pip install gunicorn
pip install gevent
使用gunicorn运行Flask:
gunicorn --worker-class=gevent -w 4 -t 30 -b ip:8080 run_demo_flask:app
注意:将ip换成你部署的服务器的IP地址,app为flask的实例对象名字。
 
三、使用nginx代理
 
可以将下面的配置放入到nginx的vhost目录,(名字为xxxx.conf,必须以conf结尾),然后重启nginx即可。
重启方式
nginx -t  # 测试下配置是否正确
service nginx restart # 如果正确就重启
3.1 如果有域名,nginx 配置文件如下
erver {
listen 80;
server_name xxx.163-inc.com;
client_max_body_size 128M;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
访问方式:http://xxx.163-inc.com

3.2 如果没有域名
server {
listen 8081;
server_name ip;
client_max_body_size 128M;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

listen的端口换一个没有使用的端口,然后proxy_pass传入8080(flask_demo的端口)
访问方式:http://ip:8081
 
重启nginx即可完毕。

0 个评论

要回复文章请先登录注册