Flask 应用实现后台常驻运行(Linux 服务器)
一、背景说明
Flask 应用直接通过 python app.py 启动时,终端关闭/SSH 断开后进程会立即终止,无法长期提供服务。本文分享 3 种主流的 Flask 后台运行方案(按推荐优先级排序),适配 Ubuntu/CentOS 等 Linux 服务器,从入门级到生产级全覆盖。
二、前置准备
- 服务器已安装 Python3、pip,且 Flask 应用能正常运行(测试命令:
python app.py); - 知晓 Flask 应用的启动文件(如
app.py)、端口(如 5000)、虚拟环境路径(如有); - 服务器开放对应端口(如 5000),避免防火墙拦截。
三、方案 1:nohup(入门级,零配置)
1. 核心原理
nohup(no hang up)是 Linux 内置命令,能让程序脱离终端运行,即使 SSH 断开也不会终止,同时将日志输出到指定文件。
2. 操作步骤
(1)基础启动命令
# 进入应用目录
cd /www/flask_demo
# 后台启动 Flask 应用(默认端口 5000)
nohup python app.py > app.log 2>&1 &
(2)命令参数说明
| 部分 | 作用 |
|---|---|
nohup | 让程序脱离终端运行 |
python app.py | 启动 Flask 应用的核心命令 |
> app.log | 将标准输出(日志)写入 app.log 文件 |
2>&1 | 将错误输出重定向到标准输出(统一写入日志) |
& | 让程序在后台运行 |
(3)指定端口/环境启动(进阶)
# 方式 1:通过命令行指定端口
nohup python app.py --port 8080 > app.log 2>&1 &
# 方式 2:激活虚拟环境后启动
nohup /www/venv/bin/python app.py > app.log 2>&1 &
# 方式 3:设置 Flask 环境变量(如开发/生产模式)
nohup FLASK_ENV=production FLASK_APP=app.py python -m flask run --host=0.0.0.0 --port=8080 > app.log 2>&1 &
3. 常用管理命令
# 查看后台运行的 Flask 进程
ps -ef | grep flask
ps -ef | grep app.py
# 停止 Flask 进程(替换为实际 PID,如 12345)
-9 12345
-f app.log
> app.log

