2009年3月22日星期日

i3原创: 用Drupal 6 实现千万条记录和300多个子站方法(二)

用Drupal 6 实现千万级记录和300多个子站 http://www.86-00.com 城市分类黄页

是一个有超过千万条记录及300多个城市子站的网站。在(一)已讲到为实现300多个子站与将数据分散减软服务器负担。 本文将介绍用 apache 在 Drupal 实现用同一个数据库建立不同内容子站的方法。

其实这个并不复杂简单易实现,具体操作步骤:

1. 要实现子站,当然首先要在域名设置泛域名解释,每个域名控制平台都的设置可能不同。在域名管理平台中,将 *.你的域名.com( 如: *.86-00.com) 指向服务器的IP地址 。生效后,输入任意的子域名都会指向服务器地址。 当然已具体设定指向的子域名除外。

2. 在 apache 设定 httpd.conf 文件, 在 < VirtualHost *:80> < /VirtualHost> 中加入 ServerAlias *.你的域名.com 如:
< VirtualHost *:80>
ServerName 0769.86-00.com
ServerAlias *.86-00.com
DocumentRoot d:/86city/www

Options Indexes FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all

< /Virtuaost>

以上定义是将所有的子网站都指向这个地址。

3. 安装Drupal,在 www.drupal.org 下载新版 Drupal 6及中文语言包。默认安装上述目录。安装完成后,可以输入任意子域名打开网站。 我将每个城市信息内容都分开,每个城市一个数据表,再建2个数据表一个记录每个子站的网站信息,包括:网页头,关键字,区号等信息,另一个数据表记录会员添加信息日志,用于控制会员添加信息后操作。

( 86-00.com 我只自定义了2个模块,一个是 i3producer 用于管理各个城市的企业信息,另一个是 i3weblog 记录用户的企业操作信息。)

4. 修改 Drupal ,让每个子域名访问自己的内容。 一般情况最好不要修改Druapl 的文件,但由于想一开始加载程序时就可以知道。所以我直接修改了 /includes/bootstrap.inc 加入 :

$pub_web_http_host=explode('.',$_SERVER["HTTP_HOST"]);
$i3_ini_set['qh'] = $pub_web_http_host[0];

通过 $_SERVER["HTTP_HOST"] 取的子域名的名称,并保存在 $i3_ini_set 中备用。

5. 建立模块,显示每个子域名内容。我建了一个 i3_producer 模块,并在 hook_init 中,用 $i3_ini_set['qh'] 进行数据表查询,并将相应的数据显示,如 title, keywords等显示,这样就完成在一套 Drupal 显示不同的子域名内容了。


以上是我用Drupal实现86-00.com建城市子站的方法,当然这不是最好方法,每种方法都有好坏,适合自己就好了。 可能有好多不足之处,欢迎指出,谢谢!

<** 此文共享,欢迎转载 ** >

下篇:用Drupal 6 实现千万级记录和300多个子站方法(三)
用 boost 为 300多个子站实现静态页面。敬请留意。

-------------------------------------------
By i3server
www.i3.net.cn
www.86-00.com

没有评论: