6月推出的 WordPress 3.0 包含了我期待已久的一个功能:和 MU 的整合。因为之前我家里的三个 blog 分别用了三套程序,每次升级程序和插件(尤其是自己 hack 过的)都是一个痛苦的过程。昨天动手将这三套程序整合到了一个全新安装的 WordPress 3.0 中,简单记录如下:
基本思路:全新安装 WordPress 3.0 –> 启用 Network –> 导入数据 –> 调整数据 –> 独立域名映射
安装 WordPress 3.0
和之前版本没有任何区别,改好 wp-config.php 设置好目录属性,直接按照向导安装即可。
启用 Network
MU 里面 Network 有两种形式:1是子域名,比如 a.gkp.com,b.gkp.com。2是目录,比如 gkp.com/a 和 gkp.com/b ,可以根据个人喜好选择。如果是用第一种形式的话,那么需要设置一条 DNS 的 A 记录,将 *.gkp.com (或者至少是你想要的用的子域名)指向你的服务器,同样 Apache 也需要做对应的 Server Alias 。如果你打算和我一样给子网站分别映射独我立域名的话,其实选择哪种都无所谓。
打开 wp-config.php,将下面这行添加在 /* That’s all, stop editing! Happy blogging. */ 之前
define('WP_ALLOW_MULTISITE', true);
之后就可以在后台的 Tools –> Network 看到网络设置了,在这里输入网络的名字和管理员 Email 等信息,点 Install 安装。
接下来需要一些操作,在 wp-content 目录下面建立一个 blogs.dir 目录,用来存放子 blog 上传文件等内容,权限要设置为可写。然后按照向导程序的提示分别将给出的文件内容添加到 wp-config.php 和 .htaccess 两个文件中。至此 WordPress MU 网络的设置就完成了,重新登录后台就可以看到最上方多出了 Super Admin 菜单。
参考官方文档
导入数据
建议直接在原 blog 使用 export 导出 xml,新 blog 这边用 wordpress importer 导入,支持作者映射和附件下载。
调整数据
主要是上传文件位置,比如 b.gkp.cc/wp-content/uploads/ 之前文章中引用的都是这样的地址,可以直接在导出后修改数据库,也可以直接用 .htaccess 将这些文件 rewrite 到 blogs.dir 下面对应的目录。
独立域名映射
这步我开始想的比较简单,以为直接修改数据库中的域名记录就可以了,但是事实证明不是那么容易的。Google 后找到了 ottopress 这篇文档,很有效,简单步骤如下:
主要是使用 WordPress MU Domain Mapping plugin 这个插件,但是注意这个插件必须手工安装才可以生效。 svn checkout trunk 下载 domain_mapping.php 和 sunrise.php 这两个文件,在 wp-content 下面建立一个 mu-plugins 的目录,将 domain_mapping.php 放进去。需要说明的是,mu-plugins 里面的 MU 不是 MultiUser,而是 MustUse 的意思,也就是说是强制启用的插件。sunrise.php 直接放到 wp-content 下面。
接下来修改 wp-config.php,在最后一行 require_once 前面加入一行
define( 'SUNRISE', 'on' );
貌似 sunrise.php 主要是替换了一些 wordpress 内置的函数。准备工作完毕,进入 Super Admin->Domain Mapping 里面输入服务器的 IP 地址(或者是一个 CNAME),设置下是否允许用户自行设置域名映射等选项,save 保存。
之后就可以在 Super Admin –> Domains 里面,或者各个子网站管理员后台的 Tools –>Domain Mapping 里面设置域名了,每个网站支持多个域名映射,需要设置一个 primary 域名,最终所有的域名都重定向到这里。试试看吧,效果很不错的。
最终结果,三个 blog 只需维护一套程序,主题和插件,并且分别使用独立的域名,完全看不出是一个 MU 网络。
Pingback: Tweets that mention Wordpress 3.0 MU 设置与独立域名映射 | gkp's post -- Topsy.com
请问三个博客可以使用不同主题吗?
可以,直接将主题装到network并启用,之后子网站就可以选择了
请问 采用lighttpd服务器的如何设置MU?
我在设置过后还是看不到superadmin
define(‘WP_ALLOW_MULTISITE’, true);
这行加了么?需要先在 Tools –> Network里面 install 一下的
我的也一样,在 Tools –> Network里面 install过了,代码也加了。
还是没有superadmin出来。
请问域名映射跟主机域名绑定限制有关系吗?我的空间是独立IP,cPanel只能绑定一个域名?
不用 cPanel 呢?