CentOS Linux 的停更确实让很多人需要寻找替代方案。现在有非常多优秀且免费的替代品。
1. CentOS替换系统方案
1.1. 核心需求分析
针对你的“PHP开发和生产环境”需求,我们需要一个具备以下特点的系统:
- 免费:这是基本要求。
- 长期支持:生产环境需要稳定,不能频繁升级系统大版本。
- 软件包丰富/更新及时:能方便地安装PHP、Nginx/Apache、MySQL/PostgreSQL等最新或特定版本的软件。
- 社区活跃/文档完善:遇到问题容易找到解决方案。
1.2. 首选推荐(直接替代品,无缝迁移)
这类系统是CentOS的“精神续作”,旨在100%兼容RHEL,迁移成本最低。
1.2.1. Rocky Linux 或 AlmaLinux
这两个是当前最主流的CentOS替代品,可以说是并列第一选择。它们都是由原CentOS项目的创始人或社区主导开发的。
- 背景:在Red Hat宣布停止CentOS Linux后,为了继承CentOS的使命而诞生。
- 版本建议:Rocky Linux 9.x 或 AlmaLinux 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 LTS 或 24.04 LTS
- 优点:
- 社区支持强大:遇到任何问题,网上几乎都能找到答案,中文资料也极多。
- 软件版本较新:相比RHEL系和Debian Stable,Ubuntu LTS会提供相对较新的软件版本,对PHP开发更友好。
- 易用性好:安装和配置对新手更友好。
- 云市场支持好:是所有主流云厂商的首选系统之一。
- 缺点:
- 相比Rocky/AlmaLinux,与你原有的CentOS经验略有差异(例如软件包管理工具是
apt而非yum/dnf)。 - 一些纯技术派认为它不如Debian“纯粹”,但这对实际使用影响不大。
- 相比Rocky/AlmaLinux,与你原有的CentOS经验略有差异(例如软件包管理工具是
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. 最终建议
- 如果你希望迁移过程最平滑,不想改变使用习惯:首选 Rocky Linux 或 AlmaLinux (9.x)。这是最稳妥、最直接的选择。
- 如果你不介意学习一个新系统,并且希望软件版本稍微新一点,方便开发:选择 Ubuntu Server LTS (22.04/24.04)。它的巨大社区是你的后盾。
- 如果你是稳定性至上主义者,并且喜欢Debian的哲学:选择 Debian 12。它绝不会让你失望。
生产环境部署提醒:
- 选择LTS或稳定版系列。
- 制定严格的更新策略,先在测试环境验证后再应用到生产环境。
- 做好备份!
2. Rocky Linux 搭建LNMP
2.1. Rokcy Linux下载
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
赞赏
微信赞赏
支付宝赞赏