如何将现有的Wordpress wp-Content文件夹和数据库一起移动到新服务器和新域名?

时间:2013-02-11 作者:wgpubs

在LEMP堆栈上运行WP 3.5.1(在Linode上)。。。

我有一个wp网站的wp内容文件夹以及数据库的完整备份。该网站的URL类似于:

测验实例com公司

我想让站点在我自己的服务器上运行:

测验mydomain。com公司

一旦站点完成并且DNS更改生效,我希望站点URL为:

我的客户领域。com公司

像这样处理服务器移动和域更改的首选方法是什么(希望是最简单的方法)?我正在寻找一个逐步的答案,这个答案可以解释上述文件和数据库的所有情况。

7 个回复
最合适的回答,由SO网友:helgatheviking 整理而成

有一个很好的step by step on moving WordPress in the Codex. 这是我在更改域时遵循的原则。

移动文件非常简单。数据库中的硬编码引用很棘手。然而serialized search and replace 将处理所有数据库更改。我在过去使用过Velvet Blues插件,但搜索和替换脚本相当一流。

SO网友:cunningfox

我经常使用awesome插件复制器来完成这个精确的过程。

http://wordpress.org/extend/plugins/duplicator/

该插件完全受支持,这里有很多常见问题:

http://lifeinthegrid.com/labs/duplicator/

插件将创建一个。数据库和文件以及安装程序的zip备份。将放入新根目录的php。您只需输入新的数据库信息,其余的就可以了。

可能是迄今为止我最喜欢的WP插件。

如果你在路上需要帮助,请告诉我。

SO网友:fischi

您将有一些事情需要考虑(稍后再回答),我建议您采取以下步骤:

备份您的文件和数据库这是不言而喻的。您将要进行大量的数据操作,因此请确保您的原始数据是安全的。

传输文件最快的方法是有一个主机,您可以从另一台服务器导入目录。这可以通过提供FTP详细信息以及定义targetdirectory来实现。

由于服务器的Internet连接通常比用户的快得多,因此这是传输数据的首选方式。您还可以使用命令行手动执行这些命令。

较慢的选择是生成ZIP文件、下载、上载到新服务器并解压缩。如果你不可能做到这一点,那就走慢一点的路——加载所有内容并上传所有内容。在文件传输时喝咖啡:)

再次传输数据库,许多主机都可以选择将现有数据库导入新数据库,甚至可以从另一台服务器导入(当然,旧服务器必须接受外部数据连接)。

如果你能做到这一点,很好,但你也可以导出/导入你的数据库。

将新(子)域设置到新服务器上的新目录,确保文件的设置方式与旧服务器上的相同,并将子域指向旧服务器上的相同目录(通常是WordPress根目录)

编辑wp-config.php

保存新wp-config.php. 您只需编辑数据库连接详细信息。

加载新的URL WordPress现在应该已经设置好了,但它仍然使用旧的SiteURL和AdminURL,因此您将无法登录。在中更改这些值options-新数据库中的表。您要查找的两个值是siteurlhome. 将您的新域放在那里。

检查您的登录名和站点

到目前为止,一切都应该正常,您可以登录、编辑、编写以及使用该站点。唯一的问题可能是,您的帖子中仍然有图像和附件的旧URL。

如果您的帖子包含旧的URL,或者您不确定,请在posts-桌子

可以通过直接搜索数据库或使用以下脚本来完成此操作Serial Search and Replace. 如果找到旧URL,则必须手动或自动替换。我更喜欢自动完成,然后检查错误。

检查其他表,同时检查其他表是否包含旧URL。这可能有点棘手,但也必须这样做才能完全移动您的站点。

重新生成永久链接

为了确保,请再次保存永久链接设置以再次创建永久链接。

请检查您的网站,不要忘记在您转移网站后真正检查您的网站。检查所有函数,尤其是AJAX、Contactforms、Maps等,因为它们比普通的PHP/HTML更容易失败。

喝啤酒的时间到了:)

要注意的事情

