直接给结论:首选 Ubuntu 20.04 LTS 或 22.04 LTS。
如果非要在这两者里二选一,Ubuntu 22.04 LTS 是目前最稳妥、社区支持最好、且对 Python 3.10+(Django/Flask 现代版本依赖)兼容性最佳的选择。
下面从几个维度拆解为什么选它,以及怎么避坑:
1. 为什么是 Ubuntu?
- Python 生态的原生适配:
Django 和 Flask 都是 Python Web 框架。在 Linux 发行版中,Debian/Ubuntu 系列对 Python 包管理(pip, venv, poetry)的支持是最顺滑的。很多第三方库(尤其是涉及 C 扩展如psycopg2,cryptography等)在 Ubuntu 上的编译依赖库(build-essential, libpq-dev 等)最容易搞定。 - 镜像源稳定:
腾讯云提供的 Ubuntu 镜像通常预装了基础工具链,且国内用户访问 Ubuntu 官方源可能稍慢,但你可以轻松配置阿里云或清华大学的镜像源,速度飞快。 - 文档与教程丰富度:
网上 90% 以上的 Django/Flask 部署教程(Nginx + Gunicorn/Uvicorn + Supervisor/systemd)都是以 Ubuntu/CentOS 为例写的。用 Ubuntu,你遇到报错时搜到的解决方案能直接复制粘贴;如果用 CentOS Stream 或 Alpine,你可能得花时间去适配路径差异或软件包命名差异(比如yumvsapt)。
2. 为什么不推荐其他常见选项?
- CentOS/RHEL 系:
- CentOS 7:已停止维护(EOL),Python 默认版本太老(3.6),装新版的 Django/Flask 各种依赖冲突,折腾死人。
- Alibaba Cloud Linux / Rocky Linux / AlmaLinux:虽然稳定,但对于纯 Python Web 项目来说,优势不明显,反而因为包管理器不同增加了学习成本。除非你有遗留的 Java 或 .NET 混合栈,否则没必要。
- Windows Server:
- 绝对不推荐。Django/Flask 在 Linux 下运行更稳定、性能更好、资源占用更低。IIS + Python 的配置复杂度远高于 Nginx + Gunicorn。试用镜像跑 Windows 还占内存,体验差。
- 轻量应用服务器(Lighthouse)镜像:
- 如果你用的是腾讯云“轻量应用服务器”而不是标准 CVM,注意看是否提供“Docker 一键部署”或“Web 环境”镜像。如果有,可以直接用,但自定义程度低。如果是标准 CVM,请坚持用通用操作系统镜像。
3. 实操建议:如何快速启动一个 Django/Flask 项目
假设你选择了 Ubuntu 22.04 LTS,以下是极简部署流程(避免踩坑):
Step 1: 更新系统 & 安装基础依赖
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip python3-venv nginx git -y
Step 2: 创建虚拟环境并安装项目依赖
cd ~
mkdir myproject
cd myproject
python3 -m venv venv
source venv/bin/activate
pip install django gunicorn psycopg2-binary # 如果是 Flask,换成 flask gunicorn
# pip install -r requirements.txt 如果你有需求文件
Step 3: 测试运行
# Django
gunicorn myproject.wsgi:application --bind 0.0.0.0:8000
# Flask
gunicorn app:app --bind 0.0.0.0:8000
浏览器访问 http://<你的CVM公网IP>:8000,看到页面即成功。
Step 4: 配置 Nginx 反向XX(生产环境必备)
不要直接用 Gunicorn 暴露端口,用 Nginx 做静态文件和反向XX。
创建 /etc/nginx/sites-available/myproject:
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 静态文件处理(Django 需要 collectstatic)
location /static/ {
alias /home/ubuntu/myproject/static/;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
4. 额外提醒(腾讯云特有)
- 安全组规则:
这是新手最常翻车的地方。Ubuntu 系统内防火墙(ufw)可能关闭了 80 端口,但更重要的是腾讯云控制台的安全组。- 确保入站规则放行了 TCP 80(HTTP)和 TCP 443(HTTPS,如果你后续配 SSL)。
- 调试时可以临时放行 TCP 8000,但生产环境务必通过 Nginx 转发到 80。
- 内核优化:
Ubuntu 镜像默认内核参数适合大多数场景。如果并发量极大(>10k QPS),可能需要调整net.ipv4.tcp_tw_reuse等参数,但这属于进阶话题,初期无需关心。 - 使用 Docker?
如果你希望环境隔离更强、迁移更方便,可以在 Ubuntu 上安装 Docker,然后写一个Dockerfile和docker-compose.yml。这在腾讯云 CVM 上同样适用,且更符合现代 DevOps 实践。
总结
| 项目 | 推荐选择 |
|---|---|
| 操作系统 | Ubuntu 22.04 LTS |
| Web 服务器 | Nginx |
| 应用服务器 | Gunicorn (Django) / Uvicorn (Flask async) |
| 进程管理 | systemd(比 supervisor 更原生) |
| 数据库 | PostgreSQL(配合 psycopg2)或 MySQL 5.7+/8.0 |
一句话建议:别纠结,选 Ubuntu 22.04,按标准 Nginx + Gunicorn 架构部署,遇到问题直接搜“Ubuntu Django Nginx Gunicorn”,答案遍地都是。
云技术博客