先说结论:别纠结,直接上 Ubuntu 22.04 LTS 或 24.04 LTS。
对于“1核1G”这种极限配置的新手服务器,CentOS(尤其是 CentOS 7)已经不是最优解,甚至可以说是个坑。以下是从实战角度出发的详细分析,不整虚的。
1. 为什么我不推荐 CentOS?
- 生命周期结束(EOL):CentOS 7 在 2024 年 6 月 30 日已经正式停止维护。这意味着没有安全补丁,没有 Bug 修复。虽然你可以用 CentOS Stream 或者 Rocky Linux/AlmaLinux 替代,但作为新手,你面对的是“兼容性”和“文档时效性”的问题。
- 资源占用偏高:CentOS 默认安装的服务包相对较多,内核优化偏向企业级稳定性而非极致轻量。在 1G 内存下,系统启动后可能只剩几百兆可用,跑个 Nginx + MySQL 稍微大点的查询就容易 OOM(内存溢出)。
- 软件源老旧:CentOS 7 的软件仓库里,Python、Node.js、Go 等现代开发语言的版本普遍较老。你需要额外配置 EPEL 或第三方源才能装上新版工具,这对新手来说增加了出错概率。
2. 为什么 Ubuntu 是更好的选择?
- 社区生态无敌:网上 90% 的现代教程(Docker, Kubernetes, Python, Web 框架)都是基于 Debian/Ubuntu 编写的。遇到问题搜“Ubuntu xxx”,结果比搜“CentOS xxx”准确得多。
- Apt vs Yum/Dnf:
apt install的速度和依赖解析能力在轻量级服务器上表现更好。而且 Ubuntu 的软件源更新更激进,你能更快装上最新版的运行时环境。 - Swap 机制更友好:Ubuntu 对 Swap 的处理和内存管理策略在低配机器上通常更平滑一些。
3. 给 1核1G 新手的“保命”建议
无论选哪个系统,1核1G 的物理瓶颈是硬伤。如果你只装一个最基础的 Web 服务(如 Nginx + PHP/Python),勉强能跑;但如果想跑 Java、大型数据库或多容器环境,必崩。
必须做的优化操作(以 Ubuntu 为例):
A. 第一步:创建 Swap 分区(虚拟内存)
这是救命稻草。物理内存只有 1G,一旦并发稍高就会宕机。
# 创建一个 2GB 的 swap 文件
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 永久生效,写入 fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 调整 swappiness 值,让系统更倾向于使用 swap 而不是直接杀进程
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
B. 第二步:精简系统
不要安装桌面环境!确保你通过 SSH 连接。如果是云厂商提供的镜像,通常已经是 Server 版,无需担心。
C. 第三步:选择合适的技术栈
- 避免:Java (Spring Boot)、MySQL (8.0+)、Redis (集群模式)。这些玩意儿起步就要占 512M-1G+ 内存。
- 推荐:
- Web 服务:Nginx + PHP-FPM (PHP 7.4/8.1) 或 Node.js (PM2 管理)。
- 数据库:如果必须用关系型数据库,考虑 SQLite(单文件,无后台进程);如果必须用 MySQL,尝试 MariaDB 并严格限制连接数和缓存大小;或者直接使用云厂商提供的 RDS 服务(虽然要多花钱,但省心且稳定)。
- 容器化:可以装 Docker,但严禁在 1G 机器上跑多个重型容器。单个容器内存限制要设好 (
--memory="512m")。
D. 第四步:安全防护
新手最容易忽视这个,导致服务器被XX病毒入侵。
# 1. 禁用 root 远程登录,创建普通用户
sudo adduser yourname
sudo usermod -aG sudo yourname
sudo nano /etc/ssh/sshd_config
# 修改: PermitRootLogin no
# 重启 ssh: sudo systemctl restart sshd
# 2. 安装防火墙
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 3. 安装 fail2ban 防止暴力破解
sudo apt install fail2ban
sudo systemctl enable fail2ban
总结
- 操作系统:选 Ubuntu 22.04/24.04 LTS。
- 心态:接受它的局限性,不要试图在上面跑重负载应用。
- 核心策略:加 Swap + 精简服务 + 严格权限控制。
如果你未来业务增长,需要更多内存和 CPU,直接升级云服务器实例或迁移到更高配置即可,数据备份做好就行。现在的阶段,简单、稳定、易排查 才是王道。
云技术博客