
在处理大型wordpress站点迁移时,传统的图形界面迁移插件可能因数据量过大而失效,此时手动迁移,尤其是通过ssh命令行操作,成为高效且可靠的替代方案。本教程将指导您如何将一个基于lemp(linux, nginx, mariadb, php)环境的wordpress主站迁移至一个子域名进行开发或测试,重点在于正确处理wordpress站点url和文件路径的更新,避免常见的错误。
迁移前准备
在开始数据库和文件操作之前,请确保已完成以下基础设置:
核心原理:为什么不直接修改文件?
许多初学者在迁移时会尝试通过sed等工具直接在WordPress文件(如主题模板、插件文件)中查找并替换旧域名。然而,这种做法是错误的且危险的。WordPress通过其内部函数动态生成URL,并将大部分站点配置(包括URL和文件路径)存储在数据库中。更重要的是,WordPress会存储序列化的数据(例如小工具设置、插件配置),这些数据包含长度信息。直接的文件替换会破坏这些序列化数据的完整性,导致站点功能异常甚至崩溃。
正确的做法是:主要修改数据库。
步骤一:更新 wp-config.php 文件
在新的子域名WordPress安装目录下,编辑wp-config.php文件,强制WordPress使用新的站点URL和主页URL。这可以在您登录到后台之前,确保WordPress知道其新的地址。
// 在 wp-config.php 文件中,通常在文件顶部或任何 define() 语句之后添加
define('WP_SITEURL', 'http://dev.yourwebsite.com'); // 将 'dev.yourwebsite.com' 替换为您的子域名
define('WP_HOME', 'http://dev.yourwebsite.com'); // 将 'dev.yourwebsite.com' 替换为您的子域名请确保将http://dev.yourwebsite.com替换为您的实际子域名URL。如果您的站点使用HTTPS,请使用https://。
步骤二:复制站点文件
通过SSH连接到您的服务器,将主站点的WordPress文件复制到子域名对应的目录。请注意,不要复制wp-config.php文件,因为子域名站点有其独立的数据库配置。
假设主站点目录为/var/www/html/mainsite,子域名目录为/var/www/html/dev.mainsite。
# 进入主站点WordPress安装目录的父目录 cd /var/www/html/mainsite/.. # 复制所有文件和文件夹,排除 wp-config.php # rsync 是一个更健壮的复制工具,可以处理大文件和保持权限 rsync -av --exclude 'wp-config.php' mainsite/ dev.mainsite/
完成文件复制后,请检查dev.mainsite目录下的文件权限是否正确,确保Web服务器用户(如www-data或nginx)拥有读写权限。
步骤三:使用 WP-CLI 更新数据库
这是迁移过程中最关键的一步,它确保数据库中所有旧的URL和文件路径都被正确替换为新的,并且能够正确处理序列化数据。WP-CLI是WordPress的命令行工具,提供了强大的search-replace功能。
3.1 安装 WP-CLI (如果尚未安装)
如果您的服务器上没有WP-CLI,可以通过以下命令快速安装:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp
安装完成后,您可以在WordPress安装目录下直接使用wp命令。
3.2 执行数据库查找和替换
进入子域名WordPress的根目录,然后执行wp search-replace命令。为了确保数据的完整性,尤其是对于序列化数据,请遵循以下原则:
假设您的旧域名是old.com,新域名是dev.yourwebsite.com。
# 进入子域名WordPress的根目录 cd /var/www/html/dev.mainsite # 第一步:替换完整的旧URL为新URL wp search-replace 'http://old.com' 'http://dev.yourwebsite.com' --all-tables --precise # 第二步:替换旧域名的裸字符串为新域名的裸字符串(如果旧域名在某些地方没有带协议) wp search-replace 'old.com' 'dev.yourwebsite.com' --all-tables --precise # (可选)如果您的WordPress站点内部还存储了绝对文件路径,也需要进行替换 # 例如:/var/www/html/mainsite 替换为 /var/www/html/dev.mainsite wp search-replace '/var/www/html/mainsite' '/var/www/html/dev.mainsite' --all-tables --precise
注意事项:
总结
通过遵循上述步骤,您可以使用WP-CLI安全高效地将大型WordPress站点手动迁移到子域名。这种方法避免了直接修改文件可能导致的序列化数据损坏问题,确保了迁移后的站点功能完整性。WP-CLI的search-replace命令是手动WordPress迁移的强大工具,对于处理复杂的URL和路径更新场景至关重要。完成迁移后,建议清除所有缓存(WordPress缓存、插件缓存、服务器缓存等),以确保新配置生效。
以上就是大型WordPress站点手动迁移至子域名:WP-CLI核心实践指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号