(温馨提示:本教程基于Ubuntu 22.04系统,但原理通用哦~)
🔥 准备工作:别急着敲命令!
先来检查你的项目结构(划重点):
/myflaskapp
├── app/
│ ├── __init__.py
│ ├── routes.py
│ └── templates/
├── config.py
├── requirements.txt # 这个必须有!
└── venv/ # 建议别上传服务器
⚠️ 血泪教训:千万记得在本地执行 pip freeze > requirements.txt!我之前忘记记录psycopg2依赖,结果在服务器debug了3小时(哭)
💻 服务器配置四部曲(新手必看)
1. 环境搭建(用apt-get起飞~)
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-venv nginx git -y
2. 克隆代码的骚操作
git clone https://github.com/你的账号/项目.git
cd 项目
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
(小贴士:可以用scp传文件,但git clone更方便版本管理)
3. Gunicorn配置(重点中的重点!)
新建/etc/systemd/system/myflask.service:
[Unit]
Description=Gunicorn instance for my Flask app
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/myflaskapp
Environment="PATH=/home/ubuntu/myflaskapp/venv/bin"
ExecStart=/home/ubuntu/myflaskapp/venv/bin/gunicorn --workers 3 --bind 0.0.0.0:5000 app:app
[Install]
WantedBy=multi-user.target
(注意替换实际路径!worker数量=CPU核心*2+1)
4. Nginx反向代理(SSL强烈建议搞起)
/etc/nginx/sites-available/myflask:
server {
listen 80;
server_name 你的域名;
location / {
proxy_pass http://localhost:5000;
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 /home/ubuntu/myflaskapp/app/static;
}
}
🚨 五大常见翻车现场(附急救方案)
1. 502 Bad Gateway
➔ 检查Gunicorn是否运行:sudo systemctl status myflask
➔ 查看日志:journalctl -u myflask.service -b
2. 静态文件404
➔ Nginx配置中的static路径是否正确
➔ 确认文件权限:chmod -R 755 static/
3. 数据库连接失败
➔ 检查服务器防火墙是否开放3306端口
➔ 确认数据库用户远程访问权限
4. 环境变量丢失
➔ 使用.env文件时记得安装python-dotenv
➔ 或者在service文件里加Environment变量
5. 内存泄漏杀手
➔ 用--preload参数防止worker内存泄漏
➔ 定期重启服务:sudo systemctl restart myflask
🌈 高级玩法扩展包
方案A:Docker化部署(未来趋势)
FROM python:3.9-slim
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
方案B:云原生部署(以AWS Elastic Beanstalk为例)
- 安装EB CLI:
pip install awsebcli - 初始化:
eb init -p python-3.9 my-flask-app - 部署:
eb deploy
方案C:Serverless无服务(冷启动警告⚠️)
使用Zappa部署到AWS Lambda:
pip install zappa
zappa init
zappa deploy production
🛠️ 运维必备工具箱
- 监控神器:Prometheus + Grafana
- 日志分析:ELK Stack(Elasticsearch, Logstash, Kibana)
- 自动伸缩:Kubernetes Horizontal Pod Autoscaler
- 备份策略:crontab + AWS S3
💡 我的私房小技巧
- 用
flask-talisman加强安全头 - 配置自动续期的Let’s Encrypt证书
- 在Nginx层开启gzip压缩
- 使用Supervisor管理多个进程
- 定期执行
pip-review更新依赖
(超级重要)部署完成后一定要做压力测试!推荐用locust模拟并发用户。
🎯 选择困难症终结者
👉 小流量个人项目:传统部署够用
👉 需要快速扩展:Docker Swarm
👉 企业级应用:Kubernetes集群
👉 不想管服务器:Serverless
部署完成后别急着关窗口!打开手机设置个监控告警,毕竟服务器就像女朋友,需要时时关心(别问我怎么知道的…)
下次想看我折腾什么部署黑科技?留言区见!部署遇到问题的同学也可以把错误信息发出来,咱们一起debug呀~

被折叠的 条评论
为什么被折叠?



