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。