与往常一样,手动创建、手动传输和自动编辑的任何内容都不能防止故障。这里有一些常见的陷阱,很容易进入,但也很容易避免。

插件编码错误(保存网站URL而不是相对路径,并使用WordPress函数检索完整URL。AjaxURL也可能存在很多问题。)Be absolutely sure that you use the same encoding on both your Servers and Databases!!! 通常,如果使用推荐的UTF-8,这应该可以)序列化数据(这是您可能遇到的最大问题。如果您使用像Tablepress这样的插件,其中整个表存储在一个序列化数组中,当您自动替换某个数据时,它将立即中断。如果您有这样的数据,请在此特定插件中查找导出/导入功能,并将此作为额外步骤。如果他们没有此功能,您必须手动完成)

  • 服务器设置(由于标准设置,您的站点很容易无法在新服务器上运行。请确保有足够的可用资源!)
  • 主题中的硬编码URL(虽然这种情况不应该发生,但它发生得太频繁,一旦旧站点不再可用,就会中断您的图像和链接)
  • 缓存问题(不要使用与旧服务器上相同的缓存文件。最好的方法是在导出站点之前停用缓存,并清空所有缓存)
  • 假设当您在服务器上第二次更改设置时,一切正常(始终再次检查一切)
  • 插件和主题中的选项(旧电子邮件地址等)
    • 应该就是这样。看起来有很多事情要做,但实际上大部分都是自动运行的。你只需想想所有可能出错的事情,然后检查是否出错:)

      玩得高兴

    SO网友:bigwolk

    不需要使用任何插件、脚本甚至sql知识库。简单的记事本就足以进行迁移。您必须将所有wordpress文件上载到新服务器,只需更改wp配置即可。php(在您的主wordpress文件夹中)3个值:define(\'DB\\u NAME\',\'your\\u new\\u DB\\u NAME\');定义(\'DB\\u USER\',\'your\\u DB\\u username\');定义(\'DB\\u PASSWORD\',\'your\\u DB\\u PASSWORD\');

    接下来,如果您在当前服务器上使用某些mysql客户端,如phpmyadmin,则必须将数据库导出到文件,然后打开\\u db\\u转储。sql,然后查找并替换所有事件测试。实例com与测试。mydomain。com之后,您必须将该db\\u转储导入到新数据库(您在wp config.php中定义了该数据库)。仅此而已。

    SO网友:Michael Dozark

    我所做的是:

    在接收主机上创建新数据库。导入SQL文件。在新数据库上运行以下SQL查询:

    UPDATE wp_options SET option_value = replace(option_value, \'test.example.com\', \'test.mydomain.com\') WHERE option_name = \'home\' OR option_name = \'siteurl\';
    
    UPDATE wp_postmeta SET meta_value = replace(meta_value, \'test.example.com\', \'test.mydomain.com\') WHERE meta_key = \'_menu_item_url\';
    
    UPDATE wp_posts SET guid = replace(guid, \'test.example.com\',\'test.mydomain.com\');
    
    UPDATE wp_posts SET post_content = replace(post_content, \'test.example.com\', \'test.mydomain.com\');
    
    将WordPress文件上载到接收服务器。

    上载wp content文件夹,覆盖默认的WordPress文件根据主题和插件,您可能需要在数据库或仪表板中进行其他更改。这些都需要你自己去发现,并随着你的发现而改变。

    公平的警告是,它并不完美,跨域移动WordPress可能会让人感到痛苦。我还看到的另一件事是将以下内容添加到您的wp配置文件中:

    define(\'WP_HOME\',\'http://\'. $_SERVER[\'SERVER_NAME\']);
    define(\'WP_SITEURL\',\'http://\'. $_SERVER[\'SERVER_NAME\']);
    
    这将有助于网站在当前所在的任何域上工作,但您仍需要处理内容、选项和菜单中的硬编码URL。我自己还没有测试过,不知道您是否需要从数据库中删除相应的选项才能使它们工作。

    Update: 我应该猜到会有插件来处理数据库部分http://wordpress.org/extend/plugins/wp-migrate-db/

    SO网友:Don

    之前的答案是这样的,但下面是一些其他输入的逐步步骤:

    不要安装WP,将整个原始WP目录Ftp到新目录(如果缺少任何内容,请参见下文)在服务器控制面板上使用phpmyadmin导入sql

    (searchreplacedb.php可免费访问:interconnectt.com/products/search-and-replace-for-wordpress-databases……它们也有说明)。

    如果您只有WP目录文件夹,那么您还有另一个问题。您必须获得完全相同版本的其余WP安装。如果您不知道WP是什么版本,请搜索数据库。在线下载旧版本很容易。如前所述,将其全部放在正确的位置,如果您希望它像以前一样弹出,则全部使用ftp来设置新文件夹。如果您丢失了任何内容,请不要在上载db和WP内容后访问该网站,否则它将默认为股票主题或关闭插件。我丢失了插件设置,不得不重新进行设置,所以请仔细想想,慢慢来。

    如果您已经有子文件夹或加载项,或者新站点需要一个子文件夹或加载项,请提前计划。在考虑到需要的新文件夹或缺少新文件夹之前,不要只替换url。在返回“url”等之前,您可能需要运行“文件夹/url”的searchreplacedb。否则,您可能会把“加载项”更改为“根目录显示和子目录安装”或其他诸如此类的废话!

    如果新的结构与旧的结构相匹配,并且您拥有整个WP目录,那么您可以比阅读这篇文章更轻松、更快地完成它!将程序放在WP上载到的同一目录中以获得最佳结果,正如指令所述,因为它具有自动配置功能。

    如果您没有ftp访问权限、控制面板访问权限或sql访问权限,那么您确实需要一个更好的服务器,而且可能运气不佳。


    尝试其他帖子中推荐的搜索和替换,如果幸运的话,可以使用更旧版本的WP,它符合需要的参数,可以正常工作;在你的网站上玩俄罗斯轮盘赌真的很痛苦。

    此外,永远不要编辑记事本中的数据,除非您知道没有比它可以接受的长度更长的字符串。现在有一个很好的错误,你可能要花数周的时间来寻找!如果你必须看它,只看,不要保存它。您应该忘记记事本的存在并使用记事本++,但在文本编辑器中手动编辑序列化数据与在phpmyadmin中进行查找和替换一样糟糕;不要这样做。

    您可以搜索“sql序列化数据”。简而言之,find和replace将在sql中生成序列化数据饼图。WP db已经序列化了数据……现在更是如此。

    我这样做了太多次,取得了微乎其微的成功,在我最终正确研究它之前,我曾多次把头撞在墙上。现在是在公园里散步。

    SO网友:Owen Cutajar

    我已经用这种方式将许多站点从一个服务器/域移动到了另一个服务器/域,您通常需要的只是一个备份和您的wp内容文件夹,您似乎已经拥有了它。以下是我遵循的方法:

    在新网站上安装Wordpress。您可以使用任何您喜欢的方法进行安装,有些主机提供一键式安装,否则只需按照您喜欢的方法进行安装

  • 用您拥有的副本覆盖wp内容文件夹。这可以确保所有插件、上载文件等都是基于旧服务器的
  • 用您拥有的副本覆盖数据库。我通常使用phpMyAdmin和导入工具来实现这一点。这里需要注意的一点是,如果备份中不包含DROP语句,则需要先删除数据库中的所有表完成!

    这应该是你所需要做的一切,让你的网站开始运行。一旦它开始运行,谨慎的做法是检查任何插件/主题特定的设置,这些设置可能会引用你的旧站点并重新生成你的永久链接。

  • 结束

    相关推荐

    如何在主多站点域上使用“WordPress MU域映射”将secure.domain.com映射到www.domain.com或domain.com?

    我们有一个多站点设置,主站点需要example.com, www.example.com 和secure.example.com 在wordpress中映射,以便在其上加载主站点的内容。secure.example.com 将通过HTTPS。我们面临的问题是secure.example.com 作品尝试访问时https://secure.example.com 有一个302 重定向到:http://www.example.com/wp-signup.php?new=secure.example.com