直接给结论:别折腾了,装 CentOS Stream 9 或者 Rocky Linux 9 / AlmaLinux 9。
为什么?因为你的硬件配置是“丐版”中的“丐版”,2核2G在现在的软件生态下非常捉襟见肘。选错系统或版本,哪怕只是跑个简单的 Web 服务,内存都会爆满,导致服务器卡死、重启甚至无法 SSH 登录。
下面从实战角度给你拆解原因和方案:
1. 为什么强烈不建议装 CentOS 7/8?
- CentOS 7:
- 生命周期结束:官方支持已于 2024 年 6 月终止。虽然还能用,但安全补丁不再更新,新软件(如新版 Nginx、MySQL、PHP)依赖的库太老,编译安装极其痛苦。
- 资源浪费:CentOS 7 的内核较老,对现代 CPU 指令集优化不足,且 systemd 等组件启动慢,占用基础内存略高。
- CentOS 8:
- 已死:提前终止生命周期,仓库关闭,yum/dnf 命令大概率会报错,除非你手动修改源为 vault,但这增加了维护成本。对于 2G 内存的小鸡来说,折腾源的时间不如多睡会儿觉。
2. 为什么推荐 CentOS Stream 9 或 RHEL 衍生版?
- 内核优势:Stream 9 基于 EL9(Enterprise Linux 9),内核较新(5.14+),对内存管理、网络栈有更好优化,能在有限资源下跑出更高性能。
- 软件兼容性:主流开源软件(Docker, Kubernetes, Nginx, MySQL 8+, PostgreSQL 14+)都优先适配 EL9。如果你要跑 Docker,EL9 的 cgroup v2 支持更完善,容器隔离性和性能更好。
- 长期维护:CentOS Stream 是 RHEL 的上游滚动更新版,虽然定位变了,但对于个人开发者或小项目,它比停更的 CentOS 7/8 更安全、更活跃。
3. 如果非要装“经典版”,怎么选?
如果你因某些老旧业务必须用传统稳定版,Rocky Linux 9 或 AlmaLinux 9 是最佳选择。它们是 CentOS 8 的精神继承者,二进制兼容 RHEL 9,社区活跃,文档丰富,且完全免费。
⚠️ 注意:不要为了“怀旧”去装 CentOS 7。除非你的业务代码明确依赖 CentOS 7 的环境(比如某些老版本的 Oracle DB 或特定嵌入式软件),否则在新项目中用 CentOS 7 就是给自己挖坑。
4. 2核2G 服务器的关键生存指南(比选系统更重要)
不管你装哪个版本,2G 内存都是硬伤。以下操作必做,否则系统随时 OOM(Out of Memory):
✅ 必须添加 Swap(交换空间)
- 至少 2GB Swap。这是救命稻草。
- 创建方法(以 2G Swap 为例):
# 创建一个 2G 的文件 dd if=/dev/zero of=/swapfile bs=1M count=2048 chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 写入 fstab 确保重启生效 echo '/swapfile none swap sw 0 0' >> /etc/fstab - 调整 vm.swappiness 参数,让系统在物理内存紧张时更积极地使用 Swap:
sysctl vm.swappiness=10 # 永久生效 echo 'vm.swappiness=10' >> /etc/sysctl.conf
✅ 精简服务,禁用非必要进程
- 安装系统时选择最小化安装(Minimal Install)。
- 禁用不需要的服务:
systemctl disable firewalld # 如果用云厂商的安全组,可关本地防火墙 systemctl disable bluetooth systemctl disable cups - 检查并卸载预装的无用包:
dnf remove <package_name>
✅ 数据库优化
- 不要用 MySQL/MariaDB 默认配置!它们起步就吃 300-500MB 内存。
- 替代方案:
- 使用 SQLite(适合小数据量)。
- 使用 PostgreSQL 并调优
shared_buffers为 128MB~256MB。 - 使用 Redis 作为缓存层,减轻数据库压力。
- 如果必须用 MySQL,务必修改
/etc/my.cnf.d/server.cnf,设置innodb_buffer_pool_size = 128M,max_connections = 50。
✅ 应用层优化
- PHP-FPM 的
pm.max_children设小一点(比如 5-10),避免并发请求过多撑爆内存。 - Nginx 开启 gzip,减少带宽和内存占用。
- 考虑使用轻量级 Web 服务器如 Caddy 或 Tengine,它们在某些场景下比 Nginx 更省内存。
总结建议
| 需求 | 推荐系统 | 理由 |
|---|---|---|
| 新项目、学习、通用开发 | Rocky Linux 9 或 AlmaLinux 9 | 稳定、安全、社区支持好,RHEL 兼容 |
| 想体验最新技术栈 | CentOS Stream 9 | 滚动更新,接近 RHEL 未来版本 |
| 老旧遗留系统维护 | CentOS 7(仅限必要情况) | 别无选择,但需自行维护安全补丁 |
最后提醒:2核2G 不是用来跑大型架构的。把它当作一个“单点服务节点”来用,专注跑好一个应用(比如一个 WordPress 站点 + Redis 缓存),而不是试图在上面部署微服务集群。做好 Swap 和内存监控,比纠结具体版本号重要得多。
云计算HECS