当前位置: 首页 > news >正文

CentOS 8停服后,用Rocky Linux 9 + LNMP(Nginx 1.24, PHP 8.2)搭建WordPress 6.6.2的完整迁移指南

Rocky Linux 9 + LNMP(Nginx 1.24, PHP 8.2)搭建WordPress 6.6.2全流程指南

当CentOS 8停止维护后,许多依赖其稳定性的网站管理员和开发者面临技术栈升级的迫切需求。Rocky Linux作为RHEL的完美替代品,继承了CentOS的基因,同时提供了更现代的软件支持和长期维护承诺。本文将带你从零开始,在Rocky Linux 9上部署最新的LNMP环境(Nginx 1.24 + PHP 8.2),并完成WordPress 6.6.2的安装与优化。

1. 为什么选择Rocky Linux 9作为CentOS 8的替代品

CentOS 8的突然停服让整个开源社区意识到依赖单一发行版的风险。Rocky Linux由CentOS创始人Gregory Kurtzer发起,完全遵循RHEL的构建规范,提供10年生命周期支持,是当前最可靠的替代方案。

相比CentOS 8,Rocky Linux 9带来了多项改进:

  • 内核升级至5.14,支持更新的硬件和文件系统
  • 默认软件包版本更新(如Python 3.9、PHP 8.0等)
  • 增强的安全功能,包括SELinux策略优化
  • 更完善的容器和云原生支持

对于WordPress站点,迁移到Rocky Linux 9意味着:

  • 获得长期安全更新,避免漏洞风险
  • 使用更现代的PHP版本提升性能
  • 兼容现有CentOS生态,迁移成本低

2. Rocky Linux 9基础环境准备

2.1 系统安装与初始化配置

从Rocky Linux官网下载ISO镜像(推荐Minimal安装),完成基础系统安装后,首先更新系统并安装必要工具:

dnf update -y dnf install -y epel-release dnf config-manager --set-enabled powertools dnf install -y vim wget curl git unzip net-tools

设置时区和主机名:

timedatectl set-timezone Asia/Shanghai hostnamectl set-hostname wordpress-server

2.2 防火墙与SELinux配置

确保防火墙允许HTTP/HTTPS流量:

firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload

对于SELinux,建议保持启用状态但调整WordPress目录权限:

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html(/.*)?' restorecon -Rv /var/www/html

3. 安装与配置LNMP环境

3.1 安装Nginx 1.24

Rocky Linux 9默认仓库中的Nginx版本较旧,我们需要添加官方仓库:

cat > /etc/yum.repos.d/nginx.repo <<EOF [nginx-stable] name=nginx stable repo baseurl=https://nginx.org/packages/centos/\$releasever/\$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true EOF dnf install -y nginx systemctl enable --now nginx

验证安装:

nginx -v # 应显示 nginx version: nginx/1.24.x

3.2 安装PHP 8.2及其扩展

Remi仓库提供了最新的PHP版本:

dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm dnf module reset php dnf module enable php:remi-8.2 -y dnf install -y php php-fpm php-cli php-mysqlnd php-gd php-mbstring php-xml php-zip php-curl php-opcache

优化PHP-FPM配置:

vim /etc/php-fpm.d/www.conf # 修改以下参数: user = nginx group = nginx listen = /run/php-fpm/www.sock listen.owner = nginx listen.group = nginx pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 3 pm.max_spare_servers = 10

启动PHP-FPM:

systemctl enable --now php-fpm

3.3 安装与配置MariaDB 10.5

Rocky Linux 9默认提供MariaDB 10.5:

dnf install -y mariadb-server mariadb systemctl enable --now mariadb

运行安全初始化:

mysql_secure_installation

为WordPress创建数据库和用户:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES; EXIT;

4. WordPress安装与配置

4.1 下载并准备WordPress文件

cd /tmp wget https://wordpress.org/latest.tar.gz tar xzf latest.tar.gz -C /var/www/ chown -R nginx:nginx /var/www/wordpress

4.2 配置Nginx虚拟主机

创建新的Nginx配置文件:

vim /etc/nginx/conf.d/wordpress.conf

添加以下内容:

server { listen 80; server_name yourdomain.com; root /var/www/wordpress; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\.ht { deny all; } }

测试并重载Nginx配置:

nginx -t systemctl reload nginx

4.3 完成WordPress安装向导

通过浏览器访问服务器IP或域名,按照WordPress向导完成安装。在数据库配置步骤使用之前创建的数据库信息:

  • 数据库名:wordpress
  • 用户名:wpuser
  • 密码:StrongPassword123!
  • 主机:localhost
  • 表前缀:wp_ (建议修改为自定义前缀如wpabc_)

5. 安全加固与性能优化

5.1 WordPress安全最佳实践

  1. 文件权限设置
chmod 750 /var/www/wordpress/ find /var/www/wordpress/ -type d -exec chmod 755 {} \; find /var/www/wordpress/ -type f -exec chmod 644 {} \; chmod 600 /var/www/wordpress/wp-config.php
  1. 禁用文件编辑:在wp-config.php中添加:
define('DISALLOW_FILE_EDIT', true);
  1. 限制XML-RPC:在Nginx配置中添加:
location = /xmlrpc.php { deny all; return 404; }

5.2 性能优化配置

  1. 启用OPcache:编辑/etc/php.d/10-opcache.ini:
opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1
  1. Nginx缓存配置:在server块中添加:
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 30d; add_header Cache-Control "public, no-transform"; }
  1. PHP-FPM优化:根据服务器内存调整/etc/php-fpm.d/www.conf中的pm参数。

6. 从CentOS 8迁移现有WordPress站点

6.1 数据备份策略

  1. 数据库备份
mysqldump -u root -p wordpress > wordpress_backup.sql
  1. 文件备份
tar czf wordpress_files.tar.gz /var/www/html/wordpress

6.2 迁移步骤

  1. 将备份文件复制到Rocky Linux服务器
  2. 恢复数据库:
mysql -u root -p wordpress < wordpress_backup.sql
  1. 解压网站文件:
tar xzf wordpress_files.tar.gz -C /var/www/
  1. 更新wp-config.php中的数据库连接信息
  2. 检查并更新所有插件和主题

6.3 常见迁移问题解决

  • 权限问题:确保所有文件属于nginx用户
  • PHP函数禁用:检查php.ini中的disable_functions
  • URL重定向:可能需要更新数据库中的siteurl和home选项
UPDATE wp_options SET option_value = 'http://newdomain.com' WHERE option_name IN ('siteurl', 'home');

7. 进阶配置与维护

7.1 配置HTTPS加密

使用Let's Encrypt免费证书:

dnf install -y certbot python3-certbot-nginx certbot --nginx -d yourdomain.com

设置自动续期:

echo "0 0,12 * * * root /usr/bin/certbot renew --quiet" | sudo tee -a /etc/crontab > /dev/null

7.2 设置自动化备份

创建备份脚本/usr/local/bin/wordpress_backup.sh:

#!/bin/bash DATE=$(date +%Y%m%d) BACKUP_DIR="/backups/wordpress" mkdir -p $BACKUP_DIR mysqldump -u wpuser -p'StrongPassword123!' wordpress > $BACKUP_DIR/wordpress_db_$DATE.sql tar czf $BACKUP_DIR/wordpress_files_$DATE.tar.gz /var/www/wordpress find $BACKUP_DIR -type f -mtime +30 -delete

添加到crontab:

0 2 * * * /usr/local/bin/wordpress_backup.sh

7.3 监控与日志分析

安装GoAccess进行Nginx日志分析:

dnf install -y goaccess goaccess /var/log/nginx/access.log --log-format=COMBINED

对于长期运行的系统,考虑配置Prometheus + Grafana监控套件。

http://www.jsqmd.com/news/570171/

相关文章:

  • 耦合详解-模块
  • LeetCode 206. 反转链表 详细技术解析(迭代+递归双解法)
  • Web Serial API实战:5分钟为你的Vue/React前端项目添加串口设备控制面板
  • 瑞祥商联卡回收价格如何,回收揭晓正规平台 - 京回收小程序
  • DeepSeek-R1-Distill-Llama-8B服务化部署:基于MindIE的高并发推理方案
  • ai赋能node.js开发:让快马平台智能生成电商购物车业务逻辑代码
  • 别再只会做循迹小车了!用TCRT5000红外传感器DIY一个智能防溢垃圾桶(附Arduino代码)
  • Qwen3-ASR-1.7B惊艳效果:自动识别中英文技术文档朗读中的公式/代码块
  • 5个实用功能让你的Mac微信焕然一新:WeChatExtension插件完全指南
  • 从H2O到OmniH2O:人形机器人遥操作的技术哲学与工程实践
  • engine/sequence
  • 面试官:MySQL 乐观锁与悲观锁怎么实现?(修订版)
  • AI模型训练显存优化:从Stable Diffusion到LLaMA2的实战配置与调优
  • 魔兽争霸III终极优化指南:免费工具解决现代电脑兼容性问题
  • 京东E卡回收平台推荐,安全有保障! - 团团收购物卡回收
  • input-otp性能优化指南:避免布局偏移和提升用户体验的10个技巧
  • Wan2.2-I2V-A14B图像转视频实战:基于卷积神经网络的风格迁移与动态生成
  • Qwen3-14B部署避坑指南:显存/内存/CUDA驱动兼容性全排查
  • CloudFront + Lambda@Edge 实战:双函数架构实现失败请求记录与异步重放完整方案
  • 璀璨星河Starry Night部署教程:Python3.9+Diffusers环境完整配置
  • 文墨共鸣作品分享:中文食品标签‘零添加’‘无添加’‘不添加’语义等效性验证
  • PyTorch 3.0 DDP + torch.compile混合训练面试通关手册:涵盖Graph Break诊断、Shard策略冲突、以及3种反模式现场复现
  • 2026年西安有名的家装公司排行榜,西安芭宝整装装修公司排第几 - mypinpai
  • 卡牌设计革命:如何用CardEditor批量生成桌游卡牌效率提升300%
  • 豆包API+腾讯云COS实战:手把手教你打造智能图床(含完整代码)
  • 5分钟掌握B站视频下载:免费获取大会员4K高清内容的完整方案
  • Phi-4-mini-reasoning在C语言项目中的调用接口设计与实现
  • 遗传算法(GA)调参实战:以Scikit-learn模型为例,手把手教你自动化超参数搜索
  • 英雄联盟回放分析终极指南:ROFL-Player完整教程
  • 乙巳马年春联生成终端多场景落地:营销/教育/政务/文创四大应用矩阵