首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

打造 JAMPOT 伺服器:Windows 上整合 JSP、PHP、MySQL 完整實戰手冊

     編輯:Java 相關知識

前言

「JAMPOT」取意 Java + Apache + MySQL + PHP + Oracle? 實為 Tomcat 的諧音梗。本文記錄在 Windows XP SP2 上,從零建構支援 JSP (Tomcat)、PHP、MySQL 三棲的 Web 伺服器完整過程,含版本相容性、整合架構、虛擬目錄、資料庫連線與安全加固實務。

一、軟體版本清單(經驗證相容組合)

元件版本安裝路徑關鍵說明
JDK1.4.2D:\Jampot\j2sdk1.4.2Tomcat 5.0.x 僅支援 JDK 1.4/1.5,不可用 JDK 1.6+
Apache HTTPD2.0.52D:\Jampot\Apache2靜態資源、PHP 模組、反向代理 JSP 至 Tomcat
MySQL4.1.7D:\Jampot\MySQL4_14.1+ 密碼加密機制變更,需注意相容設定
Tomcat5.0.30D:\Jampot\Tomcat5JSP/Servlet 容器,透過 mod_jk 與 Apache 整合
PHP5.0.2D:\Jampot\PHP5以 Apache 模組模式運行
phpMyAdmin2.6.0D:\Jampot\phpMyAdmin2_6MySQL Web 管理介面
JDBC Drivermysql-connector-java-3.1.7JDK ext / Tomcat common/libJSP 連線 MySQL 必備
連接器mod_jk_2.0.46.dllApache2/binApache-Tomcat AJP13 通訊橋樑

二、安裝與配置關鍵步驟

2.1 JDK 環境變數

JAVA_HOME = D:\Jampot\j2sdk1.4.2
PATH += %JAVA_HOME%\bin

驗證:javac TestJdk.java && java TestJdk 輸出 Hello 訊息。

2.2 Apache 核心配置 (httpd.conf)

  • DocumentRoot:D:/Jampot/www(統一 Web 根目錄)
  • AddDefaultCharset:GB2312(解決中文亂碼)
  • DirectoryIndex:index.html index.jsp index.php default.jsp default.php
  • ErrorDocument 404:/error/noFile.htm(隱藏伺服器版本資訊)
  • PHP 模組載入:
    LoadModule php5_module bin/php5apache2.dll
    AddType application/x-httpd-php .php .php3
    PHPIniDir "D:/Jampot/PHP5"
    

2.3 MySQL 關鍵設定

  • my.ini 設定 basedir/datadir 指向 D:\Jampot\MySQL4_1
  • 4.1+ 密碼相容性:建立使用者後必須執行 SET PASSWORD FOR 'user'@'localhost' = OLD_PASSWORD('pass'); 否則 PHP 連線失敗。

2.4 PHP 配置 (php.ini)

  • extension_dir = "D:/Jampot/PHP5/ext"
  • session.save_path = "D:/Jampot/PHP5/session_temp"
  • 啟用 extension=php_mysql.dll

2.5 Tomcat 獨立測試

  • 安裝至 D:\Jampot\Tomcat5
  • 環境變數 CATALINA_HOME、PATH 加入 bin
  • 瀏覽 https://localhost:8080 確認預設頁面
  • 測試 JSP:webapps/ROOT/jTest.jsp → https://localhost:8080/jTest.jsp

2.6 Apache-Tomcat 整合 (mod_jk / AJP13)

  1. 複製 mod_jk_2.0.46.dll 至 Apache2/bin
  2. httpd.conf 末尾加入:
    LoadModule jk_module bin/mod_jk_2.0.46.dll
    JkWorkersFile "D:/Jampot/Tomcat5/conf/workers.properties"
    JkMount /servlet/* ajp13
    JkMount /*.jsp ajp13
    
  3. 建立 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
    
  4. server.xml 確保 AJP 連接器啟用(port 8009)並新增 Context:
    <Context path="/test" docBase="D:\Jampot\www\test" reloadable="true" />
    
  5. 修改 Tomcat HTTP 埠為 8178(避免預設 8080 被掃描)

2.7 JSP 連線 MySQL 驗證

  • 將 mysql-connector-java-3.1.7-bin.jar 放入 JDK/jre/lib/ext 或 Tomcat/common/lib
  • 測試 JSP 使用 Class.forName("org.gjt.mm.mysql.Driver") 連線查詢

2.8 phpMyAdmin 部署

  • 解壓至 D:\Jampot\phpMyAdmin2_6
  • 修改 config.inc.php 設定 PmaAbsoluteUri、blowfish_secret、auth_type=cookie、MySQL 帳密
  • httpd.conf 加入 Alias 與 Directory 允許存取

三、架構關鍵概念釐清

3.1 靜態/動態分派

Apache 負責靜態資源(HTML/CSS/JS/圖片)與 PHP 解析;遇到 *.jsp、/servlet/* 透過 mod_jk 轉發至 Tomcat(AJP13 協定)。單一埠口 80 對外服務。

3.2 虛擬目錄 vs 虛擬主機

  • Context 虛擬目錄(本文採用):server.xml 定義 path="/test" docBase="D:/Jampot/www/test",物理檔案置於 Apache DocumentRoot 下,Tomcat 視為虛擬目錄。
  • VirtualHost 共用 DocumentRoot:Apache/Tomcat 指向同一目錄,需額外封鎖 WEB-INF、META-INF 存取。

四、安全加固清單

  1. 修改 Tomcat HTTP/Shutdown 埠(非預設值)
  2. 配置 web.xml 錯誤頁面(404、NullPointerException)避免洩露堆疊追蹤與版本
  3. Apache ErrorDocument 404 導向友善頁面
  4. MySQL 建立專用應用帳號、最小權限、OLD_PASSWORD 相容
  5. phpMyAdmin 強制 HTTPS、限制存取 IP、修改預設別名路徑
  6. 定期更新各元件至最新安全版本

五、版本相容性陷阱總結

  • Tomcat 5.5+ 需 JDK 1.5+:初期嘗試 Tomcat 5.5.7 失敗,改用 5.0.30 解決
  • MySQL Connector/J 版本對應:3.1.7 適用 MySQL 4.1+,舊版資料庫需確認相容
  • mod_jk 版本對應 Tomcat:2.0.46 穩定支援 Tomcat 5.0.x

六、總結

JAMPOT 架構以 Apache 為前端統一入口,PHP 模組內建、JSP 委派 Tomcat、MySQL 共享資料層,是經典的「輕量級異構整合」方案。關鍵成功因子在於:版本矩陣驗證、mod_jk/AJP13 整合正確、虛擬目錄統一檔案管理、安全配置縱深防禦。此架構雖屬歷史經驗,但其整合思維(反向代理、協定轉換、統一錯誤處理)在現代微服務網關、Sidecar 模式中依然具備參考價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved