快速搭建LNMP化境_Rocky版本

CentOS Linux 的停更确实让很多人需要寻找替代方案。现在有非常多优秀且免费的替代品。

1. CentOS替换系统方案

1.1. 核心需求分析

针对你的“PHP开发和生产环境”需求,我们需要一个具备以下特点的系统:

  1. 免费:这是基本要求。
  2. 长期支持:生产环境需要稳定,不能频繁升级系统大版本。
  3. 软件包丰富/更新及时:能方便地安装PHP、Nginx/Apache、MySQL/PostgreSQL等最新或特定版本的软件。
  4. 社区活跃/文档完善:遇到问题容易找到解决方案。

1.2. 首选推荐(直接替代品,无缝迁移)

这类系统是CentOS的“精神续作”,旨在100%兼容RHEL,迁移成本最低。

1.2.1. Rocky Linux 或 AlmaLinux

这两个是当前最主流的CentOS替代品,可以说是并列第一选择。它们都是由原CentOS项目的创始人或社区主导开发的。

  • 背景:在Red Hat宣布停止CentOS Linux后,为了继承CentOS的使命而诞生。
  • 版本建议Rocky Linux 9.xAlmaLinux 9.x(对应RHEL 9,支持到2032年)。如果你需要更长的支持周期,也可以选择 8.x 版本(支持到2029年)。
  • 优点
    • 高度兼容:与RHEL/CentOS二进制兼容,你之前针对CentOS的脚本、知识和软件包几乎可以无缝迁移。
    • 超长支持周期:10年支持,非常适合生产环境。
    • 稳定可靠:基于企业级的RHEL,经过了严格的测试。
    • 迁移工具:提供从CentOS 8/7 迁移到Rocky/AlmaLinux的官方工具,过程相对平滑。
  • 缺点
    • 软件包版本相对“保守”。例如,默认仓库里的PHP版本可能不是最新的,但可以通过第三方仓库(如Remi仓库)轻松安装最新版本。这一点和CentOS完全一样。

如何选择?:Rocky和AlmaLinux在功能和稳定性上几乎没有区别。你可以根据个人偏好或社区氛围选择其中一个。对于绝大多数用户来说,它们是等价的。

1.3. 优秀替代方案(如果你愿意尝试不同风格的Linux)

1.3.1. Debian Stable

Debian是世界上最古老的Linux发行版之一,以其极致稳定巨大的软件仓库而闻名。Ubuntu就是基于Debian构建的。

  • 版本建议Debian 12 (Bookworm)
  • 优点
    • 极其稳定:Debian的稳定版以“坚如磐石”著称,是生产环境的绝佳选择。
    • 软件包丰富:拥有超过6万个软件包,几乎涵盖所有需求。
    • 安全更新及时:安全团队非常活跃,能快速响应漏洞。
    • 清晰的许可:严格遵循自由软件准则。
  • 缺点
    • 软件版本同样比较保守,倾向于稳定而非最新。
    • 系统配置有时可能需要更多的手动操作(但对于有经验的用户来说不是问题)。

1.3.2. Ubuntu LTS (长期支持版)

Ubuntu是基于Debian,但更注重易用性和新硬件支持,拥有庞大的用户社区。

  • 版本建议Ubuntu Server 22.04 LTS24.04 LTS
  • 优点
    • 社区支持强大:遇到任何问题,网上几乎都能找到答案,中文资料也极多。
    • 软件版本较新:相比RHEL系和Debian Stable,Ubuntu LTS会提供相对较新的软件版本,对PHP开发更友好。
    • 易用性好:安装和配置对新手更友好。
    • 云市场支持好:是所有主流云厂商的首选系统之一。
  • 缺点
    • 相比Rocky/AlmaLinux,与你原有的CentOS经验略有差异(例如软件包管理工具是apt而非yum/dnf)。
    • 一些纯技术派认为它不如Debian“纯粹”,但这对实际使用影响不大。

1.4. 快速对比总结

特性 Rocky Linux / AlmaLinux Debian Stable Ubuntu LTS
核心来源 RHEL 下游(100%兼容) 独立发行版 Debian 下游
包管理器 yum / dnf (rpm包) apt (deb包) apt (deb包)
软件版本 保守(追求稳定) 非常保守(追求极致稳定) 相对较新(稳定与新版平衡)
支持周期 10年 约5年 5年(可延长)
迁移难度 极低(无缝迁移) 中等(需要学习新系统) 低(社区资料丰富)
推荐场景 直接从CentOS迁移,追求稳定无缝 追求极致稳定和自由软件 希望软件版本较新,社区支持强大

