其实我使用的linuxmint16 ,不过他是基于ubuntu13.10的,按照从网上找到的一片博文操作,基本ok,不过还是除了一些小问题,记录一下:
博文地址:How to Run Flask Applications with Nginx Using Gunicorn
我没用virtualenv
第一步:安装gunicorn
sudo pip install gunicorn
#也可以
sudo easy_install gunicorn
第二步:
在
app.run()
的前面加上:
from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)
运行它:
gunicorn hello:app
这个hello就是
app.run()
所在文件的名字,至于冒号后面的app自然就是app.run()的app了。
其实在文档里还有这样一种运行方法,不过我没成功:
gunicorn -w 4 -b 127.0.0.1:4000 myproject:app
第三步,安装、配置nginx。
sudo apt-get install nginx
sudo gedit /etc/nginx/sites-available/default
server {
listen 80;
server_name localhost;
root /home/ranvane/develop/cdlist_flask;
access_log /home/ranvane/develop/cdlist_flask/logs/access.log;
error_log /home/ranvane/develop/cdlist_flask/logs/error.log;
location / {
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:5000;
break;
}
}
}
修改完用
sudo nginx -t
检查一下配置文件是否正确。
/home/ranvane/develop/cdlist_flask是有app.run()文件的目录,proxy_pass http://127.0.0.1:5000;是端口转发,这里我就遇到了问题,其实gunicorn hello:app是转发到了8000端口,但是nginx就是不能解析,我看这控制台显示的还是调试时显示的“* Running on http://127.0.0.1:5000/”,于是就试着把端口改为5000,就成了。
这其实就是我遇到的问题:
gunicorn运行时绑定的端口nginx不会转发。。。。。。。。。
唉,先用着吧。。。等会再查查。
嘿嘿,找到问题了,只要将 app.run() 注释掉就可以了。