直接给结论:Rocky Linux 或 AlmaLinux。
别去折腾 CentOS Stream 了,除非你本身就是 Red Hat 生态的深度贡献者或者需要紧跟上游开发节奏。对于大多数生产环境和个人开发者来说,这两个是 CentOS 8 停更后最正统的“平替”。
下面拆解一下为什么这么选,以及搭建 LNMP 时的几个坑。
1. 为什么是 Rocky 和 Alma?
CentOS 8 在 2021 年底就停止维护了,这是个大前提。现在基于 RHEL(Red Hat Enterprise Linux)源码重新编译发行版主要有两家:
- Rocky Linux:由 CentOS 创始人 Gregory Kurtzer 发起,社区驱动,定位就是“1:1 二进制兼容 RHEL”。它的目标很明确:稳定、长期支持(LSA)、企业级稳定性。
- AlmaLinux:由 CloudLinux 公司赞助,同样承诺 1:1 兼容 RHEL。它 backed by a company,所以在资金和资源上更有保障,且对云厂商的支持做得不错。
怎么选?
两者在技术层面几乎没有区别,都是 EL8/EL9 体系。
- 如果你看重社区纯粹性和开源精神,选 Rocky。
- 如果你希望背后有商业实体兜底,或者你在某些云平台上发现 Alma 的镜像加载更快、兼容性测试更多,选 Alma。
避坑指南:
- 千万别用 CentOS Stream:它是滚动更新模型,更像 Fedora 和 RHEL 之间的测试床。对于追求“稳妥”的生产环境,Stream 可能会遇到一些还没被 RHEL 正式确认的 bug,不够稳。
- 别用 Debian/Ubuntu 混着说:虽然它们也很流行,但既然你指定了“基于 RHEL”,那就死磕这个生态。RHEL 系的优势在于软件包版本相对保守(虽然新,但经过充分测试),安全性补丁推送规范,且很多运维脚本、监控X_X(如 Zabbix, Prometheus Node Exporter)对 EL 系支持最好。
2. 搭建 LNMP 的具体建议
选了系统只是第一步,LNMP 的坑主要在配置和优化上。
Nginx
- 不要从 EPEL 源装最新版:EPEL 里的 Nginx 版本通常滞后。建议去 Nginx 官网下载 RPM 包,或者使用官方提供的 YUM 仓库。这样你能拿到最新的稳定版(Stable Branch),性能更好,安全补丁更新更快。
- Worker 进程数:根据 CPU 核心数设置
worker_processes auto;。记得检查worker_connections,默认 1024 在高并发下可能不够,适当调高到 65535 或更高,并调整系统级的ulimit -n。
MySQL/MariaDB
- MariaDB vs MySQL:在 RHEL 系中,MariaDB 是默认的替代品。如果你没有特殊的 MySQL 特性依赖,直接用 MariaDB 10.5+ 或 10.11+。它在 EL8/EL9 上的集成度更好,配置更简单,性能差距微乎其微。
- 初始化:安装后务必运行
mysql_secure_installation。很多人偷懒不跑这个,导致 root 密码为空或允许远程登录,这是巨大的安全隐患。 - InnoDB 优化:修改
/etc/my.cnf.d/server.cnf,重点调优innodb_buffer_pool_size。一般设为物理内存的 50%-70%(如果是独享云服务器)。这是提升数据库性能最关键的一步。
PHP
- 版本选择:PHP 7.4 已经 EOL(结束支持),PHP 8.0 也在逐渐淘汰。直接上 PHP 8.2 或 8.3。性能比 7.x 快得多,且安全性有保障。
- 安装方式:
- 方案 A(推荐):使用 Remi 仓库。
yum install epel-release remi-release-8(或 9),然后通过yum install php-fpm php-mysqlnd php-gd php-curl...安装。Remi 是 RHEL 系中 PHP 生态的事实标准,插件齐全。 - 方案 B(进阶):如果追求极致控制,可以编译安装。但对于云服务器,编译耗时久,且后续升级麻烦,不建议新手尝试。
- 方案 A(推荐):使用 Remi 仓库。
- FPM 配置:
php-fpm.conf中的pm.max_children是关键。计算公式参考:总内存 / (单个 PHP 进程平均内存)。避免 OOM(内存溢出)导致服务崩溃。
3. 安全加固(比选型更重要)
- 防火墙:启用
firewalld或iptables。只开放 22 (SSH), 80 (HTTP), 443 (HTTPS)。其他端口一律关闭。 - SELinux:不要禁用 SELinux! 很多教程教你
setenforce 0一劳永逸,这是错误的。SELinux 能防止 Web 目录被写入恶意脚本。遇到问题时,学习如何打标签(如chcon或restorecon)而不是关掉它。 - SSH 加固:禁用密码登录,只用密钥认证。修改默认端口(可选,但有用),限制 root 直接登录。
- 自动更新:配置
dnf-automatic或定期手动执行yum update。安全漏洞补丁必须及时打上。
总结
- 系统:Rocky Linux 9 或 AlmaLinux 9(优先选 EL9,因为 EL8 即将进入生命周期尾声)。
- Nginx:官网 RPM 源。
- MySQL:MariaDB 10.11+。
- PHP:Remi 源的 PHP 8.2/8.3。
- 心态:别怕报错,看日志。
journalctl -xe和/var/log/nginx/error.log是你的朋友。
这套组合在稳定性、安全性和易用性之间取得了最佳平衡。
CLOUD云计算