UWSGI + Nginx 部署 Flask web 应用

首先,我用的Flask是0.9版本的,uwsgi是1.9.6版,nginx是1.1.19版本。操作系统我用的是ubuntu12.04


1)安装Flask,uwsgi,nginx

Flask:sudo apt-get install python-flask

uwsgi:至于部署方式可以采用,uWSGI,http://projects.unbit.it/downloads/

[plain]  view plain copy
  1. tar zxvf uwsgi-latest.tar.gz  
  2.  cd uwsgi-1.2.6  
  3.  make  
  4.  cp uwsgi  /usr/sbin/uwsgi  

nginx:sudo apt-get install nginx

也可以源码安装参见:nginx 在ubuntu linux 安装 及配置 ,也可以用 apt-get install nginx-full 安装。

2)创建Flask工程

这里就用最简单的HelloWorld,创建一个工程目录:myapp,里面包含以下文件:

文件名:myapp.py

代码:

from flask import Flask

app = Flask(__name__)

@app.route('/')

def hello():

     return 'Hello World'

if __name__ == '__main__':

       app.run()

给项目目录配置权限,nginx和uwsgi默认是以www-data用户和组来运行:
chown -R www-data:www-data /var/virenvs/myenv/myproject
chmod -R 775 /var/virenvs/myenv/myproject

创建uwsgi配置文件

3)配置 uwsgi

在刚才创建的myapp目录下创建一个uwsgi的xml配置文件myapp_config.xml:

<uwsgi>

     <pythonpath>[你的工程的根目录]</pythonpath>

     <module>[模块名,这里用myapp]</module>

     <callable>[因为app是启动整个服务的入口,所以是app]</callable>

     <socket>0.0.0.0:8000</socket>       #注: 指定某个固定端口

     <master/>

     <processes>4</processes>                #注:跑几个进程,这里用4个进程

     <memory-report/>

</uwsgi>

4)配置 nginx

在/etc/nginx/sites-available/目录下,创建一个站点文件:site

server {
        listen 80;
        server_name www.myapp.com;

        location / {
                include uwsgi_params;
                uwsgi_pass  0.0.0.0:8000;   #注:这里的端口8000和uwsgi的里配的是同一个端口,因为nginx和uwsgi需要通过这个端口进行交互
        }
}

 然后用Linux的ln命令创建一个link到/etc/nginx/sites-enable/里,link的名字也叫site,删除sites-enable目录下的default的link,(很重要).

 注意 需要在nginx.conf 的http{ },下包含我们的配置,形式如下:

http {

       ...
 
      include /etc/nginx/sites-enable/*;
}

启动服务nginx:   sudo nginx -s reload

5)开始部署

启动uwsgi,命令是 sudo uwsgi -x myapp_config.xml,会打出很多的字,如果没有加载工程成功可以从打出的信息中看出,然后不要关闭该Terminal,新打开一个Terminal,在里面启动nginx:sudo /etc/init.d/nginx start,然后在浏览器里访问localhost就可以看到“Hello World!” !


这个链接中的说明更详细:http://blog.ops.cc/hosting/22935dcc7d57e320.html


sudo uwsgi -x uwsgi_config.xml -d /tmp/uwsgi.logs

你可能感兴趣的:(Web,nginx,flask,uwsgi)