您的位置:首页 > 运维架构 > Nginx

在MAC使用Nginx+uWSGI部署Flask项目

2017-10-12 11:22 543 查看
      之前用Flask框架开发了一个Python的restful api服务器项目,使用Nginx和uWSGI部署起来感觉挺麻烦,过程中还因为对Flask框架和uwsgi的不熟悉,花了好长时间才把应用完全部署起来。下面分享部署成功的相关配置以及部署Flask项目时极可能犯的一个小错误。

一、
配置

1.
Flask 项目源码

Nginx使用的版本是1.12.1,uWSGI是2.0.15,Flask是0.10.1。在Mac环境下安装好Nginx、uWSGI和Flask之后,将使用Flask框架开发的server项目源码放到Mac服务器的某个目录下,例如/Users/xxxx/data/myserver/restful。以最简单的一个Flask项目作为例子,其代码只有test.py一个源码文件,内容如下:

       
#!flask/bin/python

"""Alternative version of the ToDo RESTful server implemented using the
Flask-RESTful extension."""

from flask import Flask
from flask_restful import Api
from APIResources.ExamplTaskApi import *
from APIResources.UserInfoAPI import *

app = Flask(__name__, static_url_path="")
api = Api(app)
api.add_resource(TaskListAPI, '/todo/api/v1.0/tasks', endpoint='tasks')
api.add_resource(TaskAPI, '/todo/api/v1.0/taskbyid', endpoint='task')
api.add_resource(GetUserInfoByUsernameApi, '/api/v1.0/user/getuserinfo', endpoint='getuserinfo')
api.add_resource(AddUserInfoApi, '/api/v1.0/user/adduser', endpoint='adduser')

if __name__ == '__main__':
# app.run(debug=True)
app.run(host='0.0.0.0')
那么test.py的完整路径就是/Users/xxxx/data/myserver/restful/test.py

二.
为Flask项目配置uwsgi

自己创建一个uwsgi.ini文件来进行配置。配置文件大致内容如下:

[uwsgi]
master = true
callable = app
socket = 0.0.0.0:7000
pythonpath = /Users/xxx/myserver/restful
module = test
processes = 4
threads = 2
buffer-size = 62768


其中几个主要参数的含义如下:

pythonpath:表示项目目录
module:表示项目启动模块,如上例为test.py,这里就为test
callable:表示Flask项目的实例名称,上例代码中app = Flask(__name__),所以这里为app
socket:表示和Nginx通信的地址和端口,和Nginx配置里的uwsgi_pass一致。
processes:表示开启多少个子进程处理请求。
threads:每个进程的线程数。

之后启动uWSGI:

uwsgi -d /var/log/uwsgi.log --ini /data/web_app/testpro/test_config.ini

其中,-d参数指明日志路径为/var/log/uwsgi.log。

三.
配置Nginx

在Nginx的安装目录找到Nginx的配置文件,安装目录一般是/usr/local/nginx,配置文件是nginx.conf,对其进行编辑,使得Nginx能够加载uwsgi。

location /{
include uwsgi_params;
uwsgi_pass 0.0.0.0:7000;

}
配置完之后,如Nginx已经启动,那就对其进行重启,否则直接启动。
接下来,按照Nginx配置文件中server项下的listen和server_name参数对应的值使用浏览器对项目进行访问http://172.24.234.215:5000/api/v1.0/user/getuserinfo?username=2222,看到输出
下面信息 则表示部署成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: