一次 WordPress 站点迁移的完整命令清单(CentOS 7 → Ubuntu 22.04)

Ubuntu 22.04下Nginx Web Root迁移:权限、AppArmor与路径配置全解析 Web Root(文档根目录)是Nginx服务响应HTTP请求的文件系统起点,其配置直接影响静态资源加载、权限控制与安全合规。在Ubuntu 22.04中,由于AppArmor默认启用、/srv目录权限语义变更、www-data组继承机制调整及open_file_cache缓存行为差异,传统root路径迁移极易引发403/404错误。理解Linux目录遍历(x权限)、Nginx location匹配逻辑(root vs alias)、AppArmor策略约束(rwkl权限模型)三大核心原理,是保障Larav 阅读详情
适用场景与环境

单机 Web 站点(nginx + PHP + MySQL)整机迁移,允许几十秒只读。

环境:源机 CentOS 7.9(2C4G)、目标机 Ubuntu 22.04(2C4G)、nginx 1.20 / 1.24、PHP 8.1、MySQL 8.0。命令中的 IP、端口、路径需替换为实际值。

1. 迁移前检查表

检查项

命令

期望结果

站点根目录

nginx -T | grep root

与同步路径一致

当前 TTL

dig +noall +answer <domain> A

≤300 才可直接切

磁盘余量

df -h /var

目标机余量 ≥ 源机用量 ×1.2

inode 余量

df -i /var

使用率 <70%

定时任务

crontab -l、ls /etc/cron.d/、systemctl list-timers --all

三处都已记录

PHP 扩展

php -m

两边 diff 为空

数据库引擎

SHOW TABLE STATUS

确认有无 MyISAM

2. 步骤一:环境对齐

先装同版本软件,再同步配置。nginx -V 看编译参数,php -m 看扩展,mysql --version 看小版本。配置目录 /etc/nginx、/etc/php 单独用 rsync 拉,不带 --delete。

3. 步骤二:预降 TTL
dig +noall +answer <domain> A
# 若返回 86400,先改为 300,等待一个旧周期(最长 24 小时)

TTL 是递归解析器的缓存时长,改记录不会让已缓存的旧值失效。这一步必须提前一个旧周期做,否则切换当晚无法快速生效,也无法快速回滚。

4. 步骤三:首轮增量同步
rsync -aHAX --numeric-ids --delete \
  -e "ssh -p 2222" \
  /var/www/ root@<new-ip>:/var/www/

参数:-a 归档模式(递归、权限、时间、属主、软链接),-H 硬链接,-A ACL,-X 扩展属性,--numeric-ids 按数字 UID/GID 映射。

5. 步骤四:停写与第二轮同步
systemctl stop nginx php8.1-fpm
rsync -aHAX --numeric-ids --delete /var/www/ root@<new-ip>:/var/www/

停写窗口内不要做其他操作,避免窗口被拉长。同步完成后立即进入数据库环节。

6. 步骤五:数据库导出与导入
# 源机
mysqldump --single-transaction --quick --routines --triggers \
  --default-character-set=utf8mb4 -u root -p <db> > /tmp/<db>.sql

# 目标机
mysql -u root -p <db> < /tmp/<db>.sql

--single-transaction 依赖 InnoDB 的 MVCC,对 MyISAM 表无效。混用引擎的库需改为 --lock-tables,此时窗口会显著变长。

7. 步骤六:直连验证
export SITE=<domain> NEW_IP=<new-ip> SCHEME=https
curl -sI --resolve "$SITE:443:$NEW_IP" "$SCHEME://$SITE/" | head -1

验证项

命令或动作

失败含义

首页

上述 curl,看状态码

服务未起或端口未放行

内页

curl -sI .../2024/05/post.html

伪静态规则缺失

图片

取一张 uploads 下的图

目录未同步或软链接失效

后台

访问 /wp-admin

PHP 扩展或写入权限

上传

传一张 2M 图

client_max_body_size 过小

定时任务

systemctl list-timers

timer 未迁移

8. 步骤七:切解析与观察

改 A 记录后,用两个公共 DNS 分别确认:

dig @8.8.8.8 +short <domain>
dig @223.5.5.5 +short <domain>

两边都返回新 IP 再停老机器。切换后 48 小时内两台机器的访问日志都要看,判断长尾流量是否收敛。

