如何通过SSH手动将LEMP环境WordPress站点迁移到子域名做开发测试
WordPress 子域名手动SSH迁移操作指南
你的思路整体正确,但存在两处问题
- 你写的
sed命令语法有误,正则分隔符和特殊字符使用不当,且只替换PHP文件覆盖不全 - 遗漏了最重要的数据库内容替换,WordPress绝大多数域名、路径配置存在数据库中,仅修改文件无法完成迁移
后续操作步骤
1. 先修正文件内容替换命令
首先cd到你dev站点的根目录(即/var/www/html/dev.website),执行以下命令:
建议先把
sed的-i参数改为-i.bak,执行后会自动生成原文件的备份,验证无问题后再删除所有.bak文件即可,出错可随时回滚。
替换域名命令(适配所有常见后缀的文件)
find . -type f \( -name "*.php" -o -name "*.js" -o -name "*.css" -o -name "*.html" -o -name "*.json" \) -print0 | xargs -0 sed -i 's#://website\.com#://dev.website.com#g'
替换文件路径命令
find . -type f \( -name "*.php" -o -name "*.js" -o -name "*.css" -o -name "*.html" -o -name "*.json" \) -print0 | xargs -0 sed -i 's#/var/www/html/website#/var/www/html/dev.website#g'
确认无误后删除备份文件
find . -name "*.bak" -delete
2. 数据库内容替换(核心步骤)
不要直接用sed修改数据库备份文件,会破坏WordPress存储的序列化格式数据,导致插件、主题配置失效,推荐使用WordPress官方命令行工具wp-cli操作:
确认wp-cli可用
wp --info
如果正常输出版本信息即可直接使用,未预装的话可通过官方phar包快速安装。
执行数据库全局替换
# 替换域名,协议和原站保持一致即可,http/https不要写错 wp search-replace 'https://website.com' 'https://dev.website.com' --all-tables # 替换文件路径 wp search-replace '/var/www/html/website' '/var/www/html/dev.website' --all-tables # 清空站点缓存 wp cache flush
3. 验证wp-config.php配置
确认文件内的DB_NAME、DB_USER、DB_PASSWORD参数指向你克隆后的dev数据库,而非原主站数据库。
可在文件中/* That's all, stop editing! Happy publishing. */行之前添加以下两行配置,强制固定站点地址,避免异常跳转:
define( 'WP_HOME', 'https://dev.website.com' ); define( 'WP_SITEURL', 'https://dev.website.com' );
4. 修正目录权限
确保站点目录权限和Web服务器运行用户匹配,以Nginx默认的www-data用户为例:
chown -R www-data:www-data /var/www/html/dev.website find /var/www/html/dev.website -type d -exec chmod 755 {} \; find /var/www/html/dev.website -type f -exec chmod 644 {} \;
5. 功能验证
访问子域名后台登录,测试内页访问、附件加载、插件功能是否正常即可。
内容的提问来源于stack exchange,提问作者Konverts
相关产品推荐
相关产品推荐

