使用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 # 退出控制台
上一篇: Python的集合操作总结
下一篇: django之models详讲