【完美解决方案】 Flask利用uWSGI和Nginx发布Flask应用【静态和动态部署】及兼容websocket【等待解决中】

使用uWSGI 和 Nginx搭建服务器发布Flask应用的完美解决方案之总结

说明:网上关于flask使用uWSGI 和 Nginx搭建配置的文章少,而且真正有价值的不多,所以本人亲自测试总结一下,结合centos7系统整理

 

首先我们必须要知道uWSGI和Nginx的作用,这点非常重要!

uWSGI----真正跑flask应用的服务器(和Apache类似,必须有他才能访问

Nginx----实现反向代理,隐藏IP,分布式服务器,访问更安全,防止攻击

总结来说:flask没有uWSGI无法运行,而结合Nginx锦上添花!

 

第一步:Flask测试代码main.py

from flask import Flask
 
app = Flask(__name__)
 
@app.route("/")
def index():
  return '部署成功'
 
if __name__ == '__main__':
  app.run()

 

第二步:uWSGI成功的配置文件uwsgi.ini 讲解【一定要注意三点】

第一、【务必看下面的注释,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

 

第三步:nginx配置【重点关注:uwsgi配置的核心代码【仅仅只是一个反向代理访问】】

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 {
        }
    }


 

第四步测试:当nginx和uWSGI部署成功之后,直接访问http:服务器ip:80端口即可跳转到http://119.128.180.111:8099,输出"部署成功"(uWSGI配置的是socket,所以这里的http访问只能结合nginx才可以)

 

 

兼容websocket等待测试

 

 

 

参考:https://www.cnblogs.com/franknihao/p/7202253.html

参考:https://www.jianshu.com/p/76b28c7e71cc

参考:https://www.jb51.net/article/160691.htm

参考:https://www.cnblogs.com/herosoft/p/8134337.html

参考:https://blog.csdn.net/ljflemon/article/details/84255336

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uWSGINginx是一种常见的Flask应用程序部署组合。uWSGI是一种Web服务器,它可以在后台运行Python应用程序,并提供了许多高级功能,如负载均衡、缓存、网关接口等。Nginx是一种反向代理服务器,它可以将传入的请求转发给uWSGI服务器,并负责处理静态文件、SSL加密等。 下面是一些简单的步骤,可以帮助你使用uWSGINginx部署Flask应用程序: 1. 安装uWSGINginx 在Linux系统上,你可以使用包管理器来安装uWSGINginx。例如,在Ubuntu上,你可以运行以下命令: ``` sudo apt-get update sudo apt-get install nginx uwsgi uwsgi-plugin-python3 ``` 2. 创建Flask应用程序 在你的项目目录创建一个名为`app.py`的文件,并编写Flask应用程序代码。例如: ```python from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' ``` 3. 创建uWSGI配置文件 在你的项目目录创建一个名为`uwsgi.ini`的文件,并编写uWSGI配置。例如: ```ini [uwsgi] module = app callable = app master = true processes = 4 socket = /tmp/uwsgi.sock chmod-socket = 666 vacuum = true die-on-term = true ``` 其,`module`参数指定了Flask应用程序的Python模块名,`callable`参数指定了Flask应用程序的实例名。`socket`参数指定了uWSGI服务器监听的Unix套接字路径,`processes`参数指定了uWSGI服务器的工作进程数。 4. 测试uWSGI服务器 在命令行,进入你的项目目录,并运行以下命令启动uWSGI服务器: ``` uwsgi --ini uwsgi.ini ``` 如果一切正常,你应该能够通过访问Unix套接字路径来测试uWSGI服务器: ``` curl http://localhost/tmp/uwsgi.sock ``` 你应该看到Flask应用程序的输出。 5. 创建Nginx配置文件 在Nginx配置文件添加以下内容: ``` server { listen 80; server_name yourdomain.com; location / { include uwsgi_params; uwsgi_pass unix:///tmp/uwsgi.sock; } } ``` 其,`listen`参数指定了Nginx服务器监听的端口和IP地址,`server_name`参数指定了该虚拟主机的域名或IP地址。`location`块指定了请求转发规则,`uwsgi_pass`参数指定了uWSGI服务器监听的Unix套接字路径。 6. 启动Nginx服务器 在命令行,运行以下命令启动Nginx服务器: ``` sudo service nginx start ``` 如果一切正常,你应该能够通过访问你的域名或IP地址来访问Flask应用程序。 注意:如果你使用的是Ubuntu 18.04或更高版本,你需要将Nginx配置文件的`include uwsgi_params;`改为`include /etc/nginx/uwsgi_params;`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值