您在這裡

Drupal localhost 多站開發設定, Drupal localhost multi-site config

joetsuihk's 的頭像
joetsuihk 在 2009-01-12 (週一) 23:50 發表

作為一個 Drupal developer, 通常都有幾個開發同時進行
一般人可能會用htdocs/[folder] 名
例如 http://localhost/drupal6, http://localhost/drupal5
或者案子名 http://localhost/blog 等等
但萬一core 要更新, 或者cck, views 有更新
便要更數個站, 實在麻煩

大家都或者知道 Drupal 是可以設定 multi-site 的
即是, 同一套code 可以供給兩個站使用 ( 例如 example1.com 和 example2.com )
優點很簡單, 模組更新的時候, 只要更新一次便可以令兩個完全不相關的 Drupal 站更新模組
而兩站可以使用完全不同的模版, 完全不同的資料庫
只是共用 core 和某些常用的模組 (例如views, cck 之類)

你的 drupal-root 內的 sites 資料夾,
可以建立 all, example1.com, example2.com 等等的資料夾
all 內的 modules, themes 是供放多站共用的資料
而 example1.com 內也可以建立 modules, themes 資料夾, 放這個域名專用的模組

所以現在只要將某個domain 指到 localhost
便可以實現 http://blog.localhost/drupal6, http://shop.localhost/drupal6.........

到 C:\WINDOWS\system32\drivers\etc\hosts
127.0.0.1 blog.localhost
127.0.0.1 shop.localhost
...
..

再在 htdocs/drupal6/sites/blog.localhost/ 內建一個 settings.php 便可以了
便可以 http://blog.localhost/drupal6/install.php

相關資源
http://drupal.org/getting-started/6/install/multi-site

同步發表: http://www.joetsuihk.com/node/118
非商業, 引用出處, 相同方式發表

推一下, 我也是這樣用, 把測試站 (去 dyndns.com 隨便申請一些測試 domain), 然後統統放在一起, 這樣真的很方便, 想玩什麼新 module, theme, 就把他放到 sites/all/modules, 然後在測試環境 enable. 如果覺得不錯, 就在 production 環境也 enable 就好了.

另外就如同上面所說, 不論是 core, module, theme 的更新, 都只要做一次就好了. 唯一要做很多次的, 就是 database upgrade 了, 這就沒有辦法了.

想詢問各位~
照著教學一步步設置多站,但是還是無法設置多站使用,想詢問是不是操作上有錯誤 。
(1)先於C:\cfd2\htdocs\cfd\sites目錄下建一個名為test1.localhost的資料夾。
(2)然後將位於C:\cfd2\htdocs\cfd\sites\default目錄settings.php copy到上述的test.localhost的資料夾中。
(3)之後以記事本的方式開啟到 C:\WINDOWS\system32\drivers\etc\hosts並增加(1)的網址
127.0.0.1 med.localhost

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

joe:
我的出現如下訊息~
-----------------------------------------------------------------------------------------------------------------------------
欲連結之網址(URL)無法正確的傳回

--------------------------------------------------------------------------------

當嘗試傳回下面的網址(URL)時: http://med.localhost/

發生了下列的錯誤:

無法將您輸入的網站主機位置轉譯成正確的 IP 位置: med.localhost
領域名稱伺服器回應下列錯誤訊息:

Name Error: The domain name does not exist.
這表示:

The cache was not able to resolve the hostname presented in the URL.
Check if the address is correct.

網路快取伺服器沒有辦法正確轉譯您輸入的網站主機名稱,請檢查您輸入的網
址(URL)是正確的。

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

joe~

(1)新增了一個資料庫因為不想與另一個也是用drupal架的網站共用
(2)於site資料夾中新增一個med.localhost (因為目前還未有網域,只能先在本機測試)
如圖中~
(3)然後去copy未安裝設定過的setting 檔(如附件)
-------------------------------------------------------------------------------------------------

