在研究如何使用uwsgi部署flask服务前,我们先要实现一个简单的flask服务为测试做准备
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'ok'
if __name__ == '__main__':
app.run('0.0.0.0', 5500)
这是一个极简单的flask服务,只实现了一个视图函数处理请求。
uwsi可以使用pip进行安装
pip install uwsgi
安装好以后,uwsgi可执行文件在python的bin目录下,可以创建一个软链
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
web服务放在/root/www下,结构如下
www
├── app.ini
├── app.py
└── logs
logs用于存放日志,app.ini是uwsgi的配置文件
uwsgi既可以做http服务器,也可以部署在nginx和flask服务之间,这两种不同的部署方式,先来实验第一种,编写app.ini文件
[uwsgi]
http=127.0.0.1:8000
chdir=/home/www
wsgi-file=app.py
callable=app
#指定工作进程
processes=4
#主进程
master=true
#指的后台启动 日志输出的地方
daemonize=/home/www/logs/uwsgi.log
#保存主进程的进程号
pidfile=/home/www/logs/uwsgi.pid
启动uwsgi
uwsgi --ini app.ini
如果没有报错,就说明启动正常,在logs目录下,会有两个文件,uwsgi.log记录的是uwsgi的工作日志,uwsgi.pid记录的是uwsgi的主进程id。
停止和重启的命令如下
uwsgi --stop /home/www/logs/uwsgi.pid
uwsgi --reload /home/www/logs/uwsgi.pid
uwsgi与nginx一起使用时,两者之间走的是socket协议,需要做一点特殊设置,首先是app.ini需要修改
socket=127.0.0.1:8000
接下来,需要配置nginx,在/etc/nginx/conf.d 目录下新增文件flask.conf
server {
listen 80;
server_name uwsgi-flask.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
}
新增配置后,需要检查配置是否正确,正确后才能重新加载配置
nginx -t # 检查配置是否正确
nginx -s relaod # 重新加载配置
这里我配置server_name 为uwsgi-flask.com, 是希望可以通过域名进行访问,你在做实验时,需要设置hosts文件
127.0.0.1 uwsgi-flask.com
现在,重新启动uwsgi
uwsgi --ini app.ini
使用curl访问服务
curl http://uwsgi-flask.com
服务正常响应。
QQ交流群: 211426309