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!了