之前把博客搭在了虚拟主机上,后来为了安装Fever入了VPS(惨痛的故事详见此前文章),两笔费用终于压得我喘不过气来。在虚拟主机租期将满之际,果断决定把博客和Fever搬到一起,安置在VPS上。这下就要发挥我搬家的特长啦!

Wordpress搬家主要可以分为两种:一种是同网址搬迁,另一种是不同网址搬迁(我的情况属于后者),网上的教程铺天盖地,我们不妨按部就班。

  1. 备份Wordpress整站:这个步骤可以通过登录虚拟主机的控制面板实现。以cpanel面板为例,你可以在「文件管理器」里点击「压缩」按钮,并下载得到的压缩包。

  2. 备份数据库:目前流行的面板一般都整合了phpMyadmin、帝国备份王这样的工具,我们可以进入这些界面进行备份。另外,我们也可以使用WP-DBManager等Wordpress插件来备份。这里需要提醒一下的是,如果使用phpMyadmin的话,请务必确认自己进入了phpMyadmin的数据库界面,而不是面板自带的数据库备份工具,因为两者备份出来的文件迥然不同,后者不一定能使用。

  3. 配置新域名和空间:在这一步中,重要的是确保新的域名与空间能够正常访问。作为测试,你可以在空间的根目录下放一个index.phpindex.html文件。另外,为了确保此后不出现无法添加、升级或删除插件及主题的问题,你可以在这里事先做一件事情,就是将VPS中的相关文件夹权限设置为777。以Mac用户为例,你可以在终端中运行以下命令: ssh root@xxx.xxx.xx
    chmod 777 /www/web这两个命令行要分步运行,因为当中会让你输入VPS的登录密码。

  4. 上传Wordpress备份数据:这是搬家过程中最没有技术含量却又最耗时间的无聊步骤。你可以使用FTP或SFTP传输工具把之前备份的Wordpress文件传输到新的服务器上。首先,你要确保网络质量良好,我上传200多MB的文件竟用了三四个小时……你大爷的!其次,你要注意自己上传的目录是否正确,很多人会把备份文件解压后直接上传,这个过程中可能会生成一个冗余的根目录。如果你不打算把博客作为整个网站的二级站点,那么请注意把备份文件直接上传到新网站的根目录下。这个根目录的名字会根据你所使用的面板出现差异,就我所使用的开源面板WDCP而言,该目录名为「public_html」(有的面板是「www」「wwwroot」)。

  5. 上传数据库:与之前的步骤相比,这一步相对轻松,因为数据库备份文件通常体积较小。在数据库界面中找到与新博客关联的数据库(如果此前在建站时没有生成数据库的话就新建一个),然后通过「导入」功能予以上传,这一步相对简单,不再赘述。

  6. 关联数据库:这一步相当关键,请到新的数据库界面中运行以下SQL命令(phpMyadmin带有SQL在线编辑器): UPDATE wp_options SET option_value = REPLACE(option_value,’旧地址‘,’新地址’);

    UPDATE wp_posts SET post_content = replace(post_content,’旧地址‘,’新地址’);

    UPDATE wp_posts SET post_excerpt= replace(post_excerpt,’旧地址‘,’新地址’);

    UPDATE wp_posts SET guid= replace(guid, ‘旧地址’,’新地址’);这样做是为了让新数据库里的原有链接或图片引用新域名。此外,我还看到有人推荐一个名为velvet-blues-update-urls的插件,据说这个插件用起来比运行SQL命令更为直观,但我个人没试过,不好发表意见。

  7. 修改Wordpress配置:这一步也很重要,因为你的博客搬到新地址之后,原来的数据库可能会出现无法调用的情况,出现类似插件失效、无法访问文章或发表评论的症状,最极端的例子是连Wordpress的后台也进不去。要杜绝这种情况,必须对站点根目录下的wp-config.php文件进行重新配置。实现这一点的方法主要有两种:

    1.  **重建wp-config.php文件:**首先,你要删除新站点根目录下的旧`wp-config.php`文件,然后到[官网](http://cn.wordpress.org/wordpress-3.8.1-zh_CN.zip)下载Wordpress安装包,提取其中的`wp-config-sample.php`上传至新站点根目录。完成这一切后再次登录你的Wordpress站点,会出现相应的提示,要求你输入**「主机名」**、**「数据库名称」** 、**「数据库用户名」**和**「数据库密码」**。后三项内容很好理解,只需根据实际情况输入即可。这里有必要说明一下的是「主机名」,一般的主机名即为`localhost`或`127.0.0.1`,只有少数会要求输入确切的主机名。
    1. 直接修改wp-config.php文件:用任何一种编辑器打开该文件,更新其中的数据库信息,格式如下: /** WordPress 数据库的名称 / define(‘DB_NAME’, ‘你的新空间数据库名称’); /* MySQL 数据库用户名 / define(‘DB_USER’, ‘你的数据库用户名’); /* MySQL 数据库密码 / define(‘DB_PASSWORD’, ‘你的数据库登录密码’); /* MySQL 主机 */ define(‘DB_HOST’, ‘你的数据库地址’);

到这里,我们的搬家工作就基本完成了,但有些用户每次在对Wordpress进行更新时会看到提示,反复要求输入FTP信息。为了避免重复劳动,我们可以在wp-config.php文件中添加以下代码行: //added ftp login credentials to avoid the annoying prompt asking for login info every time I wanted to upgrade a plugin
define(‘FTP_HOST’, ‘你的FTP地址’);
define(‘FTP_USER’, ‘你的FTP用户名’);
define(‘FTP_PASS’, ‘你的FTP密码’);
//If you can use a SSL connection set this to true(仅针对要使用SSL连接的用户,否则可以删除该行)
define(‘FTP_SSL’, true);

另外,还有些人在使用新博客时会遇到无法更新主题或插件的问题。事实上,这是由于你未对/wp-content/themes/wp-content/plugins文件夹拥有足够的读写权限所致,换句话说,你无权删除这些文件夹里的旧文件,那么更新自然无法完成。

解决上述问题的一种方法正如前文所述,即在配置空间时对相应目录开放777权限。而对没有SSH权限的用户,还能通过另一种方法来解决该问题:即在wp-config.php文件中添加以下代码行:

define(“FS_METHOD”,“direct”);
define(“FS_CHMOD_DIR”, 0777);
define(“FS_CHMOD_FILE”, 0777);

至此,Wordpress搬家大功告成。坦率说,该过程还是比较简单的,不需要耗费过多的精力。回头一看,绝大部分的时间都花在了上传至FTP的过程中,由此可见找个靠谱的VPS有多么重要。