@Insanity5902: 从我开始使用WordPress的第一天起,将WordPress网站从一个盒子部署到另一个盒子就成了一个难题。(说实话,在我开始使用WordPress之前,这是Drupal两年来的一个PITA,所以问题肯定不完全是WordPress的。)
每次我需要移动一个站点时,我都要花费大量的重复工作,这让我很不安,因为这使我无法像我希望的那样频繁地部署测试。所以大约4-6个月前,我开始开发一个插件来解决webhost迁移问题I mentioned my ideas on the WP Tavern forum.
很快就到了今天,我基本上已经让它工作了,我很方便地称之为“WP Migrate Webhosts.“尽管这个插件仍然是beta版(可能甚至是alpha版),考虑到你的问题,我想我已经准备好让人们开始使用它了。
设想的用例是:
- 首先,开发人员通过FTP处理上传所有更改的主题和插件文件,
- 然后将整个开发MySQL数据库上传到测试服务器,最后
- 然后运行插件,将任何引用从先前的域迁移到新域。(我的插件没有试图解决新数据库字段或表与实时数据的合并问题;这是一个更大的问题,我不知道如何解决。)
您可以
download the plugin 从我的网站,解压缩到你的插件目录(如果你不知道怎么做,那么这个插件不适合你,因为它需要知道他们在做什么的人来使用。)我会一直保持这个插件在线,直到我把它发布到WordPress。org之后,你应该在那里寻找它。
要使用它,您需要在wp-config.php
通过注释掉四(4)个定义,这是正常的DB_NAME
, DB_USER
, DB_PASSWORD
和DB_HOST
而是注册网络主机的默认设置,然后注册每个网络主机本身的信息。下面是wp-config.php
可能看起来像(请注意,第一部分是注释掉的不需要的代码,还请注意,我在本地计算机上设置了不可路由的主机文件.dev
使日常开发更容易的顶级域。在Mac上VirtualHostX 让这成为一件轻而易举的事
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
//define(\'DB_NAME\', \'wp30\');
/** MySQL database username */
//define(\'DB_USER\', \'wp30_anon\');
/** MySQL database password */
//define(\'DB_PASSWORD\', \'12345\');
/** MySQL hostname */
//define(\'DB_HOST\', \'127.0.0.1:3306\');
require_once(ABSPATH . \'wp-content/plugins/wp-migrate-webhosts/wp-webhosts.php\');
register_webhost_defaults(array(
\'database\' => \'example_db\',
\'user\' => \'example_user\',
\'password\' => \'12345\',
\'host\' => \'localhost\',
\'sitepath\' => \'\', // \'\' if WordPress is installed in the root
));
register_webhost(\'dev\',array(
\'name\' => \'Example Local Development\',
\'host\' => \'127.0.0.1:3306\',
\'domain\' => \'example.dev\',
\'rootdir\' => \'/Users/mikeschinkel/Sites/example/trunk\',
));
register_webhost(\'test\',array(
\'name\' => \'Example Test Server\',
\'rootdir\' => \'/home/example/public_html/test\',
\'domain\' => \'test.example.com\',
));
register_webhost(\'stage\',array(
\'name\' => \'Example Staging Server\',
\'rootdir\' => \'/home/example/public_html/stage\',
\'domain\' => \'stage.example.com\',
));
register_webhost(\'live\',array(
\'name\' => \'Example Live Site\',
\'rootdir\' => \'/home/example/public_html/\',
\'password\' => \'%asd59kar12*fr\',
\'domain\' => \'www.example.com\',
));
require_once(ABSPATH . \'wp-content/plugins/wp-migrate-webhosts/set-webhost.php\');
希望这(大部分)是不言自明的。我试图使代码尽可能干净,但不幸的是,它需要这两个神秘的
require_once()
因为之前我没有办法“钩住”“WordPress”,所以在阻止webhost注册码之前和之后都有行
wp-config.php
被称为。
一旦您更新了wp-config.php
然后你可以简单地使用URL快捷方式wp-migrate-webhosts
如需转到管理屏幕:
http://example.com/wp-migrate-webhosts
以上内容将带您进入如下的管理屏幕,其中包含大量描述文本,允许您在选择要迁移的域后,只需单击一下,即可从任何其他webhost域迁移(
注意:此示例显示了从测试/阶段/实时服务器到本地开发的下降,但请放心,它可以迁移到它所在的任何域。这也意味着the plugin will be great for taking an existing live site and quickly getting a local development environment working!):
如果不清楚,此上下文中的“迁移”意味着更新当前数据库中的所有引用,以适合当前定义的Web主机(并且通过检查$_SERVER[\'SERVER_NAME\']
.) 该插件的酷之处在于它实现了一些基本的迁移,但是anyone can hook it and perform their own migrations. 例如,如果您添加了一个库插件,该插件在数据库中存储了图像的完整路径,那么您可以钩住migrate_webhosts
操作将以元数据数组的形式从
“Web主机”和传递到“Web主机”,您可以使用SQL或任何适用的WordPress API函数在数据库中执行任何需要执行的操作,以执行迁移。是的,我们中的任何人都可以在没有插件的情况下做到这一点,但如果没有插件,我发现编写所有需要的代码需要付出的努力远远超过了它的价值。有了这个插件,编写这些小钩子并完成它就更容易了。
您可能还会发现我的迁移在边缘情况下失败,我还没有测试,也许您可以帮助我改进插件?任何想要的人都可以通过我的gmail帐户给我发电子邮件(我的别名是“mikeschinkel”)
此外,该插件设计用于接受用户定义的webhost元数据,以及它可以识别的元数据database
, user
, password
, host
, domain
等等。一个完美的例子可能是googlemaps_apikey
您可以在何处为每个域存储不同的API密钥,您的Google地图插件需要正确操作(您中有谁使用过Google地图插件,但没有将应用程序部署到实时服务器,忘记将代码更改为正确的API密钥?来吧,老实说……)使用此插件googlemaps_apikey
register\\u webhost()数组中的元素和一个小自定义migrate_webhosts
你可以有效地消除这种顾虑!
就这样。我在WordPress Answer的Exchange上启动了这个插件,因为@Inasnity5902的问题触发了它。让我知道它是否有用,如果合适,请在这里或通过电子邮件。
P、 如果你真的决定使用它,请记住它是α/β,这意味着它会发生变化,所以如果你现在想使用它,就要为一些小手术做好准备,一旦它被许多人击败,就要使用发布的版本。
P、 附:我的目标是什么?我很想看到它迁移到WordPress核心,这样每个人都可以访问它。但在此之前,很多人都对使用它感兴趣,以确保它实际上解决了比它可能产生的更多问题。因此,如果你喜欢这个想法,那么请尽一切努力使用它,并帮助我获得动力,最终有希望纳入WordPress核心。