然後設定了虛擬主機 ( Virtual Host)的部份。
於C:\WINDOWS\system32\drivers\etc\hosts去新增了一個
127.0.0.1 localhost
127.0.0.1 med.localhost (新增加的)

--------------------------------------------------------------------------------------------------

也到 httpd-vhosts.conf 去設定
# NameVirtualHost *:80

DocumentRoot C:\cfd2\htdocs\cfd
ServerName localhost

DocumentRoot C:\cfd2\htdocs\cfd
ServerName med.localhost

--------------------------------------------------------------------------------------------

but還是不能將多站架起來~~>w<…

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

JOE:
剛我又key一次http://med.localhost哦~
結果有出現如下畫面~(如附檔2009-3-23_B.PNG)
這樣是代表成功嘛?
而且哦~我這樣是不是得再點一次安裝drupal. 就出現如下訊息~
路徑找不到~~

但很好奇的是,像我要再多架一個drupal起來不單單只是建一個med.localhost目錄。
然後也需將自已所需的themes和modules copy到這裡來。
外加一個新的settings.php
但之後要再做什麼動作呢
有試著打過http://med.localhost/cfd/install.php (但出現如附圖中的2009-3-23_c.PNG訊息)
>w<…
------------------------------------------------------------------------------------------------------------------
Not Found

The requested URL /drupal-6.4/install.php was not found on this server.
Apache/2.2.9 (Win32) mod_ssl/2.2.9 OpenSSL/0.9.8h PHP/5.2.6 Server at localhost Port 80

-------------------------------------------------------------------------------------------------------------------------

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

1. setting.php的部分,多站的drupal中共同的themes與modules都放在 ./sites/all 下就可以了,setting就必須一個站一個。
2. 子目錄的多站drupal比較有問題,想實驗的話可以試試
127.0.0.1 med1.localhost
127.0.0.1 med2.localhost
...
之類的,然後直接把apache的 root document 指到drupal的根目錄,不需要去動 virture host

我是MIS,略懂mail、http、dns、proxy server
習慣使用redhat系列linux
debian系列摸索中...

joe:
是哦~那我把apache 的vhosts 給它del掉~
我是使用TWAPM 包的 (其實有不想使用這…但現在已不知怎把它移出來>w<…)

附上我的目錄結構

有想說將med.localhost用install.php…但不知怎弄

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

joe:

測試了還是不行 >口<
我覺得好奇怪說~
我在ie打入以下網址啊就秀下面的訊息
欲連結之網址(URL)無法正確的傳回------------------------------------------------------------------------
嘗試傳回下面的網址(URL)時: http://xxx.localhost/drupal/install.php
但是在firefox中啊
就秀得出下面的畫面~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

>w<我終於測試成功了~~ya

分享作法

