業界無數好評、全省廠房拆除、裝潢拆除
舊屋翻修等工程服務,報價透明,效率快。
台北通馬桶系統家具櫥櫃設計製作專家,舉凡客廳
書房、臥室等皆可適用,歡迎洽詢

首頁  •  j2h 論壇 • 程式設計討論     • 

Zope 虛擬主機的實例教學

房東:小寶
發表時間:2007-02-08


Zope 預設都是執行在 port:8080 ,因此在瀏覽 Zope 網站時,都必須指定如 http://www.pwchi.info:8080/ 這樣的網址。

如果想在原有的 Apache Web Server 基礎上,能夠不需另外指定 port,就能讓使用者直接透過 http://www.pwchi.info/zope 瀏覽 Zope 網站,而不是用原本 http://www.pwchi.info:8080/ 這樣的怪異網址。那麼就需要使用 Zope 的 Virtual Host Monster 物件,搭配 Apache 的 Rewrite 和 Proxy 模組來完成。

在這個例子當中,概要的運作過程如下圖。



首先,使用者發出 HTTP 請求 http://www.pwchi.info/zope 給 Apache。
請求會經過 Apache 的 Rewrite 模組重新組合。
Rewrite 參照設定好的規則,將請求導向 http://www.pwchi.info:8080/ 。
接著 Zope 對請求做出回應。
對使用者而言,他並不會感受到轉送過程的存在,使用者的 Browser 網址列仍舊是 http://www.pwchi.info/zope 。
◎ 實作方法

Apache 提供三種方式達成這樣的功能:

mod_rewrite method
mod_proxy Method
Fast CGI / Persistent CGI Method
其中 FCGI/PCGI 的方式,會嚴重影響執行效能,因此已經很少使用且不建議。這裡將以前面提到的例子,介紹 mod_rewirte 與 mod_proxy 兩種使用方式。
由於接下來的示範均為 Apache 的設定語法,因此必須有修改 Apache 設定檔的權限,並且在設定完成之後,重新啟動 Apache 使設定生效。

開始之前,請先確定已經安裝了 Zope 與 Apache 2 ,並載入 mod_rewrite、mod_proxy 和 mod_proxy_http 模組。

◎ Zope VHM

要讓 Apache 導引到新的 URL ,我們當然要先知道新的 URL 到底是什麼。下列是新的 URL 模樣。一時之間可能無法理解,接下來本文將分段說明。


PLAIN TEXT
CODE:

http://localhost:8080/VirtualHostBase/http/www.pwchi.info:80/zope/VirtualHostRoot/_vh_zope
http://localhost:8080
這是 Zope 所在主機的位址,如果有防火牆控管,必須使用內部網路的主機位址,如 192.168.1.1。
/VirtualHostBase/http/www.pwchi.info:80/zope
VirtualHostBase 是 Zope 的一個物件。需要注意的地方是 www.pwchi.info:80/zope ,這是使用者到時候輸入的虛擬網址。不過必須特別標明 port。
/VirtualHostRoot/_vh_zope
當用 www.pwchi.info/zope 作為 zope 的連結位址時,zope 當中所有的連結,也都必須要調整成 www.pwchi.info/zope/ 開頭的連結位址。所以必須加上 _vh_zope 作為開頭路徑,這樣 zope 就會自動為所有的網頁連結的路徑開頭加上 /zope/。
◎ Apache mod_rewrite
mod_rewrite 是一個強大的 URL 重導向模組。因為他使用正規表示式作為比對規則的方法,因此幾乎提供無限的可能性,就看你怎麼活用正規表示式。

設定內容


PLAIN TEXT
CODE:

RewriteEngine On RewriteRule ^/zope(.*) http://localhost:8080/VirtualHostBase/http/www.pwchi.info:80/zope/VirtualHostRoot/_vh_zope$1 [L,P]
RewriteEngine 是用來啟動或關閉 Rewrite 功能,預設為 Off。
因此必須先用 RewriteEngine On 來開啟 Rewrite 功能。
RewriteRule 是實際進行 URL 重導向的語法。
語法:RewriteRule <比對規則> <要導向的網址> [旗標]。
比對規則中的 ^/zope(.*) 是一個正規表示式,代表只要請求的 URL 中有 /zope 就算符合。當符合規則時,就會被重新導向到新的網址。
$1 表示將 /zope 以後的字串,接在替換後的URL後面。
[L,P] 則是控制旗標
"L" 表示立即停止規則的運算,如果後面有其他的 RewriteRule 規則設定,就不會被干擾。
"P" 表示將替換後的 URL 提出代理請求。為了不讓使用者察覺不同,如果不加 P ,瀏覽器網址列會直接被指向新網址。
◎ Apache mod_proxy
Proxy 的設定相對於 Rewrite 簡單許多。如果沒有需要很複雜的判斷規則,建議使用 Proxy 方式即可。

特別注意,除了 mod_proxy 以外,也需要一同載入給 HTTP 協動用的 mod_proxy_http 模組。

設定內容


PLAIN TEXT
CODE:

ProxyPass /zope http://localhost:8080/VirtualHostBase/http/giant.twlinux.net:80/zope/VirtualHostRoot/_vh_zope
ProxyPass 用來將指定的位址,映射到指定位址。
語法:ProxyPass <相對URL> <目的URL>
◎ 結論
Zope 是一個功能強大的 Application Server ,如果再配合本次介紹的 rewrite 與 proxy 模組,就可以架構出實用的 Zope 的虛擬主機解決方案了。

關於作者:
嗨,我是 Po-Wen Chi (紀博文)。一個自由軟體鬥士,我沒有萬能伙計,只有一台 NB。我在網路上的 ID 是 「pwchi」。研究興趣是Linux 作業系統、OpenSource CMS、資訊安全與數位學習,目前主要參與 Plone CMS 網站專案的相關測試與維護工作。接下來在開放鑄造場電子報的技術專欄中,會陸續跟大家分享這幾個領域的研究心得或實作講解。




  • 贊助網站       

    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務
    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!



  •  共 0 人回應

    姓名:
    佈告內容:
    其他選項: