欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-06 18:37:34
...

在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 /static {
                alias /home/test/static;
        }
        
        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 # 退出控制台