您在這裡

i3原創:用Drupal 6實現千萬條記錄和300多個子站方法(二)

i3server's 的頭像
i3server 在 2009-03-22 (周日) 08:36 發表

用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
i3server.blogspot.com
www.86-00.com