这段观察期我一般开着极目Linux桌面,把新旧两台的日志目录并排放着看,比来回切窗口省事;权限和属主该核还是得核。

如果不想为这件事在机器上装采集 agent,走 SSH 读状态是另一条路:不装采集 agent,直接读 /proc、systemctl 输出和日志文件,这类「无 agent 监控」的界面在本地渲染、只走现成的 SSH 通道,服务器侧不装 Web 服务、也不新增端口。

选型时建议固定一条标准:看它是否在服务器上新增对外端口。 新增的端口就是长期要维护的攻击面。

9. 步骤八:回滚预案

回滚只有一步:把 A 记录改回老 IP。前置条件有三个——TTL 已降至 300、老机器数据未被新写入污染、老机器服务可随时启动。三者缺一,回滚时间就从分钟级变成小时级。

10. 附:迁移预检脚本
#!/usr/bin/env bash
set -uo pipefail
D=<domain>; NEW=<new-ip>; SCHEME=https
echo "== dns";     dig +noall +answer "$D" A
echo "== disk";    df -h /var; df -i /var
echo "== nginx";   nginx -t 2>&1 | tail -2
echo "== php";     php -m | tr '\n' ' '
echo "== timers";  systemctl list-timers --all --no-pager | head -10
echo "== direct";  curl -sI --resolve "$D:443:$NEW" "$SCHEME://$D/" | head -1

最后一行的协议前缀由 SCHEME 控制,站点走 HTTP 时改这一处即可。

FAQ

Q1:迁移窗口选在什么时段比较合适?

业务低峰前一小时开始,而不是低峰正中间。原因是大部分问题出现在准备阶段(环境不一致、扩展缺失),留一小时缓冲比卡在低峰两小时更安全。有海外用户的站点还要看时区,北京时间凌晨对应欧洲傍晚,未必是低点。

Q2:-aHAX 里的 A 和 X 分别保什么?

-A 保 ACL(getfacl 能看到的那套细粒度权限),-X 保扩展属性(getfattr,SELinux 上下文、部分备份工具的标记都存在这里)。普通站点不用这两个也不会出事,但一旦源机配过 ACL 或 SELinux 上下文,不加就会在新机器上出现「文件在、就是读不了」。

Q3:mysqldump 导出时要不要加 --hex-blob?

表里有二进制字段(BLOB、VARBINARY、部分 JSON)时要加。不加的话,导出文件里的二进制会被写成转义字符串,跨版本或跨字符集导入时容易损坏。代价是文件体积变大、导入稍慢,但比事后发现图片字段全乱要划算。

Q4:迁移后新机器 inode 不够怎么处理?

df -i 确认后,两条路:把 uploads、缓存目录单独挂一块盘,或者迁移时清掉无引用的缩略图。也可以按数据库里的 _wp_attachment_metadata 反查实际引用的文件,删掉对不上的。别直接 rm -rf 缩略图目录,前台会一片裂图。

Q5:切换解析后怎么确认全网生效?

三个层次:权威 DNS 用 dig @<权威服务器> 看记录是否已改;公共 DNS 用 dig @8.8.8.8、@223.5.5.5 看缓存是否更新;真实流量看两台机器的访问日志比例。前两个是抽样,第三个才是结论。TTL 86400 的情况下,第二天同一时间才算彻底切完。

Q6:新机器报 permission denied 怎么定位?

按三层查:文件层 namei -l <path> 看每一级目录的权限位;进程层 ps -o user,group -p <pid> 看运行身份;安全模块层 aa-status(Ubuntu)或 getenforce(CentOS)看是否被拦。迁移场景里九成是第一层:父目录少了 x 位。

Q7:老机器降配保留而不是释放,有什么风险?

风险有三个:降配后如果有流量打进来,性能不足会放大故障;降配操作本身可能触发重启,把还没切完的长尾用户打断;保留期间老机器上的数据仍在变化,回滚时容易误判哪边是准的。降配只适合已经确认没有写入的静态站点。

Q8:整套步骤能写成脚本一次跑完吗?

同步和验证可以,切换不行。原因是切换点需要人判断——直连验证的六项里有一项不过,就不该继续往下走。脚本适合做成「预检 + 同步 + 验证」三段,每段输出结论,由人决定是否进入下一段。全自动切换在出问题时没有刹车。

