如前所述,Flask 是一个轻量级的 Web 应用框架,这里简单介绍如何通过 nginx、uwsgi 搭建 flask 环境。
安装环境
在 CentOS 7 中,我们使用 nginx + uwsgi + flask 搭建一个服务器,可以直接通过如下方式配置环境。
nginx
首先通过如下方式安装。
# yum install nginx
# systemctl start nginx
然后浏览器访问 http://localhost 或者 curl http://127.1 即可,最终返回如下内容。
uwsgi
这是一个 C 语言编写的,可以直接参考 Github - unbit/uwsgi 源码,可以通过 yum 进行安装,不过安装的版本比较低,后面测试的时候会有很多的问题。
# yum install python-pip
# pip install uwsgi
然后新建一个很简单的脚本,如下。
$ cat foobar.py
def application(env, start-response):
start-reponse('200 OK','[('Content_Type','text/html')]')
return [b"Congraduations!!"]
$ uwsgi --http :8001 --wsgi-file foobar.py
当然,启动的时候可以通过如下方式启动。
$ cat foobar.ini
[uwsgi]
chdir=/tmp/test/
wsgi-file=foobar.py
http-socket = 127.0.0.1:8001
$ uwsgi --ini foobar.ini
然后浏览器访问 http://localhost:8001 或者 curl http://127.1:8001 即可,最终返回如下内容。
上述通过 uwsgi 启动时,如果启动报错,无法识别 --wsgi-file
时,实际是由于版本过低导致的。
配置文件
[uwsgi]
base = /var/www/uop/
chdir=/tmp/test/
wsgi-file=foobar.py
#http-socket = 127.0.0.1:8001
socket = /tmp/%n.sock
daemonize = %(base)/log/uwsgi.log
# reload uWSGI if the specified file is modified/touched.
touch-reload = %(base)/conf/uwsgi.conf
# fork a thread to scan python file per N seconds.
py-autoreload = 2
对于监控,可以直接通过 pip install uwsgitop
安装。
flask
可以直接从 github - flask 下载源码,或者通过如下方式安装。
# pip install flask
$ cat hello.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='127.1', debug=True)
$ python hellp.py
* Running on http://127.0.0.1:5000/
$ curl http://127.1:5000
然后浏览器访问 http://localhost:5000 或者 curl http://127.1:5000 即可,最终返回如下内容。
nginx + uwsgi + flask
接着将这三者放到一块,分别修改如下配置文件。
$ cat /etc/nginx/nginx.conf
... ...
server {
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8001;
}
}
... ...
$ cat foobar.ini
[uwsgi]
master = true
callable = app
chdir = /tmp/test/
wsgi-file = foobar.py
show-config = true
socket = 127.0.0.1:8001
# uwsgi --ini foobar.ini
# systemctl start nginx
在源码的 examples/flaskr 目录下有个示例,可以通过如下方式进行配置、测试。
$ export FLASK_APP=flaskr.py
$ flask initdb
$ flask run
参考
可以参考中文文档 欢迎来到 Flask 的世界 。