部署环境: Ubuntu18.04
目标:Python3 + Flask + Uwsgi + supervisor
1. 安装对应的环境
1. 安装python3
lsb_release -a
因为我使用的环境是Ubuntu18.04,默认有Python3 环境
2. 更新apt源
apt update
3. 升级apt源
apt upgrade
4. 安装pip工具
apt install python3-pip
输入y确定,会自动安装的
pip
5. 安装Flask
pip3 install flask
flask
6. 安装uwsgi
pip3 install uwsgi
uwsgi
7. 安装supervisor
apt install supervisor
supervisor
2. 部署
假设flask只有一个主程序文件main.py,且该文件位于/home/kun目录下
flask目录
主程序
main.py文件内容如下
from flask import Flask
# 注册Flask
app = Flask(__name__)
# 注册路由
@app.route('/')
def hello():
return 'this is flask'
if __name__ == '__main__':
app.run(host='0.0.0.0', port='5000', debug=True)
main.py
1. 直接使用python跑起来
启动,适用于开发调试阶段
/usr/bin/python3 /home/kun/main.py
测试
测试
2. 使用uwsgi部署
新增一个uwsgi.ini文件配置uwsgi
uwsgi.ini
[uwsgi]
chdir=/home/kun
wsgi-file=main.py
callable=app
master=true
processes=1
threads=2
socket=0.0.0.0:5000
pidfile=/home/kun/uwsgi.pid
protocol=http
启动,每个项目的配置不同,需根据实际情况修改
/usr/local/bin/uwsgi --ini /home/kun/uwsgi.ini
启动,可以添加-d参数,使uwsgi在后台运行
/usr/local/bin/uwsgi -d --ini /home/kun/uwsgi.ini
注意,
-d要在--ini前面
![]()
查看端口状态
lsof -i:5000
查看uwsgi服务状态
ps -ef | grep uwsgi
关闭uwsgi服务
-f后面跟着是进程号,需根据实际情况修改
kill -f 12084 12086
image.png
3. 使用uwsgi+supervisor
切换目录
cd /etc/supervisor/conf.d/
新增并编辑文件
vim flask.conf
文件必须以.conf结尾
flask.conf
[program:flask]
directory = /home/kun
command =/usr/local/bin/uwsgi --ini /home/kun/uwsgi.ini
autostart = true
startsecs = 5
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /var/log/flask.log
stopasgroup = true
;killasgroup = false
更新配置
supervisorctl update
重启配置中所有进程
supervisorctl reload
查看正在守护的进程
supervisorctl status
启动某个进程
supervisorctl start program
停止某个进程
supervisorctl stop program
重启某个进程
supervisorctl restart program
停止全部进程
supervisorctl stop all
4. 部署成系统服务
切换目录
cd /etc/systemd/system
新增并编辑文件
vim flask.service
文件必须以.service结尾
flask.service
[Unit]
Description=flask
[Service]
WorkingDirectory=/home/kun
ExecStart=/usr/local/bin/uwsgi --ini /home/kun/uwsgi.ini
ExecStop=/usr/local/bin/uwsgi --stop /home/kun/uwsgi.pid
Restart=on-failure
[Install]
WantedBy=multi-user.target
添加服务
systemctl enable flask.service
重载服务
systemctl daemon-reload
启动服务
systemctl start flask.service
停止服务
systemctl stop flask.service












网友评论