Linux部署flask项目

以前也学过Django , 回过头来 , 再看flask , 觉得它就像一个小宝宝一样单纯 , 让心喜欢 , 它真的是很轻很轻 , 让人欢喜不已 , 明确的路由 , 让人易懂的目录结构 , 最喜欢这种slight的框架了。


flask

那么 , 如何部署它呢? 我之前写了篇linux(ubuntu)部署Django的 , 大概原理差不多 , 所以 , 来看看如何部署flask?

这次我使用的是centos , 默认已经下载了nginx , uwsgi。假设指向服务器的域名是:rrr.com。

步骤:

我的项目叫做flask_learn , 目录结构是 : 

目录结构

1,放置项目

就像flask很轻巧,灵活一样,其部署的目录,也是很灵活的,可以随处选择,但是,自己要记住。比如我的flask_learn , 放在如下路径下:

项目位置

2 ,配置uwsgi.ini配置文件:

一般习惯在文件根目录[/home/modle/html/flask/flask_learn/]添加一个uwsgi.ini配置uwsgi服务器的配置文件 , 内容大致如下 :

[uwsgi]#必须有

socket = 127.0.0.1:622#uwsgi和nginx通信的端口

http = 621#web直接访问的端口

chdir = /home/modle/html/flask/flask_learn/

wsgi-file = /home/modle/html/flask/flask_learn/index.py

#这个必须有,app,是flask中的主入口的:app = flask.Flask(__name__)

callable = app

processes = 2

threads = 2

touch-reload = /home/modle/html/flask/flask_learn/#检测文件改变就重启,在试调时候很重要,当然,但是不是一直有效【使用nginx代理时候】,why?

logto = /home/modle/html/user_server/logs/%n.log#记录日志

3 ,启动uwsgi服务器 :

输入命令:

uwsgi /home/modle/html/flask/flask_learn/uwsgi.ini -d /home/modle/html/flask/flask_learn/logs/log.log

意思就是,启动uwsgi,配置文件是uwsgi.ini,输出的日志是在log.log中。

4 ,配置nginx服务器 :

具体的vhost的server块如下:

server {

    listen 5000;

    access_log /home/modle/log/access.log;

    error_log /home/modle/log/error.log;

    #这个应该是没必要的

    root /home/modle/html/flask/flask_learn/;

    #如果输入域名的话访问这个

    index index.html;

    server_name rrr.com;

    #入下两个是跨域使用,不一定需要

    add_header 'Access-Control-Allow-Origin' '*';

    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

    location / {

        include /etc/nginx/uwsgi_params;

        #这个是uwsgi.ini中的socket的端口,用此nginx转发给uwsgi

        uwsgi_pass 127.0.0.1:622;

        #以下的三个,实际上uwsgi.ini中有所申明,无需了(或者这里保持,而uwsgi.ini中出去也可以)

        #uwsgi_param UWSGI_SCRIPT /home/modle/html/flask/flask_learn/index.py;

        #uwsgi_param UWSGI_CHDIR /home/modle/html/flask/flask_learn/

        #uwsgi_param UWSGI_PYHOME TO_DEFINE_VERSION_PYTHON;

    }

}

保存之后,运行

service nginx restart

就可以了,访问的入口是rrr.com:5000。

推荐阅读更多精彩内容