努力
奋斗

云服务器上搭建LNMP环境,选哪个基于RHEL的免费服务器系统更稳妥?

服务器价格表

直接给结论: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(进阶):如果追求极致控制,可以编译安装。但对于云服务器,编译耗时久,且后续升级麻烦,不建议新手尝试。
  • FPM 配置:php-fpm.conf 中的 pm.max_children 是关键。计算公式参考:总内存 / (单个 PHP 进程平均内存)。避免 OOM(内存溢出)导致服务崩溃。

3. 安全加固(比选型更重要)

  1. 防火墙:启用 firewalld 或 iptables。只开放 22 (SSH), 80 (HTTP), 443 (HTTPS)。其他端口一律关闭。
  2. SELinux:不要禁用 SELinux! 很多教程教你 setenforce 0 一劳永逸,这是错误的。SELinux 能防止 Web 目录被写入恶意脚本。遇到问题时,学习如何打标签(如 chcon 或 restorecon)而不是关掉它。
  3. SSH 加固:禁用密码登录,只用密钥认证。修改默认端口(可选,但有用),限制 root 直接登录。
  4. 自动更新:配置 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 是你的朋友。

这套组合在稳定性、安全性和易用性之间取得了最佳平衡。