Python日记——nginx+Gunicorn部署你的Flask项目

转自:http://blog.csdn.net/qq_32198277/article/details/52432890

 

大家在学习Python的时候常常都是输入

1 python 文件名.py

 

 

这样启动小脚本

但实际应用中往往没有那么简单,因为通常都要多线程处理并发,处理头部,这时就需要nginx和Gunicorn了

首先安装gunicorn

1 pip install gunicorn

 

 

然后在入口文件的app.run()加上

1 from werkzeug.contrib.fixers import ProxyFix
2 app.wsgi_app = ProxyFix(app.wsgi_app)

 

 

 1 from flask import Flask
 2 
 3 app = Flask(__name__)
 4 
 5 
 6 @app.route('/')
 7 def hello_world():
 8     return 'Hello World!'
 9 
10 if __name__ == '__main__':
11     from werkzeug.contrib.fixers import ProxyFix
12     app.wsgi_app = ProxyFix(app.wsgi_app)
13     app.run()

 

然后命令行启动gunicorn

最简单的启动方式是

1 gunicorn 入口文件名:app

 

默认是监听127.0.0.1:8000

如果是要处理高并发则要开多个进程和修改监听端口的画

1  gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app

 

这样就可以启动4个进程同时处理HTTP请求,提高系统的使用效率及性能。 
还可以把端口8000改为其他

这时你可以在本机的浏览器上访问127.0.0.1:8000,浏览器上就会出现Hello World!

注意:如果是想通过外网访问的话就要把ip改为内网的ip

之后配置nginx

首先先备份配置 
输入命令

1 sudo cp /etc/nginx/sites-available/default default.bak

修改配置

输入命令

1 sudo nano /etc/nginx/sites-available/default

 

把配置改为

 1 server {
 2     listen 80;
 3     server_name example.org; # 这是HOST机器的外部域名,用地址也行
 4 
 5     location / {
 6         proxy_pass http://127.0.0.1:8000; # 这里是指向 gunicorn host 的服务地址
 7         proxy_set_header Host $host;
 8         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 9     }
10 
11   }

 

这样启动之后80端口就可以转发到8000端口了

检查配置

输入命令

1 sudo nginx -t

若出现

1 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2 nginx: configuration file /etc/nginx/nginx.conf test is successful

 

则配置成功

重启nginx 
输入命令

1 sudo service nginx restart

关闭nginx

1 sudo service nginx stop

 

在已经运行了Gunicorn的前提下,在浏览器访问127.0.0.1就会出现Hello World!了

posted @ 2017-06-13 20:08  悟空的爸爸  阅读(3897)  评论(1编辑  收藏  举报