使用 Drupal 6.11 安裝「共享使用者資料庫」的多網站(下)
續前... 使用 Drupal 6.11 安裝「共享使用者資料庫」的多網站(上)
■ 8. 多網站安裝
Drupal 可以同時架設多站,也就是同一套程式可以供給數個站使用,日後網站或模組更新,更新一次就可以全部數站都更新,非常方便。資料庫則可以獨立使用,也可以多站共享,這都是非常具有彈性的設計。
INSTALL.txt 檔案中有提到多站的架設方式 (MULTISITE CONFIGURATION)。
我也找了一些參考資料:
● Drupal localhost 多站開發設定, Drupal localhost multi-site config by joe
● Run multiple sites from the same code base (multi-site)
如果要共用使用者資料表格,或者要調整各站資料表格的獨立或分享,則可以參考底下這些及這些的連結。(@_@ 暈~~)
● Multi-site installation and set-up
● Multi-site with single codebase, different content databases, shared user database, shared sign-on
不過我看了半天,還是有些細節地方不太明白,但是大概也有些概念,所以自己也實作出來了,我把我的設定方式寫出來,供有需要的人參考看看。
*** *** ***
假設我要做的三個站是 my_web.org , site1.my_web.org , site2.my_web.org
a. my_web.org 的安裝法
原本 sites/default/settings.php 裡面有這一行
$db_prefix = '';
在安裝的第三步驟產生時,改成
$db_prefix = 'main_';
在安裝時,設定資料庫的部份,也會詢問 db_prefix,也是輸入 "main_"。如此在安裝後,就會看到 mydb 資料庫產生很多 main_ 開頭的資料表。
b. site1.my_web.org 的安裝法
建立 sites/site1.my_web.org 目錄
把原來的 sites/default/default.settings.php 複製成 sites/site1.my_web.org/settings.php
把 settings.php 裡面的這一行
$db_prefix = '';
改成
$db_prefix = 'site1_';
在安裝時,設定資料庫的 db_prefix,也是輸入 "site1_"。如此在安裝後,就會看到 mydb 資料庫產生很多 site1_ 開頭的資料表。
重點來了,在安裝完之後,把 sites/site1.my_web.org/settings.php 的唯讀屬性移除,把裡面的這一行
$db_prefix = 'site1_';
改成
$db_prefix = array(
'default' => 'site1_',
'users' => 'main_',
'sessions' => 'main_',
'role' => 'main_',
'authmap' => 'main_',
);
儲存後,再把 sites/site1.my_web.org/settings.php 設成唯讀,以保障安全。
這裡的意思就是,site1 的使用者原本是讀取 site1_users 這個資料表,因為我們修改之後,就變成讀取 main_users 資料表,也就是和第一個站共用使用者資料。
上面共用的資料表有 users, sessions, role, authmap,這是參考 settings.php 文件裡面的說明,不過 authmap 是做什麼用的我還不清楚,而是不是還有哪些資料表可共享我也還沒深入了解。
c. site2.my_web.org 的安裝法
其實和 site1.my_web.org 的安裝相同。
建立 sites/site2.my_web.org 目錄
建立 sites/site2.my_web.org/settings.php
settings.php 裡面修改成 $db_prefix = 'site2_';
進行安裝。
安裝後 settings.php 再修改成
$db_prefix = array(
'default' => 'site2_',
'users' => 'main_',
'sessions' => 'main_',
'role' => 'main_',
'authmap' => 'main_',
);
如此即可。
如果不想共用使用者資料,就保持 $db_prefix = 'site2_'; 即可。
如果各站有不同的版型與模組要安裝,例如 site1 有自己的模組,就放在 sites/site1.my_web.org/modules 目錄中,若 site2 有自己要用的版型,就放在 sites/site2.my_web.org/themes。
以上就是安裝多站與共用資料表的程序與心得。
*** *** ***
至於我比較不明白的地方,是那些介紹的文件中,都是用
'users' => 'shared_',
這個前置詞,我在想,這是固定的特殊名詞?或是我們要自己把資料表加上 "shared_" 這個前置詞?因為我好像沒看到第一個主站是如何安裝的,只看到第二個及之後的站用 "shared_"。
總之,只要資料表的名稱,和各站使用的前置詞能配合,不管怎麼改,雙方能同步應該就沒問題了。
以上若有說的不明白或錯誤的地方,還請大家多多指教。
本文的引用網址
- 瀏覽次數: 2684





















回應
感謝 JOE 的指導
感謝 JOE 的指導!那些英文真的讓我很頭痛呢。
JOE 前輩的網站:JOE Tsui's Drupal site 是學習 Drupal 很好的參考網站,可以學到很多東西喔。
有關 'users' =>
有關 'users' => 'shared_',:
原本中:
Note the all important trailing dot on the end of drupal_shared_tables - this is vital! You're pre-pending table name info to Drupal's default table name, so you need the dot or Drupal will try to select:
算是一個dirty hack
如果本身有prefix 的話, 他的方法不一定行得通
你介紹的這個方法應該才是最正宗
發表新回應