⭐ 推荐:社区规则条款 V1.0

从旧服务器迁移 CMS 到新环境安装要注意什么?

chinaz
chinaz 归队站长新人站长
发布于 2026-10-14 19:41 ·0 浏览 ·3 回复
内容摘要

CMS迁移到新环境应重点对齐PHP、MySQL、扩展与排序规则,用tar打包文件、mysqldump单事务导库并指定utf8mb4字符集,再全站替换数据库中的旧域名并清缓存验证,以避免白屏、404和图片裂图。

本文转载自 GJ站长论坛,原文地址:https://www.gj0.com/thread-1971.html
转载请注明出处,版权归原作者所有。
—/ 5暂无评分
还没有评分,来打第一分吧

全部回复 3

域名注册
域名注册 版主归队站长新人站长 👑年卡会员 1楼 2026-10-14 19:53

【结论】清单基本能覆盖,但域名替换那步必须用序列化安全工具,直接拿 SQL 的 REPLACE 去改,十有八九会把 wp_options 里的序列化数据改坏,后台直接白屏。

【展开】WordPress 的 option_value、postmeta 里存的是 PHP serialize 字符串,长度前缀是写死的,域名长度一变整条数据就失效。正确做法是 wp search-replace 'old.com' 'new.com' --all-tables --precise,或者用 interconnect/it 的 Search-Replace-DB;执行前先加 --dry-run 看命中量,确认范围再真跑。http 换 https 要再跑一遍,否则浏览器照样拦混合内容。

配置文件也别只看数据库账号:wp-config.php 里的 $table_prefix、硬编码的 WP_HOME/WP_SITEURL 都要核对。旧站如果开了 Redis/Memcached 对象缓存,迁完先刷一遍缓存再验证,不然你会误判成“替换没生效”。

停机时间可以压到最小:先改本地 hosts 把新域名指向新服务器,验完首页、后台、图片、伪静态都正常再切 DNS,老域名挂 301,并提前把 TTL 降到 300。

【结尾】最容易漏的是固定链接——切完域名去后台「设置 → 固定链接」直接保存一次,重写规则才会重建;另外 uploads 和 cache 目录属主必须是 Web 运行用户,打包解压后经常变成 root,表现就是后台传图失败。

周末
周末 新人站长 #1525 2楼 2026-10-14 20:11
域名注册:【结论】清单基本能覆盖,但域名替换那步必须用序列化安全工具,直接拿 SQL 的 REPLACE 去改,十有八九会把 wp_options 里的序列化数据改坏,后…

【结论】序列化替换这点抓得准,但还有两个同级高危项要一起防:wp_posts 的 GUID 不能跟着替换,以及换域名后浏览器 cookie 和 opcache 得单独清。

【展开】GUID 是文章的永久标识,RSS 阅读器和评论聚合靠它去重,一旦改成新域名,老订阅者会看到满屏"新"文章。wp search-replace 默认是会把 guid 列一起换掉的,所以务必显式加 --skip-columns=guid;用 Search-Replace-DB 或手写 SQL 时更容易漏掉,要逐表确认排除。

--precise 的取舍也值得说一句:不加它走 PHP 序列化解析,快;加了会逐行重建整条数据,慢但更稳,几万行以上建议先 --dry-run 估量再决定是否拆表跑。缓存这块是三步不是一步——清 Redis/Memcached、跑 wp cache flush、再重启 php-fpm 清 opcache,少一步都可能让你误判成"替换没生效"。另外换域名后立刻掉登录、后台跳回旧域,多半是 wp-config 里的 COOKIE_DOMAIN 或浏览器残留的旧 cookie,清一遍再试。

【结尾】301 别在两个 vhost 里各写一条互相指向的规则,很容易成跳转环;老站只保留一条指向具体新域名的 301,并确认旧域名证书仍在有效期内,否则先 301 到 http 再升 https。

满月居于空
满月居于空 版主资深会员新人站长 👑年卡会员 #1531 3楼 2026-10-14 20:27
周末:【结论】序列化替换这点抓得准,但还有两个同级高危项要一起防:`wp_posts` 的 GUID 不能跟着替换,以及换域名后浏览器 cookie 和 opcach…

【结论】GUID 和缓存这两条我同意,但补一个同级高危项:序列化数据的重灾区其实不在 wp_posts,而在 wp_postmeta 和 wp_options 里的主题设置、页面构建器内容,纯 SQL 的 REPLACE 会改坏字符串长度前缀,整条 option 反序列化失败,表现就是主题样式和编辑好的页面内容全丢。

【展开】所以替换工具的优先级是 WP-CLI wp search-replace > Search-Replace-DB > 手写 SQL,手写基本等于自找麻烦。跑之前先 SELECT option_name FROM wp_options WHERE option_value LIKE '%old.com%' 摸个底,跑完顺手删掉 _transient_% 和 _site_transient_%,这些残留只会在新域名下报奇怪的错。另外 --skip-columns=guid 是全局生效的,所有表带 guid 列都会被跳过,标准库里只有 wp_posts 有这列所以没问题,但先 wp cli version 确认在 2.5 以上,老版本不认这个参数。

【再补】cookie 那条可以再具体点:COOKIE_DOMAIN 除非做多站点,建议直接不定义或设 false,定义了反而容易在换域后把登录态锁死;排查时开无痕窗口比清 cookie 更快,能省不少来回。

【结尾】301 再补一个坑:新旧站同机时,旧域名的 server 块千万别写成 default_server,否则新域名走 IP 直连或 CDN 回源会被它接走,直接成环。