1.5. 针对PHP环境的额外建议

无论选择哪个系统,管理PHP多版本都可能是你的需求。强烈建议使用第三方仓库来获取最新版本的PHP:

  • 对于Rocky/AlmaLinux/CentOS系:使用 Remi's RPM repository。这是行业标准做法,安全可靠。
  • 对于Debian/Ubuntu系:使用 Ondřej Surý 的 PPA。同样是官方推荐的第三方仓库。

这些仓库可以让你轻松安装PHP 8.1, 8.2, 8.3等任何最新版本,并与系统自带的旧版本共存。

1.6. 最终建议

  1. 如果你希望迁移过程最平滑,不想改变使用习惯首选 Rocky Linux 或 AlmaLinux (9.x)。这是最稳妥、最直接的选择。
  2. 如果你不介意学习一个新系统,并且希望软件版本稍微新一点,方便开发选择 Ubuntu Server LTS (22.04/24.04)。它的巨大社区是你的后盾。
  3. 如果你是稳定性至上主义者,并且喜欢Debian的哲学选择 Debian 12。它绝不会让你失望。

生产环境部署提醒

  • 选择LTS或稳定版系列。
  • 制定严格的更新策略,先在测试环境验证后再应用到生产环境。
  • 做好备份!

2. Rocky Linux 搭建LNMP

2.1. Rokcy Linux下载

官方下载地址 https://rockylinux.org/zh-CN/download

2.2. 检查SELinux状态

SELinux可能会阻止SSH连接:
# 查看SELinux状态
getenforce

# 如果是Enforcing模式,可以暂时禁用测试
sudo setenforce 0

# 或者永久禁用(生产环境不推荐)
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

2.3. 检查SSH配置

编辑SSH配置文件:
sudo vi /etc/ssh/sshd_config
确保以下配置正确:
Port 22
PermitRootLogin yes              # 允许root登录
PasswordAuthentication yes       # 允许密码认证
PubkeyAuthentication yes         # 允许密钥认证
重启SSH服务:
sudo systemctl restart sshd

2.4. 检查用户和密码

确保你使用的用户存在且密码正确:
# 创建用户(如果需要)
sudo useradd your_username
sudo passwd your_username

# 将用户加入sudo组
sudo usermod -aG wheel your_username

2.5. 安装Nginx最新版

yum install nginx #安装版本最好方式,不过需要确认版本别太低导致web代码有兼容问题;这样,就不需要如下的代码安装方式了

systemctl start nginx
systemctl enable nginx
# 查看配置文件路径以及合法性
nginx -t
#登录查看部署站点内容
cd /usr/share/nginx/html

2.6. 安装MySQL仓库

2.6.1. 安装适合Rocky Linux 的Mysql

# 对于Rocky Linux 8:
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm

# 对于Rocky Linux 9:
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm
sudo yum install -y https://dev.mysql.com/get/mysql84-community-release-el9-2.noarch.rpm

# 对于Rocky Linux 10:
sudo yum install -y https://dev.mysql.com/get/mysql84-community-release-el10-2.noarch.rpm

# 禁用默认模块(重要!)
sudo yum -y module disable mysql

#安装mysql
sudo yum -y install mysql mysql-community-server

# 启动 MySQL 服务
sudo systemctl start mysqld

# 检查状态
sudo systemctl status mysqld

# 开机启动 MySQL 数据库。
sudo systemctl enable mysqld

# 查看临时 root 密码
sudo grep 'temporary password' /var/log/mysqld.log

# 设置正确的权限
sudo chown -R mysql:mysql /var/lib/mysql

# 老版本需要保存数据执行如下
mysqldump -u root -p --all-databases > all_databases.sql

2.6.2. 修改Mysql密码

  • mysql cli登录

    #查看MySQL初始密码。
    grep "password" /var/log/mysqld.log
    mysql -uroot -p
    #set global validate_password_policy=0;  #修改密码安全策略为低(只校验密码长度,至少8位)。
    
    #第一次登录可能没有密码
    mysql -u root -h 127.0.0.1 -P 3306

