「JAMPOT」取意 Java + Apache + MySQL + PHP + Oracle? 實為 Tomcat 的諧音梗。本文記錄在 Windows XP SP2 上,從零建構支援 JSP (Tomcat)、PHP、MySQL 三棲的 Web 伺服器完整過程,含版本相容性、整合架構、虛擬目錄、資料庫連線與安全加固實務。
| 元件 | 版本 | 安裝路徑 | 關鍵說明 |
|---|---|---|---|
| JDK | 1.4.2 | D:\Jampot\j2sdk1.4.2 | Tomcat 5.0.x 僅支援 JDK 1.4/1.5,不可用 JDK 1.6+ |
| Apache HTTPD | 2.0.52 | D:\Jampot\Apache2 | 靜態資源、PHP 模組、反向代理 JSP 至 Tomcat |
| MySQL | 4.1.7 | D:\Jampot\MySQL4_1 | 4.1+ 密碼加密機制變更,需注意相容設定 |
| Tomcat | 5.0.30 | D:\Jampot\Tomcat5 | JSP/Servlet 容器,透過 mod_jk 與 Apache 整合 |
| PHP | 5.0.2 | D:\Jampot\PHP5 | 以 Apache 模組模式運行 |
| phpMyAdmin | 2.6.0 | D:\Jampot\phpMyAdmin2_6 | MySQL Web 管理介面 |
| JDBC Driver | mysql-connector-java-3.1.7 | JDK ext / Tomcat common/lib | JSP 連線 MySQL 必備 |
| 連接器 | mod_jk_2.0.46.dll | Apache2/bin | Apache-Tomcat AJP13 通訊橋樑 |
JAVA_HOME = D:\Jampot\j2sdk1.4.2 PATH += %JAVA_HOME%\bin
驗證:javac TestJdk.java && java TestJdk 輸出 Hello 訊息。
D:/Jampot/www(統一 Web 根目錄)GB2312(解決中文亂碼)index.html index.jsp index.php default.jsp default.php/error/noFile.htm(隱藏伺服器版本資訊)LoadModule php5_module bin/php5apache2.dll AddType application/x-httpd-php .php .php3 PHPIniDir "D:/Jampot/PHP5"
my.ini 設定 basedir/datadir 指向 D:\Jampot\MySQL4_1SET PASSWORD FOR 'user'@'localhost' = OLD_PASSWORD('pass'); 否則 PHP 連線失敗。extension_dir = "D:/Jampot/PHP5/ext"session.save_path = "D:/Jampot/PHP5/session_temp"extension=php_mysql.dllD:\Jampot\Tomcat5CATALINA_HOME、PATH 加入 binhttps://localhost:8080 確認預設頁面webapps/ROOT/jTest.jsp → https://localhost:8080/jTest.jspmod_jk_2.0.46.dll 至 Apache2/binhttpd.conf 末尾加入:
LoadModule jk_module bin/mod_jk_2.0.46.dll JkWorkersFile "D:/Jampot/Tomcat5/conf/workers.properties" JkMount /servlet/* ajp13 JkMount /*.jsp ajp13
workers.properties:
workers.tomcat_home=D:\Jampot\Tomcat5 workers.java_home=D:\Jampot\j2sdk1.4.2 worker.list=ajp13 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 worker.ajp13.lbfactor=1
server.xml 確保 AJP 連接器啟用(port 8009)並新增 Context:
<Context path="/test" docBase="D:\Jampot\www\test" reloadable="true" />
mysql-connector-java-3.1.7-bin.jar 放入 JDK/jre/lib/ext 或 Tomcat/common/libClass.forName("org.gjt.mm.mysql.Driver") 連線查詢D:\Jampot\phpMyAdmin2_6config.inc.php 設定 PmaAbsoluteUri、blowfish_secret、auth_type=cookie、MySQL 帳密httpd.conf 加入 Alias 與 Directory 允許存取Apache 負責靜態資源(HTML/CSS/JS/圖片)與 PHP 解析;遇到 *.jsp、/servlet/* 透過 mod_jk 轉發至 Tomcat(AJP13 協定)。單一埠口 80 對外服務。
server.xml 定義 path="/test" docBase="D:/Jampot/www/test",物理檔案置於 Apache DocumentRoot 下,Tomcat 視為虛擬目錄。WEB-INF、META-INF 存取。web.xml 錯誤頁面(404、NullPointerException)避免洩露堆疊追蹤與版本ErrorDocument 404 導向友善頁面JAMPOT 架構以 Apache 為前端統一入口,PHP 模組內建、JSP 委派 Tomcat、MySQL 共享資料層,是經典的「輕量級異構整合」方案。關鍵成功因子在於:版本矩陣驗證、mod_jk/AJP13 整合正確、虛擬目錄統一檔案管理、安全配置縱深防禦。此架構雖屬歷史經驗,但其整合思維(反向代理、協定轉換、統一錯誤處理)在現代微服務網關、Sidecar 模式中依然具備參考價值。