本文约 2,505 字,预计阅读 7 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:在本地改坏网站,比在线上改坏划算得多
直接在线上站点改主题、换插件、升级 PHP,出问题时只能祈祷备份还在。本地开发环境解决的正是这个痛点:所有破坏性操作先在副本上做,确认无误再推上线。
LocalWP 是目前体验最好的本地 WordPress 工具之一,Windows / macOS / Linux 全支持,图形界面,一条命令都没有也能用。它的价值不只是”能在本地跑”,而是能把本地站点一键推到线上主机。
原理分析:本地环境和线上环境差在哪
LocalWP 内部用的是 Nginx(可选 Apache)+ PHP + MySQL,站点目录在你自己的电脑上。它和线上环境的差异集中在三处:
- 域名:本地通常是
xxx.local,线上是真实域名; - 路径:本地
/Users/xxx/Local Sites/...,线上/home/wwwroot/...; - 数据库:本地一套,线上一套,同步时要做数据导出导入 + 域名替换。
所谓”同步”,本质上就是文件同步 + 数据库同步 + 域名批量替换这三件事,明白这点后,即使不用它的付费 Connect 功能,手动也能完成。
保姆级实操
第一步:创建本地站点
打开 Local → Create a new site:
- Environment:Preferred(推荐)或 Custom(自定义 PHP / Web 服务器版本,建议 Custom 并对齐线上版本);
- PHP Version:与线上保持一致,比如线上是 8.2 就选 8.2,避免本地能跑线上报错;
- Web Server:Nginx 或 Apache,同样对齐;
- WordPress 账号密码:随手设置,上线后线上账号独立。
第二步:确认目录位置
Local → 站点 → 右键 “Reveal in Finder/Explorer”,进入 app/public 就是 WordPress 根目录。日常开发可以直接在这里改代码。
Site → 路径可以在 Preferences → Advanced 里改到磁盘空间更大的位置。
第三步:本地调试
- 点 “Open Site” 打开前台,”Admin” 进后台;
- 开启
WP_DEBUG:在app/public/wp-config.php里设define('WP_DEBUG', true);; - 右键站点 → “Open Site Shell” 可以直接用 WP-CLI,非常方便。
第四步:方案 A —— 用官方 Connect 推送(付费功能)
支持直接连到 WP Engine、Flywheel 主机,或通过 MagicSync 推送到任意 WordPress 站点(需安装插件)。优点是自动处理数据库替换,缺点是付费且较慢。
第五步:方案 B —— 手动同步(通用且免费)
- 本地导出数据库:
cd app/public
wp db export ../local-db.sql
- 打包文件(排除缓存与 node_modules):
tar czf site.tar.gz --exclude='wp-content/cache' --exclude='node_modules' .
- 上传到服务器并解压:
scp site.tar.gz user@server:/home/wwwroot/mimangfei.com/
ssh user@server 'cd /home/wwwroot/mimangfei.com && tar xzf site.tar.gz && rm site.tar.gz'
- 服务器导入数据库并替换域名(推荐用 WP-CLI,序列化安全):
wp db import local-db.sql
wp search-replace 'http://mimangfei.local' 'https://mimangfei.com' --all-tables --precise
wp search-replace '/Users/alex/Local Sites/mimangfei/app/public' '/home/wwwroot/mimangfei.com' --all-tables --skip-columns=guid
wp rewrite flush
--precise 参数避免 JSON 数据被破坏,非常重要。
第六步:Live Link 临时演示
不想推送也想给客户看?右键站点 → “Enable Live Link”,Local 会生成一个临时公网地址,客户可以直接访问你本地站点。适合演示,不适合正式使用。
常见踩坑与失败案例
- Local 站点启动不了,提示端口被占用 —— 常见于本机已装了 Nginx / Apache / MySQL。Preferences → Advanced 里改端口,或关掉本机服务。
- 同步后前台样式全丢 —— 数据库替换没做彻底,尤其是主题选项里的序列化数据。用 WP-CLI 的
search-replace而不是 SQL 的REPLACE()。 - 案例:开发者用 SQL 直接替换域名,结果主题的序列化数组长度不对,Customizer 设置全部丢失。改用
wp search-replace后一次性解决。 - 本地能跑,线上 500 —— PHP 版本不一致。Custom 环境一定要对齐线上版本。
- Live Link 链接打不开 —— 需要稳定的外网连接,某些网络环境下隧道会被中断,改用手动推送更可靠。
- 同步覆盖了线上的新文章 —— 推送前一定要确认方向。建议先备份线上数据库,再导入。
总结
LocalWP 的最大价值是”零成本试错”。我的标准工作流是:线上每周自动备份 → 拉最新备份到本地 → 本地改完测试 → 非高峰时段推送文件与数据库 → 线上验证并观察错误日志。掌握 wp search-replace 这条命令后,脱离官方付费功能也一样能完成迁移,而且更可控。
