整合Apache中JSP和PHP
我們最希望任何事都是***的,如在企業應用中,我們只需要選擇一個Web平臺就可以部署所有的企業應用。但往往理想與現實相去甚遠。在現實世界中,信息系統往往是由很多不同的操作系統、平臺以及應用環境混合而成的。而且為了保持與舊的系統兼容,系統總是將當前的技術和以前的遺留技術進行混合,這樣周而復始。就使系統變得越來越復雜。
對于這樣的惡性變化會使很多人疲于奔命,尤其是開發人員,他們將面臨幾乎令人崩潰般的挑戰。尤其是要將兩個或更多的技術部署在同一個應用時更是如此。如本文要給出的例子中,就是將PHP和JSP程序同時部署在運行于Apache中的同一個應用程序中。在這個例子中,將提供一種方法來快速地部署這兩種Web程序。開發人員也可以借鑒這種方法來處理其他類似的難題。
也許有很多人會問,我應該如做也能將基于PHP和JSP的Web程序部署在同一個Web應用程序中呢?下面我就來回答這個問題。這個問題的基本答案就是先將apache配置成PHP Web服務器,并使用Apache處理所有的PHP/CGI請求,同時使用Tomcat處理所有的其他請求(包括JSP請求)。在開始之前,讓我們先看看需要哪些軟件:
完成本文的例子需要三個軟件:
1. Apache HTTP Server
2. Apache Tomcat
3. Apache Tomcat Connectors
一.解決方案所使用的技術
對于上述的問題,我們有幾個解決方案可以考慮。這些解決方案如下所示:
1. 使Apache服務器作為主要的或默認的請求處理器,只傳遞Servlet/JSP請求給Java容器。
2. 將Java容器作為主要或默認的請求處理器,只允許PHP/CGI請求由Apache處理。
3. 不使用Apache,并在Tomcat中運行PHP/CGI程序。
上述的前兩種解決方案類似。這兩種方法都是將大量的請求引入某一個服務器(Tomcat或Apache),然后使用別外的服務器處理個別的請求(PHP和JSP)。第三種方法雖然看起來比較簡單,很誘人。但Apache處理PHP時的效率是非常高的,并且提供了更安全的機制,因此,Tomcat并不合適處理PHP程序。
在本文中我們將采用第二種方案,就是將Tomcat作為主要的Web服務器來接收大部分請求,同時Apache作為后備服務器來處理PHP/CGI請求,它們的關系如圖1所示。如果讀者對***種方法情有獨衷,可以很容易地根據第二種方法來設置。
圖1 Tomcat作為主要的請求處理器,Apache作為輔助請求處理器
二.發布應用程序
一查我們對環境進行了正確的配置,我們就可以將應用程序打包并發布到Web服務器了。將應用程序發布到Apache上和發布到Tomcat上沒什么不同,都需要建立一個WEB-INF/web.xml文件,所不同的是如果請求的是PHP或CGI程序,將繞過Tomcat直接傳給Apache處理。
盡管改變Apache的根目錄(默認是'dtdocs')對于發布應用程序并不方便。但我們可以將Apache的根目錄指向Tomcat的發布目錄。這樣 PHP/CGI就可以和JSP打在同一個WAR/EAR包中。我們只要簡單地目錄中放置HTML.PHP和JSP頁即可完成發布。這對于開發,還是測試都是非常方便的。
另外,將PHP和JSP和CGI發布到同一個目錄中還可以使它們共享相同的支持文件(CSS、JS、images等)的內容。還有,這個模型提供了一個Web應用程序的完整結構,以及從Java Web目錄中調用PHP/CGI程序變得更簡單(相對而言)。
三.總結
無論你在工作中是否被要求集成遺留的Web應用程序到新的Web程序中,或是將某個開源系統加進定制的Web應用中,或簡單地將兩個不同的Web應用集成到一起,你都有可能將不同的技術集成到同一個Web應用中。總之一句話,將不同的技術轉換到同一種技術平臺上是***的解決方案
【編輯推薦】