说明:网上关于flask使用uWSGI 和 Nginx搭建配置的文章少,而且真正有价值的不多,所以本人亲自测试总结一下,结合centos7系统整理
首先我们必须要知道uWSGI和Nginx的作用,这点非常重要!
uWSGI----真正跑flask应用的服务器(和Apache类似,必须有他才能访问)
Nginx----实现反向代理,隐藏IP,分布式服务器,访问更安全,防止攻击
总结来说:flask没有uWSGI无法运行,而结合Nginx锦上添花!
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return '部署成功'
if __name__ == '__main__':
app.run()
第一、【务必看下面的注释,socket和http的配置用法完全不一样】
第二、ip地址,设置0.0.0.0是成功的,而单纯设置服务器ip无法访问
第三、flask配置uWSGI,callable=app是必须的【callable指出的是具体执行.run方法的那个实体的名字,一般而言都是app=Flask(__name__)的所以这里是app】
[uwsgi]
# socket=只能结合nginx访问(如果直接http无法访问)
# http:只能http访问(如果使用nginx会无法访问)
socket=0.0.0.0:8099 # 这里设置为设置为服务器ip访问却失败【具体原因还在查询】
chdir=/root/uniapp-Flask/
virtualenv =/root/.local/share/virtualenvs/uniapp-Flask-dCCHvjvS
wsgi-file=/root/uniapp-Flask/main.py
callable=app
processes=4
threads=10
master=True
pidfile=uwsgi.pid
daemonize=uswgi.log
server {
listen 80 default_server;
listen [::]:80 default_server;
# 这里设置为设置为服务器ip访问却失败【具体原因还在查询】
server_name 0.0.0.0;
# 这里是静态文件部署路径【html、php...】
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
# uwsgi配置的核心代码【仅仅只是一个反向代理访问】
include uwsgi_params;
uwsgi_pass 119.128.180.111:8099;
}
# 跨域反向代理
location /api {
proxy_pass http://119.128.180.111:8099;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
兼容websocket等待测试
参考:https://www.cnblogs.com/franknihao/p/7202253.html
参考:https://www.jianshu.com/p/76b28c7e71cc
参考:https://www.jb51.net/article/160691.htm