CentOS 7 + Caddy 搭建高性能 WordPress 实战指南 WordPress 是最主流的开源内容管理系统,其性能瓶颈常源于 Web 服务器与 PHP-FPM 的交互效率及 HTTPS 配置复杂度。Caddy 作为原生支持 HTTP/2 和自动 TLS 的现代化 Web 服务器,通过简洁的 php_fastcgi 指令直连 PHP-FPM,显著降低协议层开销,天然适配 WordPress 的伪静态路由与动态请求混合场景。相比 Nginx 的嵌套 location 配置和手动证书管理,Caddy 的声明式配置与精准错误提示(如直接定位 'dial unix /var/ 阅读详情

相关推荐

Ubuntu 12.04下CiviCRM与WordPress/Drupal/Joomla集成实战

CiviCRM并非普通CMS插件,而是一套具备独立数据库、API路由与定时任务的完整CRM系统。其核心原理在于与宿主CMS(如WordPress、Drupal、Joomla)在用户会话、权限体系和事件钩子层面深度耦合——Drupal采用原生事件驱动同步,WordPress依赖隔离式钩子桥接,Joomla则需URL重写与会话机制适配。这种深度集成带来显著技术价值:保障捐赠记录、会员数据与活动签到等高敏感业务数据的一致性与法律效力。典型应用场景包括非营利组织的志愿者管理、公益基金会的捐赠人运营及社区项目的活动报

weixin_34037173的博客 308

Linux零基础入门:从虚拟机安装到核心命令实战完整指南

Linux作为现代计算的核心操作系统,其设计哲学基于“一切皆文件”和模块化原则,通过内核管理硬件资源并提供系统调用接口。理解其多用户、权限管理和进程调度等核心机制,是掌握服务器运维、云计算及容器化等技术栈的基石。对于开发者和运维工程师而言,熟练使用Linux命令行与Shell脚本,能极大提升环境部署、问题排查和自动化运维的效率。本文聚焦于Ubuntu发行版,通过虚拟机搭建实验环境,系统讲解从系统初始化、软件包管理到文件操作、权限控制及进程监控等实战命令,帮助初学者快速构建Linux知识体系并应用于后端开发、

cixu3288的博客 376

Ubuntu 22.04下Apache mod_rewrite深度实战指南

URL rewrite 是 Web 服务器实现请求路由、SEO 迁移与安全防护的基础能力,其核心原理在于 Apache 请求处理流水线中的早期干预机制。在 Ubuntu 22.04 环境中,mod_rewrite 的行为受 Apache 2.4.52 版本特性、AppArmor 安全策略、AllowOverride 配置及 .htaccess 解析机制等多重因素影响,稍有偏差即导致规则静默失效。掌握 RewriteCond 与 RewriteRule 的作用域、L/QSA 标志的真实语义、变量捕获($N 与

dichengyan0013的博客 430

Ubuntu 20.04 安装 Webmin:系统级配置管理的可靠选择

Webmin 是一款面向 Linux 系统管理员的开源 Web 管理界面,其核心价值在于直接映射底层配置文件语义,实现对 Apache、ufw、Let’s Encrypt 等服务的精细化、可审计、强一致管控。不同于宝塔等现代面板侧重应用部署,Webmin 以配置即代码(Configuration-as-Code)理念,将 man page 和官方文档逻辑内化为 UI 表单与实时验证,显著降低多服务协同运维门槛。它特别适用于需长期稳定运行、强调安全合规与操作留痕的 Ubuntu 20.04 生产环境,是 uf

weixin_30595035的博客 444

Ubuntu 20.04 手动部署 LAMP+WordPress 安全建站指南

LAMP(Linux-Apache-MySQL-PHP)是 WordPress 运行的底层技术栈,其配置精度直接决定站点安全性、稳定性和可维护性。Apache 的 MPM 模式选择、PHP 的 opcache 与安全参数调优、MySQL 8.0 的 utf8mb4 字符集与认证插件适配,共同构成 Web 服务的基础运行契约。在 Ubuntu 20.04 这一长期支持(LTS)版本中,PHP 7.4 与 MySQL 8.0.25 的官方集成提供了经企业验证的兼容性基线,规避了新版 PHP 8.x 与老旧 Wo

weixin_33691700的博客 384

AI辅助服务器迁移实战:低成本高效完成网站与数据库迁移

服务器迁移是运维工作中的常见需求,涉及文件传输、环境配置、数据同步等关键技术环节。传统迁移方式依赖人工操作和文档查阅,效率较低且容易出错。通过结合rsync高效传输工具与自动化脚本技术,配合SSH密钥安全认证机制,可以显著提升迁移效率和可靠性。在实际工程实践中,AI辅助工具能够自动生成优化后的Shell脚本和Nginx配置,帮助开发者快速完成从环境准备到服务验证的全流程。特别是在轻量应用服务器迁移场景中,这种智能化的方法既能保证WordPress等应用数据的完整性,又能将成本控制在极低范围(如案例中的17元

weixin_30673611的博客 343

Ubuntu 18.04 LAMP环境搭建实战:Apache+MySQL+PHP协同配置指南

LAMP(Linux、Apache、MySQL、PHP)是一套成熟稳定的Web基础技术栈,其核心价值在于组件间经过长期验证的协议兼容性与故障可追溯性。Apache作为HTTP服务器提供模块化、可审计的请求处理能力,MySQL则以ACID特性和成熟的APT包管理保障数据可靠性,而PHP作为服务端脚本语言,需通过正确扩展(如php7.2-mysql)与Apache模块(libapache2-mod-php7.2)协同工作。该组合广泛应用于遗留系统维护、安全靶场搭建、PHP框架(如ThinkPHP)部署及LPIC

culiao6493的博客 537

Ubuntu VPS上Apache迁移到Nginx的实战避坑指南

Web服务器是现代网站运行的基础组件,其选型直接影响性能、安全与可维护性。Apache作为传统进程模型代表,依赖模块化指令和运行时重写;Nginx则基于事件驱动架构,强调配置一次性加载与URI路由优先匹配。这种底层原理差异,导致简单‘配置翻译’必然失败——例如.htaccess机制在Nginx中完全不存在,location匹配规则也无对应等价物。在Ubuntu VPS环境中,还需应对systemd服务管理、AppArmor安全策略及PHP-FPM进程协同等特有约束。本文聚焦Apache到Nginx迁移这一高

weixin_33970449的博客 388

VestaCP+Ubuntu 14.04+Nginx建站实战指南

Web主机控制面板是简化Linux服务器网站部署的核心工具,其本质是通过图形化界面封装Nginx、PHP、DNS等底层服务的配置逻辑。VestaCP作为轻量级开源方案,以Bash驱动、纯文本配置和v-user权限模型著称,在资源受限环境(如512MB内存VPS)中展现出优异的稳定性与可维护性。相比cPanel的高开销或Webmin的权限风险,它在性能、安全与易用性之间取得关键平衡。Ubuntu 14.04虽已停止支持,但凭借ABI稳定、软件源纯净及Nginx 1.4.6配置兼容性强等特性,仍是验证控制面板健

aaa1231722的博客 338

Ubuntu 20.04 + Docker 部署 Discourse 论坛完整指南

Discourse 是一款基于 Ruby on Rails 构建的现代化开源论坛系统,其核心架构采用微服务设计,依赖 PostgreSQL、Redis、Nginx 等多个组件协同工作。为保障部署一致性与运维可靠性,官方强制推荐 Docker 容器化部署模式,彻底摒弃传统手动编译或包管理安装方式。该方案通过预构建镜像封装全部运行时依赖,显著降低 Ruby 版本冲突、SSL 证书申请失败、数据库配置错误等高频故障风险。在宿主系统选型上,Ubuntu 20.04 因其长期支持周期、Docker 生态成熟度及内核

weixin_30267785的博客 398

Ubuntu 18.04 Apache深度配置与运维实战指南

Apache是Linux Web服务的核心HTTP服务器,其本质是将网络请求映射为文件系统路径并返回HTTP响应的协议网关。在Ubuntu 18.04这一长期支持(LTS)系统中,Apache 2.4.29通过Debian定制化包管理、systemd服务生命周期控制及a2enmod/a2ensite符号链接机制实现稳定部署。其技术价值在于提供可扩展的模块化架构、细粒度权限隔离(www-data用户)、标准化日志体系(access.log/error.log)以及与AppArmor等安全框架的深度集成。典型应

weixin_30824479的博客 374

在云服务器上部署WordPress,选择哪种操作系统镜像最合适?

在云服务器上部署 WordPress,。其中,是目前社区支持最好、教程最多、新手最容易上手的选择。

2403_89345764的博客 16

Ubuntu 18.04 Apache虚拟主机配置原理与实战

虚拟主机是Web服务器实现多站点隔离运行的基础技术,其核心在于请求匹配(ServerName)、目录权限控制(www-data用户)、配置加载机制(sites-enabled符号链接)与运行时上下文协同。在Ubuntu 18.04中,Apache 2.4.29采用模块化配置架构,依赖a2ensite工具管理启用状态,并严格校验DocumentRoot路径权限和配置语法。该机制保障了开发环境多项目并行、测试域名本地解析、SSL证书自动集成等工程实践的稳定性与可维护性。本文聚焦Ubuntu系统级运行逻辑,详解从

anchang7456的博客 400

2026云服务器建站完全指南:从选购配置到网站上线,新手也能跟着做(含避坑手册)

本文提供了一套完整的云服务器建站指南,从服务器选购到网站上线全流程。主要内容包括:1. 建站前的准备:明确网站类型、必备材料和服务器选择建议;2. 服务器选购要点:配置选型对照表和常见新手误区;3. 三种环境搭建方案:应用镜像一键部署(10分钟)、宝塔面板可视化操作(30分钟)和手动搭建LNMP环境;4. 网站部署与维护:WordPress安装、域名备案、HTTPS配置和日常维护建议。文章特别强调新手容易忽略的安全组配置和备份策略,并提供常见问题速查表。适合零基础到进阶用户,帮助快速搭建个人博客、企业官网等

tajiidc_0330的博客 1190

Ubuntu 18.04 下安全修改 Apache DocumentRoot 实操指南

DocumentRoot 是 Apache Web 服务器的核心路径配置,决定静态资源与 PHP 脚本的根访问基准。其原理涉及进程权限模型(www-data 用户上下文)、模块行为基准(如 mod_rewrite 的 RewriteBase 依赖)、文件系统 POSIX 权限链(父目录执行权+文件读取权)及 systemd 启动时序约束。技术价值在于支撑多租户隔离、容器/NAS 存储扩展、漏洞靶场环境搭建等关键场景。典型应用包括 Laravel 项目迁移、WordPress 子目录部署、apache shi

adiking520110的博客 414

Ubuntu 20.04 LEMP部署避坑指南:AppArmor、caching_sha2_password与PHP7.4兼容性实战

LEMP(Linux+Nginx+MySQL+PHP)是Web服务的基础技术栈,其核心原理在于进程协同与协议桥接:Nginx作为反向代理处理HTTP请求,通过FastCGI协议将PHP脚本交由PHP-FPM执行,再经由MySQL客户端驱动完成数据存取。该架构的技术价值体现在高性能、低资源占用与灵活扩展性,广泛应用于WordPress、ThinkPHP等PHP生态站点及企业级内容管理系统。然而在Ubuntu 20.04 LTS这一特定发行版中,系统级约束显著抬高落地门槛——AppArmor默认拦截MySQL

weixin_30314793的博客 326

Ubuntu 18.04 Apache虚拟主机配置避坑指南

Apache虚拟主机是Web服务的基础架构能力,其核心原理在于基于ServerName的请求匹配与Directory权限控制。在Ubuntu等Debian系发行版中,Apache通过sites-available/sites-enabled符号链接机制实现模块化管理,但默认启用的000-default.conf会以最高字典序优先拦截未指定Host头的请求,导致自定义配置‘写而无效’;同时Apache 2.4+废弃Order/Allow语法,强制要求Require all granted权限声明。这一原理差异

culh2177的博客 670

Ubuntu 16.04 Apache虚拟主机配置实战指南

虚拟主机是Web服务器实现多站点托管的核心机制,其原理基于HTTP请求头中的Host字段进行应用层路由,无需额外IP即可在同一服务器上隔离运行多个域名服务。该技术具备零成本、高兼容、易运维等工程优势,广泛应用于开发环境模拟、团队协作子域划分、灰度发布及遗留系统维护等场景。在Ubuntu 16.04这一经典教学与内网部署平台中,结合Apache 2.4的Name-based虚拟主机、sites-available模块化配置、www-data权限模型及/etc/hosts本地DNS模拟等关键实践,可构建安全、可

weixin_34080951的博客 434
上一篇: Linux 可用内存判断:为什么该看 available 而不是 free(附五场景实测表)
下一篇: Linux 端口不通排查:从 ss 到云安全组的四层定位(附体检脚本)
DevNote_
博客等级 码龄1年 3粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值