(1)於sites\增加一個子網站目錄名稱為(xxx)<--(自已所要命名的
sites\default中的default.settings.php複製到(xxx)目錄
中,之後更名為settings.php

---- (引用JOE網站的說明)------
(2)將某個domain 指到 localhost
便可以實現 http://blog.localhost/drupal6, http://shop.localhost/drupal6.........
到 C:\WINDOWS\system32\drivers\etc\hosts
C:\WINDOWS\system32\drivers\etc\hosts
---- (引用JOE網站的說明)------

(3)http://xxx/drupal(看您的主站資料庫名稱為何就打那個資料夾名)/install.php?profile=default

>w<

--------------------------------------------------------------------------------
but~我覺得有一點奇怪的是~我在ie測試運行環境ok
但是啊用firefox網頁看啊我看不到我建立的子網站~就都出現如下訊息…
---------------------------------------------------------------------------------

欲連結之網址(URL)無法正確的傳回

當嘗試傳回下面的網址(URL)時: http://xxx/drupal/node/add/page

發生了下列的錯誤:

無法將您輸入的網站主機位置轉譯成正確的 IP 位置: med

領域名稱伺服器回應下列錯誤訊息:

Name Error: The domain name does not exist.

這表示:

The cache was not able to resolve the hostname presented in the URL.
Check if the address is correct.

網路快取伺服器沒有辦法正確轉譯您輸入的網站主機名稱,請檢查您輸入的網 址(URL)是正確的。

Generated Mon, 30 Mar 2009 09:34:00 GMT by squid (squid/2.5.STABLE2)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

想詢問大家~
就是網站設多站設定於公司內部網站運作。
然後採用設定在以下路徑設定單機運作C:\WINDOWS\system32\drivers\etc\hosts
設了127.0.0.1 localhost
127.0.0.1 med-->多站運作的子網站目錄

但問題來了~有在Apache\conf\httpd.conf中設定了如下的方式將
ServerName 127.0.0.1改為如下方式
ServerName 10.3.11.XXX

目的是要讓公司內部的其它人能連到我這台的IP
然後我主站連得到但我建的另一個med卻ping不到

哀~~~

我的主站叫http://10.3.11.XXX\cfd
而次站是http://med/cfd-->就這個其它人會ping不到
不知要怎麼設定才能讓人以ip就能連到這個網站呢?

謝謝

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

joe:
我是使用apmxe.exe安裝包來架站的。
然後由於兩個網站都是在公司內部運作,無對外連。所以就只能靠電腦本機的ip。
然後就是在自已的本機做多站運行。
我的站有兩個一個叫cfd一個叫med,而med是位於cfd資料夾下的sites
而公司內部運作的網站為如下
http://localhost/cfd
http://med/cfd
然後有到apache中的conf\httpd.conf將127.0.0.1改為自已電腦的ip
目的是想讓公司內部的其它人能連到我電腦看到網站。
而假設我於apache中的conf\httpd.conf將127.0.0.1改為10.2.11.131了後 (自已電腦)
之後啊我的網站名就變
http://10.2.11.131/cfd -->公司內部的人ping的到這個網站
但是啊於cfd資料夾下的sites 所又架設一估新的med (我的另一個網站時)
公司內部的人ping不到這個網站
有試過http://10.2.11.131/med/cfd -->也ping不到~~ >w< 哎~~~~

謝謝

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

joe:
我有在localhost做到多站設定了。
  能在我電腦運作兩個drupal網站了。
  只是覺得好奇怪的是公司內部的人ping得到我cfd的站,但ping不到我med的站。
  兩個是共用IP的說。
  
  然後不太理解joe你所說的【你的網管要設定 dns 才可以將 10.2.11.131 變成 med】
  但是如果我將10.2.11.131 變成 med,但是我的另一個cfd的站要怎>w<如何是好~~唔
  
  謝謝>w<…

  而且還想說去設定http://drupal.org/node/288126這個網站中的
  httpd-vhosts.conf (但也沒>w<作用~唔)
  ------------------------------
  
  DocumentRoot C:\cfd2\htdocs\cfd
  ServerName med
  
  -------------------------------

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

突然想到一個開發多站的問題~

如果有很多子網站也共用一個資料庫的狀況下~
這樣在管理時,能以最高權限的方式看到全部網站的內容嘛~而不是透過一個個網站去登入呢(而子網站只會看到自已的內容)?
有一個主站能看到全部子網站的內容~和管理全部子網站的user權限

- 真正的愛心,是照顧好自己的這顆心。 (靜思語錄)-

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

網站多站設定問題
於drupal目錄底下建立一個子網站,但是想讓對外網站連到要如何設定呢?

mct-->主目錄
又於mct主目錄的site底下建立一個mat網站目錄~

而於主機是ping的到這個mat網站目錄
http://mat/mct~~ (這裡是將多站的子目錄放在mct下~所以被ping好像就變成這樣子。但如果有設定虛擬主機就可以變
http://mat/

但是要如何讀到它的ip名稱呢?因為不知要如何才能讓domain讀到
因為不知子網站mat網站目錄的ip就變成不知如何讓domain指向到它,讓它能讓外部網站連到而不止有在單機

像joe有提及到要外連的話~~已不是drupal設定的範圍的情況下~
那要怎麼跟網管描述呢?

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

唔明白你的問題..

但是要如何讀到它的ip名稱呢?因為不知要如何才能讓domain讀到
因為不知子網站mat網站目錄的ip就變成不知如何讓domain指向到它,讓它能讓外部網站連到而不止有在單機

連到外部網站與否是firewall 的事, apache的事
apache setting: http://docstore.mik.ua/orelly/linux/apache/ch05_06.htm

Joetsui's blog

我有於apache的conf\extra的httpd-vhosts.conf檔設定了如下~
但是只有單機那台電腦連得到~~而內部網站中也ping不到我的子目錄網站
不知要如何才能讓其它台連上,還有外部~
但以以下的方式還是不行~不知我是不是還少了什麼呢

< VirtualHost *:80 >
DocumentRoot "D:/www/htdocs/mct"
ServerName mat

AllowOverride None
Order Deny,Allow
Deny from all

Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all

< /VirtualHost >

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

又看了阿舍的教學
http://drupal.soa.tw/multi-site_setting_part2
有說到以下如果網址已有一個主網站的話又架不出多網站~~
不知這是什麼意思?
我有很多其它網站都有引用同一個網址~
1. xxx.no-ip.org/drupal/test
如果 xxx.no-ip.org 網址己經被用來架主網站,就應該是弄不出多網站的。

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

外層的網站目錄是PING得到
http://drupaltaiwan.org/files/MAT.PNG
但像是建立一個多站的子目錄是放在mct的site中
結果host是有設上
127.0.0.1 mat 在自已的單機上是連得到
但其它ip要來連這台連不上

像我的網址叫:http://xxx.com.tw/mct (對照上圖任一都連得到)
但放在mct中的mat就連不到~~因為如果要共用模組的話需將mat建置於mct中~~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

有點看不懂.....

http://xxx.com.tw/mct (主次能連上)
http://xxx.com.tw/mct/mat (主能,次不能)

是這個意思嗎 ??

http://xxx.com.tw/mct/mat
這種關係就像一個普通的目錄,沒可能連不上
連不上是指出現 http://xxx.com.tw/mct 的頁面 ??

http://xxx.com.tw/mct
http://xxx.com.tw/mct/mat
還有是,這種關係如何共享模組 ?? 一時想不通,特別在 Windows 下 ....

---
notaBlueScreen | 訂閱RSS | Plurk | twitter

kay.L
沒錯~
http://xxx.com.tw/mct/mat (主能,次不能) 就是次目錄不能~~

因為我要架好多個網站然後讓它能共享模組,這樣就不用每個站相同模組,造成空間的負擔以及未來update的負擔
而看了drupal官方網站的多站設定,如果要共用模組就必須於一個drupal網站的目錄下的site建置(子目錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

大魔王,我不知你的空間有多少,
但多網站只是管理上方便少許,不過另有問題:

如果網站結構不同,你各網站模組不同,會有機會產生相容性問題,
你更新一個模組,可能有的網站沒問題,有的出錯。
特別不能做大變動,你會十數個網站同時下線。

---
notaBlueScreen | 訂閱RSS | Plurk | twitter

kal.L
空間其實是有的…
只是像網站結構是固定的情況下,就評估使用共用模組。
我是打算共用模組,但資料庫是切開。(-->這樣的話會有問題嘛? >w<…我也是第一次這樣做)
那這樣子的話會遇到相容性的問題,以及updata一個模組時,造成其它網站出錯。

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

假設
A 網站
CCK, Views, ABC

B 網站
CCK, Views, XYZ

C 網站
CCK, Views, BBB

當你升級 Views 時,可能在 A 及 B 網站沒有問題,但 Views 跟 C 網站的 BBB 模組有相容性的問題
我的意思是這樣。遇上了才想,也可以的。不過要升級,一定是同時下線。

---
notaBlueScreen | 訂閱RSS | Plurk | twitter

kay.l原來如此~>w<~謝謝你~我會再來評估一下的!!
覺得要怎想一個網站的規劃和一些事後的維護真的都是要去多思考的地方。呼~
若三個站的使用者都一樣的話,但每個站有各自的寫角色~
那我其實也能使用這些站都去共享同一個站的某一個資料庫的使用者和角色等等的資料表~

然後想再問kay.l您一下~
我又多看了一些文件~
http://drupaltaiwan.org/forum/20091215/3900
(感覺就不用動到httpd-vhosts.conf和hosts的樣子~得去靠dns那去新增機組domain的樣子)

那像我提的疑問啊若有三個網站共用一個drupal站時。 (假設三個站)
site01
site02
site03

就是指我的dns那得去請網管請新三個domain去指向我的那三個網站~
而我的那三個網站的目錄應要更名為目錄名點網址名。這樣子提供給網管~
site01.lms.XXX.com.tw
site02.lms.xxx.com.tw
site03.lms.xxx.com.tw

>w<明天早上再來try try~

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

你可以:
example.com
example.com/siteA
example.com/folder/siteA
example.com/folder/folder/~~~~~~~~~~~/foler/siteA
siteA.example.com
sub.example.com/siteA
...
..
.

一個域名就能了。

你要模擬測試的話,我建議你不要使用 localhost,增加一個 example.local 去測試

Drupal 透過這個來分別的,你可以用來測試一下

function conf_path($require_settings = TRUE, $reset = FALSE) {
static $conf = '';

if ($conf && !$reset) {
return $conf;
}

$confdir = 'sites';
$uri = explode('/', $_SERVER['SCRIPT_NAME'] ? $_SERVER['SCRIPT_NAME'] : $_SERVER['SCRIPT_FILENAME']);
$server = explode('.', implode('.', array_reverse(explode(':', rtrim($_SERVER['HTTP_HOST'], '.')))));
for ($i = count($uri) - 1; $i > 0; $i--) {
for ($j = count($server); $j > 0; $j--) {
$dir = implode('.', array_slice($server, -$j)) . implode('.', array_slice($uri, 0, $i));
if (file_exists("$confdir/$dir/settings.php") || (!$require_settings && file_exists("$confdir/$dir"))) {
$conf = "$confdir/$dir";
return $conf;
}
}
}
$conf = "$confdir/default";
return $conf;
}

有些在 Windows 下不大可行或很麻煩才能實現
最簡單是用 sub.domain.com 這種形式

任何形式都好,
你要解決的問題也只有一個
就是將根目錄指向同一個地方
即是說,選用上面任何一種,你都要指向 "drupal-install-here"
dir/drupal-install-here

希望我沒說錯什麼

---
notaBlueScreen | 訂閱RSS | Plurk | twitter

Kay.L:
經過幾日的設定~
>w<…還是不行~
我的系統是在Windows 下沒錯
然後照著你下面的方式~去做~如果我的域名叫example.com好了。
那我的其中一個站叫siteA。那麼網址輸入
example.com/siteA 那這個連得到也能安裝…
但是如果我於siteA裡加了30個子站好了…分別叫folder1~~~30
那我的網址應是打上
example.com/folder1/siteA就能直接線上安裝一個站
或照著你教的方式~打其它組合
(folder1).example.com
(folder1)..example.com/siteA
但完全連不上網頁…

看了一些教學頁~apache 或什麼設定其實我都不用動到照道理要能連上的~好奇怪
我需要加這模組嘛?http://drupal.org/project/subdomain

--------------------------------
example.com
example.com/siteA
example.com/folder/siteA
example.com/folder/folder/~~~~~~~~~~~/foler/siteA
siteA.example.com
sub.example.com/siteA

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)

kay.L:
不好意思又來問你問題了~
就是租用了hinet虛擬主機,然後是Linux相關環境。那它的多站點的架設上會不會需請主機商的客服人員要去設定什麼呢?
不知有無其它人使用虛擬主機服務做多站的架設?
>w<謝謝~~~~

心中常存善解、包容、感思、知足、惜福 (靜思語錄)

人人把心中的愛發揮出來,就能凝聚善的福業,形成善的循環。 (靜思語錄)