Linux 部署 Flask 服务(完整极简教程)

📅 2026/7/3 21:58:08 👁️ 阅读次数 📝 编程学习
Linux 部署 Flask 服务(完整极简教程)

一、整体流程(先看一眼心里有数)

  1. 安装 Python 环境
  2. 编写 Flask 项目
  3. 安装 Gunicorn(WSGI 服务器,生产必须用)
  4. 配置 Nginx(反向代理,对外访问)
  5. 设置开机自启(systemd)
  6. 开放防火墙端口
 

二、环境准备

1. 安装依赖

# Ubuntu/Debian
sudo apt update
sudo apt install python3-pip python3-dev nginx# CentOS/RHEL
sudo yum install epel-release
sudo yum install python3-pip python3-devel nginx

2. 创建项目目录 

mkdir -p /var/www/flaskapp
cd /var/www/flaskap

三、编写 Flask 应用

1. 创建虚拟环境(推荐) 

python3 -m venv venv
source venv/bin/activate  # 进入虚拟环境 

 

2. 安装依赖 

pip install flask gunicorn
 

3. 编写 app.py

from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return "Linux + Flask 部署成功!"if __name__ == '__main__':app.run()

 

四、用 Gunicorn 运行(生产级)

不要用 flask run 部署外网服务!正确方式:
gunicorn -w 4 -b 127.0.0.1:8000 app:app

 

参数说明:
  • -w 4:开启 4 个工作进程(根据 CPU 核数调整)
  • -b 127.0.0.1:8000:绑定本地 8000 端口
  • app:app:文件 app.py 里的 app 对象
测试是否能访问:
curl 127.0.0.1:8000

 五、配置 Nginx(对外访问)

1. 创建 Nginx 配置

sudo vi /etc/nginx/sites-available/flaskapp

 

写入内容:
server {listen 80;server_name 你的服务器IP或域名;location / {proxy_pass http://127.0.0.1:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}

 2. 启用配置

sudo ln -s /etc/nginx/sites-available/flaskapp /etc/nginx/sites-enabled
sudo nginx -t  # 测试配置是否正确
sudo systemctl restart nginx

六、配置开机自启(systemd)

 1. 创建服务文件 

sudo nano /etc/systemd/system/flaskapp.service

 

 写入: 

[Unit]
Description=Gunicorn daemon for Flask
After=network.target[Service]
User=root
Group=www-data
WorkingDirectory=/var/www/flaskapp
ExecStart=/var/www/flaskapp/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app[Install]
WantedBy=multi-user.target

 

 2. 启动并设置开机自启

sudo systemctl daemon-reload
sudo systemctl start flaskapp
sudo systemctl enable flaskapp

 

  查看状态:

sudo systemctl status flaskapp

 

 

 七、防火墙放行端口

# Ubuntu
sudo ufw allow 80# CentOS
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

 

 八、现在你可以直接访问

 打开浏览器输入:

http://你的服务器IP

 

 

九、常用命令

# 重启 Flask 服务
sudo systemctl restart flaskapp# 重启 Nginx
sudo systemctl restart nginx# 查看日志
sudo journalctl -u flaskapp

 

总结

  1. Flask 本身不能直接部署,必须用 Gunicorn/uWSGI
  2. Nginx 负责对外提供 80 端口访问
  3. systemd 保证服务崩溃自动重启、开机自启
  4. 整套方案是企业生产标准部署方式

mkdir -p /var/www/flaskapp cd /var/www/flaskapp