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,

tar zxvf uwsgi-latest.tar.gz 
cd uwsgi-1.2.6 
make 
cp uwsgi  /usr/sbin/uwsgi 

nginx:sudo apt-get install nginx
 
2)创建Flask工程
 
这里就用最简单的HelloWorld,创建一个工程目录:linuxidc,里面包含以下文件:
 
文件名:linuxidc.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
 
在刚才创建的linuxidc目录下创建一个uwsgi的xml配置文件linuxidc_config.xml:
 

<uwsgi>
 
    <pythonpath>[你的工程的根目录]</pythonpath>
 
    <module>[模块名,这里用linuxidc]</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 ;
 
        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。(很重要)
 
5)开始部署
 
启动uwsgi,命令是 sudo uwsgi -x linuxidc_config.xml,会打出很多的字,如果没有加载工程成功可以从打出的信息中看出,然后不要关闭该Terminal,新打开一个Terminal,在里面启动nginx:sudo /etc/init.d/nginx start,然后在浏览器里访问localhost就可以看到“Hello World!” !

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d8f33c899ecffc069257d690632d7c4f.html