很久之前,我曾写过一篇《在UBUNTU中安装wordpress博客系统》,也曾经翻译过国外技术网站的《将wordpress个人博客升级到wp3.0的多用户环境》、《在WordPress3.0上安装BuddyPress》。而今天,我将在它们的基础上进一步介绍在本地架设WordPress多站点网站的方法。由于WordPress的最佳运行环境是Linux+Apache+MySQL+PHP,因此,本文也将是基于这个运行环境来介绍的。
架设前的准备:
- 一个虚拟机环境(可选,但强烈推荐)
- 一份Linux发行版(推荐使用Ubuntu)
- 一个LAMP(Linux+Apache+MySQL+PHP)环境
- 一份最新的WordPress(写本文的时候最新版是3.1.3,同时3.2RC版也已发布)
- 一份BuddyPress
由于会想到在本地架设一个WordPress环境的基本都是些主题、插件作者,或是热爱技术,喜欢瞎折腾的WordPress博主,或是利用WordPress建立博客平台的人。他们把测试主题和插件的工作放在一个与实际工作环境相隔离的本地环境中来操作,有利于活跃状态下的博客的稳定。因此,无论你是刚刚接触WordPress不久,还是已有所接触,都建议能够架设这么一个本地测试环境。
前面我已说过,WordPress的最佳运行环境是LAMP(Linux+Apache+MySQL+PHP),而平时习惯使用Linux作为工作环境的人毕竟是少数,因此,安装一个虚拟机环境是很简单而且很有必要的,这里我所推荐的虚拟机是Arugula公司的VirtualBox,它是完全免费的,而且功能也很强大。关于它的使用这里就不再多做累赘,从没接触过的朋友可以去Google一下。
Linux发行版Ubuntu的下载地址是:http://www.ubuntu.com/,选择桌面版就可以了,除非你想体验一下服务器版的复杂。Ubuntu的安装并不麻烦,尤其是我们是在虚拟机环境中安装,根本不必多去考虑硬盘的分配问题,一路下一步就可以了。等Ubuntu安装完成后,就开始正式进入WordPress的架设旅程。
接下来需要安装的是LAMP环境中的AMP部分。Apache、MySQL、PHP在Ubuntu中的安装方式是多样的,我们可以选择下载XAMPP架构包,我们可以通过Ubuntu内置的新立德软件包管理器来安装,我们也可以通过终端命令来安装。使用哪种方式来安装这个环境全凭个人喜好。这里我所采用的是终端命令,在终端(应用程序—附件—终端)中依次输入以下命令:
- sudo apt-get install apache2
- sudo apt-get install libapache2-mod-php5 php5
- sudo apt-get install mysql-server-5.1 mysql-common mysql-admin
在安装MySQL-admin过程中会出现一个要求输入密码的界面,这里所输入的密码将是我们日后启动MySQL-admin进行操作时需要用到的,所以切记要牢记它。完成后继续输入命令:
- sudo apt-get install php5-mysql
- sudo mysql-admin
此时将弹出MySQL-admin的登录界面,host地址是localhost,帐号是root,密码则是之前我们所自定义的那个。进入管理界面后切换到Catalogs菜单,在左下角的Schemata新建一个数据库;然后再切换到User Administrator菜单页,新建一个新用户,再切换到Schema Privileges,赋予该用户对我们之前创建的数据库的所有权限。
至此,一个能够运行WordPress的网络环境搭建完成了,接下来的工作就是安装WordPress。
同样的,wordpress的下载方式也是多样的,你可以选择访问http://cn.wordpress.org/进行下载解压,也可以全部通过命令来完成。此处介绍的仍然是命令方式:
- wget -c http://cn.wordpress.org/wordpress-3.1.3-zn_CN.tar.gz //此链接中的数字会随着wordpress版本号的变化而变化
- tar xvzf wordpress-3.1.3-zn_CN.tar.gz //解压下载的文件
- sudo cp -rf wordpress /var/www/ //将wordpress文件夹移动到/var/www/目录下
- sudo chown -R www-data:www-data wordpress/ //更改wordpress文件夹的所有权
至此,第一阶段的工作已经完成,现在打开浏览器,在地址栏输入http://localhost/wordpress,如果提示没有wp-config.php则说明安装成功,我们只需要把程序和数据库联系起来就可以了。
修改程序中的wp-config-sample.php文件内容:
sudo gedit /var/www/wordpress/wp-config-sample.php //如果你的系统中安装的不是gvim而是gedit,则将命令中的gvim替换成gedit,同理,如果你想用其他编辑器进行编辑,就替换成相应的程序名。
define(‘DB_NAME’, ‘wordpress’); // The name of the database
define(‘DB_USER’, ‘username’); // Your MySQL username
define(‘DB_PASSWORD’, ‘password’); // …and password
修改成刚才建立的数据库名称,用户名和密码。
然后输入如下命令:
- sudo mv ‘/var/www/wordpress/wp-config-sample.php’ ‘/var/www/wordpress/wp-config.php‘
现在再打开http://localhost/wordpress/,就出现WordPress经典的博客新建界面了。至此,一个本地版的WordPress博客已经搭建完成,接下来开始进行多站点改造。
在终端中输入命令:
- sudo gedit /var/www/wordpress/wp-config.php ,然后在任意位置添加一句:
define(‘WP_ALLOW_MULTISITE’,true);
然后登录WordPress本地博客的后台,在工具菜单中会出现一个网络项,打开这个页面后我们会看到网络安装界面,由于我们是在本地进行安装,所以只能使用子目录模式,因此这里并没有什么需要设置的东西,直接点安装即可。
然后会出来一个启用网络的页面,根据要求将里面的代码添加到指定文件的指定区域。

这里需要说明的是,本地状态并不存在.htaccess这个文件,因此需要自己新建一个。使用sudo gedit命令新建一个文档,将有关代码粘贴进去后保存到/var/www/wordpress/目录下,文件名为.htaccess。完成后重新登录一下,多站点模式就完成了,此时我们将看到右侧用户名旁边出现一个网络设置的链接。
这里有个针对网络实际使用环境的设置,本地搭建可以忽略不计。
- 在wp-content文件夹中创建一个blog.dir文件夹,并设置为可写(权限数字为755)
当WordPress升级到多站点模式之后,并不意味着已经真的成为多站点网站了,我们还需要安装一个名为BuddyPress的插件。
登录WordPress,切换到网络管理页面,打开插件添加页面,搜索buddypress,安装它。此时你可能会看到这样一个界面:

这是因为我们现在还没有对/var/www/wordpress/wp-content/下文件夹操作的权限。
对于实际网络用户来说,遇到这个问题可以在wp-config.php中加入一段代码:
define(‘FTP_HOST’,'localhost’);
define(‘FTP_USER’,'USERNAME’);
define(‘FTP_PASS’,'PASSWORD’);
而对于本地搭建的用户来说,就更为直接了:
在终端中输入如下命令
- chmod -R 755 /var/www/wordpress
- chown -R www-data /var/www/wordpress //此处的www-data请和之前安装wordpress时使用的一致。
完成这步后回到插件安装页面,下载安装buddypress,并网络启用。
启用成功后,切换到主题设置页面,将列表中的buddypress默认主题网络启用,并回到站点管理启用这个插件。至此,一个像模像样的多站点网站就呈现在我们面前了,此时,也许有人已经迫不及待的开始其他操作了。但是,我们可能会看到一些让人崩溃的现实,有些页面打开后显示的是404/NOT FOUND.
这是因为我们在升级WordPress时创建的.htaccess文件没有起作用。
重新打开终端,输入如下命令:
- sudo a2enmod rewrite
- sudo gedit /etc/apache2/sites-available/default
然后看到如下代码:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
把其中第二个AllowOverride None的None改为All。
然后输入命令: sudo /etc/init.d/apache2 restart重启apache。
不出意外的话,现在一切都正常了。
不过,由于我们是在本地搭建的多站点网站,并没有邮箱服务,因此在新用户注册的问题上可能存在问题,我也没能找到什么好的解决办法。因为要测试多站点时的一些效果又不得不要多弄几个用户、博客出来,所以暂时通过关系向菊子曰的甲洲要到了一个他用美元从国外开发团队那买来的插件,所以……这个插件也不方便提供下载。