目录
部署前的准备
在部署 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:app
:app
是模块名(app.py
),第二个app
是 Flask 应用实例。
访问 http://localhost:8000/
查看结果。
结合 Nginx 部署
Nginx 是一个高性能 Web 服务器,通常与 Gunicorn 结合使用,Nginx 作为反向代理处理静态文件和负载均衡。
示例步骤
- 安装 Nginx
- Ubuntu:
sudo apt update && sudo apt install nginx
- CentOS:
sudo yum install nginx
- 配置 Gunicorn
运行 Gunicorn(例如在后台):
1 | gunicorn -w 4 -b 127.0.0.1:8000 app:app & |
- 配置 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
- 访问:通过域名或服务器 IP 访问应用。
- 解释:
- Nginx 监听 80 端口,将请求转发给 Gunicorn。
- 静态文件直接由 Nginx 处理。
平台即服务 (PaaS) 部署
PaaS 平台(如 Heroku、Render)简化了部署流程,无需手动配置服务器。
示例:部署到 Heroku
- 安装 Heroku CLI
下载并安装 Heroku CLI。 - 准备项目
- 添加
Procfile
:web: gunicorn app:app
- 添加
requirements.txt
:bash pip freeze > requirements.txt
- 确保
app.py
中不使用app.run()
(或仅用于开发)。
- 部署步骤
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 自动处理依赖安装和服务器配置。
参考资料
- Flask 官方文档 – Deployment – 部署选项概览。
- Gunicorn 官方文档 – Gunicorn 配置指南。
- DigitalOcean – Flask + Gunicorn + Nginx – 详细部署教程。
- Heroku – Deploying Flask – Heroku 部署指南。
- Real Python – Flask 部署 – 部署实践教程。
这些部署方法适用于不同场景:Gunicorn + Nginx 适合自建服务器,PaaS 适合快速上线。如果需要特定平台的详细步骤或容器化部署(如 Docker),请告诉我!
发表回复