使用uwsgi+nginx+supervisor部署flask应用

 

在ubuntu18.04、python3.8.3下测试通过

1. 安装uwsgi

1.1 uwsgi必须安装在系统级别的python环境中。

pip install uwsgi -I --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple

1.2 启动项目

注意,flask项目请使用--wsgi-file参数。

uwsgi --http :5000 --wsgi-file app.py --venv=/home/test/venv

如果可以访问项目,则说明uwsgi安装成功。

1.3 配置uwsgi.ini

在项目下新建uwsgi.ini文件,内容如下:

[uwsgi]
wsgi-file = /home/test/app.py  #flask应用的部署方式
callable = app
home = /home/test/venv
master = true
processes = 10
socket = /home/test/yd.sock
chmod-socket = 666
vacuum = true

配置完成后,执行下面代码即可启动项目

uwsgi --ini uwsgi.ini

2. 安装nginx

2.1 安装

sudo apt install nginx

安装完成后,可用如下命令操作nginx服务

service nginx start # 启动
service nginx stop # 停止
service nginx restrart # 重启

2.2 配置nginx

在/etc/nginx/conf.d目录下新建ydsoft.conf,内容如下:

upstream ydsoft{        
        server unix:///home/test/yd.sock; 
} 
​
server {
        listen 80;
        server_name 192.168.0.102;
        charset utf-8;
        
        client_max_body_size 75M;
   
        location / {
                uwsgi_pass ydsoft; # 注意与上面的upstream后的ydsoft对应
                include /etc/nginx/uwsgi_params;
        }
}

​2.3 测试ydsoft.conf 

sudo service nginx configtest

注意右侧是否显示“OK”,如显示OK,则说明配置无误。 

3. 成功在望

在浏览器中输入'http://192.168.0.102',就可以访问项目了,注意,此时不要再加端口号了,因为nginx配置文件中已经绑定了80端口了。

4. 使用supervisor管理uwsgi进程

让supervisor管理uwsgi,可以在uwsgi发生意外的情况下,会自动的重启。

4.1 安装

在系统级别的python环境下

pip install supervisor

4.2 在项目的根目录下创建一个文件ydsoft_supervisor.conf,内容如下:

[program:ydsoft]
command=uwsgi --ini uwsgi.ini
directory = /home/test
startsecs=0
stopwaitsecs=0  
autostart=true
autorestart=true
stdout_logfile=/home/test/log/supervisord.log
stderr_logfile=/home/test/log/supervisord.err
​
[supervisord]
loglevel=info
​
[supervisorctl]
serverurl = http://127.0.0.1:9001
username = admin
password = 123
​
[inet_http_server]
port = :9001
username = admin
password = 123
​
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

4.3 启动项目

sudo supervisord -c ydsoft_supervisor.conf

4.4 管理项目

sudo supervisorctl -c ydsoft_supervisor.conf

进入到管理控制台,然后可以执行相关的命令进行管理:

  • status # 查看状态

  • start program_name #启动程序

  • restart program_name #重新启动程序

  • stop program_name # 关闭程序

  • reload # 重新加载配置文件

  • quit # 退出控制台

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask是一个基于Python的轻量级Web框架,它提供了简单易用的工具来构建Web应用程序。Flask具有灵活的设计,可以根据需求进行扩展和定制。它支持RESTful风格的API开发,并且具有良好的可扩展性,适用于开发小型到中型的Web应用uWSGI是一个Web服务器和应用服务器,它可以将Web应用程序从框架中分离出来,并通过WSGI协议与框架进行通信。它支持高并发和负载均衡,并且具有内置的缓存机制和性能监控。uWSGIFlask配合使用可以提高Web应用程序的性能和稳定性。 Nginx是一个高性能的开源HTTP服务器和反向代理服务器。它可以处理大量并发连接,并能有效地分发请求到后端服务器。Nginx的反向代理功能可以将请求转发给uWSGI服务器,然后由uWSGI服务器处理Flask应用程序的逻辑。 使用FlaskuWSGINginx的组合可以实现一个高性能的Web应用程序架构。首先,Flask用于开发Web应用程序的逻辑和路由。然后,uWSGI作为应用程序服务器,将Flask应用程序加载到内存中,并以WSGI协议与Nginx进行通信。最后,Nginx作为前端服务器,通过负载均衡和反向代理将请求分发到uWSGI服务器。 这种架构可以提供高并发、可扩展和稳定的Web应用程序。Flask提供了优雅的开发方式,uWSGI处理应用程序的逻辑和性能优化,而Nginx作为前端服务器提供高性能的负载均衡和反向代理。整个架构可以根据需求进行灵活的配置和扩展,以满足不同规模的Web应用程序的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值