使用uwsgi和Nginx部署flask应用

最近打算使用python+flask搭建一个简单的我的网站,使用nginx+uwsgi部署,在此记录下部署过程。html


  1. 环境
    ubuntu12.04, python2.7.3, virtualenv1.7.1.2, uwsgi2.0.8
  2. 准备
    安装virtualenv: 使用virtualenv建立一个独立的python开发环境具备不少好处,ubuntu12.04默认是没有安装的,所以先安装virtualenv: sudo apt-get install virtualenv。安装完成后运行virtualenv ~/demo在个人我的目录下面建立一个名为demo的虚拟环境。
    安装uwsgi: 直接使用ubuntu12.04软件包里的uwsgi版本过低,所以须要去uwsgi官网下载最新的版本安装,个人方式是按照文档说明直接使用make命令:python

    wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
    tar zxvf uwsgi-latest.tar.gz
    cd uwsgi-lastest
    makenginx

    运行uwsgi --version确认是否安装成功。flask

  3. 开发
    cddemo目录,使用source bin/active激活当前的虚拟环境,由于咱们须要使用到flask,所以须要在当前环境中安装flask:pip install flask(注意:若未激活当前虚拟环境pip install会默认安装到全局的python环境中,致使permission denied错误) 如今就能够写一个最简单的flask应用了:
   from flask import Flask
   app = Flask(__name__)
   @app.route('/')
   def helloworld():
       return 'hello, world.'
   
  1. 部署
    如今使用uwsginginx把helloworld应用部署一下。
    先配置nginx,在nginx的conf.d目录下建立一个helloworld.conf文件,而后作以下配置ubuntu

    server {
            listen 80;
            server_name 127.0.0.1;
            location /helloworld {
                    include uwsgi_params;
                    uwsgi_pass unix:/tmp/uwsgi.sock;
            }
    }浏览器

    保存,nginx reload以使上面的配置生效。
    使用uwsgi启动helloworld应用:uwsgi -s /tmp/uwsgi.sock --chmod-sock=666 -H /home/victor/demo --module helloworld -callable app, 执行后没有报任何异常便可。
    如今在浏览器里输入127.0.0.1/helloworld便可访问helloworld应用,浏览器将显示hello,world.
    (注意:因为是在虚拟环境中开发的这个应用,所以在使用uswgi启动引起用时须要使用-H /path/to/virtualenv设置使用当前虚拟环境变量,不然咱们只在当前虚拟环境中安装的flask会没法import进来。或者,在运行以前先将当前虚拟环境加入到PYTHONPATH中,export PYTHONPATH=$PYTHONPATH:/home/victor/demo/lib/python2.7/site-packages)app

  2. 参考资料
    flask快速上手
    使用uwsgi启动flask应用以及nginx配置
    uwsgi document
相关文章
相关标签/搜索