执行以下命令登录mysql,修改MySQL默认密码。满足MySQL强密码策略(e.g., 大写字母,小写字母,特殊字符,最少8字符).

  • 方法 1:单引号包裹 + 重复单引号转义分号
    适用于 ‌MariaDB 10.2 及以上版本‌:

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test12345678-';
    FLUSH PRIVILEGES;
  • 方法 2:使用 SET PASSWORD 语句
    兼容旧版本 MariaDB:

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Test12345678-');

    ‌说明‌:PASSWORD() 函数自动处理特殊字符,但需注意该语法在 MariaDB 10.4 后可能废弃‌8。

  • 方法 3:直接更新 mysql.user 表(需谨慎)
    适用于所有版本:

    UPDATE mysql.user SET authentication_string = PASSWORD('Test12345678-')
    WHERE User = 'root' AND Host = 'localhost';
    FLUSH PRIVILEGES;
  • 执行以下命令,授予root用户远程管理权限。

    use mysql;
    select host from user;
    update user set host ='%' where user ='root';

2.6.3. 生产环境创建mysql的用户名

创建建远程专用用户 app_remote

语法说明:

CREATE USER '用户名'@'允许访问的IP' IDENTIFIED WITH 认证插件 BY '密码';
  • 用户名:建议使用有意义的名称(如 app_remote ),避免直接用 remote_user。
  • 允许访问的 IP:
    限制特定 IP:192.168.1.100(仅允许该 IP 访问,最安全)。
    限制 IP 段:192.168.1.%(允许该网段所有 IP 访问)。
    禁止所有远程(仅本地):localhost 或 127.0.0.1(不适合远程用户)。
  • 认证插件:
    MySQL 8.0+ 默认 caching_sha2_password(更安全,需客户端支持)。
    兼容旧客户端:mysql_native_password(兼容性好,安全性稍低)。
    密码:必须复杂(字母 + 数字 + 特殊字符,长度≥12 位)。

示例(推荐):
创建一个仅允许从 192.168.1.100 访问的用户 app_remote,使用强密码:

-- MySQL 8.0+ 推荐(默认插件)
CREATE USER 'app_remote'@'192.168.1.100' IDENTIFIED BY 'StrongP@ssw0rd2024!';

-- 若客户端不支持 caching_sha2_password,改用旧插件
CREATE USER 'app_remote'@'192.168.1.100' IDENTIFIED WITH mysql_native_password BY 'StrongP@ssw0rd2024!';

-- 为 app_remote 添加本地登录权限(密码可与远程不同,建议统一)
CREATE USER IF NOT EXISTS 'app_remote'@'localhost' IDENTIFIED BY '你的密码';

-- 授予本地操作所需的最小权限(例如仅允许操作 app_db)
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_remote'@'localhost';

-- 修改用户密码,用单引号包裹含分号的密码
ALTER USER '用户名'@'主机' IDENTIFIED BY 'MyPass;123';

-- 刷新权限
FLUSH PRIVILEGES;

2.7. 安装PHP

2.7.1. 官方仓库直接支持

  • Rocky Linux 9/10 的默认AppStream仓库中直接包含了 PHP 8.1
  • 安装非常简单,无需第三方仓库:
    sudo yum update
    sudo yum module list php  # 查看可用的PHP模块
    sudo yum module enable php:8.1  # 启用PHP 8.1模块
    sudo yum install php php-cli php-fpm php-mysqlnd  # 安装PHP及相关扩展

2.7.2. 版本对应关系

Rocky Linux 版本 默认PHP版本 可选PHP版本(官方仓库)
Rocky Linux 9 PHP 8.0 PHP 8.1, PHP 8.2, PHP 8.0
Rocky Linux 8 PHP 7.2 PHP 7.2, 7.3, 7.4, 8.0, 8.1(需Remi仓库)

2.7.3. 具体安装步骤(Rocky Linux)

# 1. 查看可用的PHP版本
sudo yum module list php

# 2. 启用PHP 8.1模块
sudo yum module enable php:8.1

# 3. 安装PHP 8.1及常用扩展
sudo yum install php php-cli php-fpm php-mysqlnd php-pdo php-json php-xml php-curl php-zip php-gd php-mbstring

# 4. 验证安装
php -v  # 应该显示PHP 8.1.x

# 5. 启动PHP-FPM(如果使用Nginx)
sudo systemctl enable --now php-fpm
sudo systemctl status php-fpm

2.7.4. 如果需要其他PHP版本(灵活性)

即使选择Rocky Linux,你也可以通过Remi仓库安装其他PHP版本:

# 启用Remi仓库(用于更多PHP版本选择)
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

## 下载其中rpm,网址如下 https://rpms.remirepo.net/enterprise/

# 安装PHP 8.2或8.3(如果需要)
sudo yum module enable php:remi-8.2
sudo yum install php
赞赏

微信赞赏支付宝赞赏

发表评论

邮箱地址不会被公开。 必填项已用*标注