目录

  1. 部署前的准备
  2. 使用 Gunicorn 部署
  3. 结合 Nginx 部署
  4. 平台即服务 (PaaS) 部署
  5. 参考资料

部署前的准备

在部署 Flask 应用之前,需要做一些准备工作以确保应用适合生产环境:

  • 关闭调试模式:将 debug=False 设置在 app.run() 中,或避免直接使用 app.run()
  • 设置环境变量:将敏感信息(如密钥、数据库 URI)放入环境变量中,而不是硬编码。
  • 依赖管理:生成 requirements.txt 文件:
1
pip freeze > requirements.txt
  • WSGI 入口:确保应用有一个 WSGI 可调用的入口点(通常是 app 对象)。

使用 Gunicorn 部署

Gunicorn 是一个 Python WSGI HTTP 服务器,适合运行 Flask 应用。

安装

1
pip install gunicorn

示例

项目结构

1
2
3
my_app/
├── app.py
└── requirements.txt

app.py

1
2
3
4
5
6
7
8
9
10
from flask import Flask
 
app = Flask(__name__)
 
@app.route('/')
def home():
    return '欢迎使用 Flask!'
 
if __name__ == '__main__':
    app.run()

运行 Gunicorn

在项目目录下运行:

1
gunicorn -w 4 -b 0.0.0.0:8000 app:app
  • 参数解释
  • -w 4:启动 4 个工作进程。
  • -b 0.0.0.0:8000:绑定到所有网络接口的 8000 端口。
  • app:appapp 是模块名(app.py),第二个 app 是 Flask 应用实例。

访问 http://localhost:8000/ 查看结果。


结合 Nginx 部署

Nginx 是一个高性能 Web 服务器,通常与 Gunicorn 结合使用,Nginx 作为反向代理处理静态文件和负载均衡。

示例步骤

  1. 安装 Nginx
  • Ubuntu:sudo apt update && sudo apt install nginx
  • CentOS:sudo yum install nginx
  1. 配置 Gunicorn
    运行 Gunicorn(例如在后台):
1
gunicorn -w 4 -b 127.0.0.1:8000 app:app &
  1. 配置 Nginx
    编辑 Nginx 配置文件(例如 /etc/nginx/sites-available/myapp):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
    listen 80;
    server_name your_domain.com;  # 替换为你的域名或 IP
 
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
 
    location /static/ {
        alias /path/to/my_app/static/;  # 静态文件路径
    }
}
  • 启用配置:
    bash sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo nginx -t # 检查配置 sudo systemctl restart nginx
  1. 访问:通过域名或服务器 IP 访问应用。
  • 解释
  • Nginx 监听 80 端口,将请求转发给 Gunicorn。
  • 静态文件直接由 Nginx 处理。

平台即服务 (PaaS) 部署

PaaS 平台(如 Heroku、Render)简化了部署流程,无需手动配置服务器。

示例:部署到 Heroku

  1. 安装 Heroku CLI
    下载并安装 Heroku CLI
  2. 准备项目
  • 添加 Procfile
    web: gunicorn app:app
  • 添加 requirements.txt
    bash pip freeze > requirements.txt
  • 确保 app.py 中不使用 app.run()(或仅用于开发)。
  1. 部署步骤
1
2
3
4
5
6
heroku login
heroku create my-flask-app  # 创建应用
git init
git add .
git commit -m "Initial commit"
git push heroku main
  • 访问 https://my-flask-app.herokuapp.com/ 查看结果。
  • 解释
  • Procfile:告诉 Heroku 如何运行应用。
  • Heroku 自动处理依赖安装和服务器配置。

参考资料


这些部署方法适用于不同场景:Gunicorn + Nginx 适合自建服务器,PaaS 适合快速上线。如果需要特定平台的详细步骤或容器化部署(如 Docker),请告诉我!