Tomcat 3.1 實作 Servlet 2.2 與 JSP 1.1 規範,是早期 Java Web 伺服器的標準參考實作。本文記錄在 RedHat Linux 環境下,從 JDK 安裝、Tomcat 部署、至 Apache 整合的完整流程。雖然版本古老,但安裝邏輯與現代 Tomcat 9/10 核心步驟相通,具參考價值。
| 元件 | 來源 | 檔案名稱 (範例) |
|---|---|---|
| JDK 1.2.2 | java.sun.com | jdk1_2_2-linux-i386.tar.gz |
| Tomcat 3.1 | jakarta.apache.org | jakarta-tomcat.tar.gz |
| mod_jserv.so | jakarta.apache.org/builds/.../linux/i386/ | mod_jserv.so (Apache 連接模組) |
# 解壓縮至 /usr/local
cp jdk1_2_2-linux-i386.tar.gz /usr/local
cd /usr/local
tar xvzf jdk1_2_2-linux-i386.tar.gz
# 建立符號連結方便版本切換
ln -s jdk1.2.2 jdk
ln -s jdk/jre jre
# 設定環境變數 (編輯 /etc/profile)
vi /etc/profile
# 加入以下內容:
JAVA_HOME=/usr/local/jdk
export JAVA_HOME
CLASSPATH=/usr/local/jdk/lib:/usr/local/jre/lib
export CLASSPATH
PATH=$PATH:/usr/local/jdk/bin:/usr/local/jre/bin
export PATH
# 立即生效
source /etc/profile
# 驗證
java -version
javac -version
cp jakarta-tomcat.tar.gz /usr/local
cd /usr/local
tar xvzf jakarta-tomcat.tar.gz
# 重新登入或 source /etc/profile 確保環境變數生效
# 啟動 Tomcat
cd /usr/local/jakarta-tomcat/bin
./startup.sh start
# 停止 Tomcat
# ./shutdown.sh stop
# 驗證:瀏覽器開啟 https://localhost:8080/
# 應看到 Tomcat 預設頁面與 JSP/Servlet 範例
tools.jar 在 $JAVA_HOME/lib 下netstat -an | grep 8080 檢查,修改 server.xml 連接埠Tomcat 本身可獨立運作,但生產環境通常前置 Apache 處理靜態資源、SSL、虛擬主機等。
# 1. 複製模組至 Apache 模組目錄
cp mod_jserv.so /your/apache/libexec/
# 2. 複製 Tomcat 產生的 Apache 設定檔
cp /usr/local/jakarta-tomcat/conf/tomcat.conf /your/apache/conf/path/
# 3. 編輯 Apache 主設定檔
vi /your/apache/conf/path/httpd.conf
# 加入:
Include /your/apache/conf/path/httpd/tomcat.conf
# 4. 重新啟動 Apache
/your/apache/bin/apachectl restart
# 5. 啟動 Tomcat (順序:先 Tomcat 再 Apache)
cd /usr/local/jakarta-tomcat/bin
./startup.sh start
lynx https://localhost/examples/
# 或瀏覽器開啟 https://localhost/examples/
# 應看到 JSP/Servlet 範例目錄,點擊可正常執行
若 Apache 與 Tomcat 在不同機器:
/usr/local/jakarta-tomcat/conf/tomcat.conf 中的 ApJServHost 指向 Tomcat 主機 IPtomcat.conf 設定 ApJServMount /examples /root 對應 Context| 檔案 | 用途 | 關鍵參數 |
|---|---|---|
| server.xml | Tomcat 核心設定 | Port、Context、Logger、Valve |
| web.xml | 全域 Web 應用設定 | Servlet 定義、MIME 對應、Welcome 檔案 |
| tomcat.conf | Apache 整合設定 | ApJServMount、ApJServHost、ApJServRoute |
| startup.sh | 啟動腳本 | CLASSPATH 組裝、JVM 參數傳遞 |
| 項目 | Tomcat 3.1 (歷史) | Tomcat 9/10 (現代) |
|---|---|---|
| 連接協定 | mod_jserv (AJPv12) | mod_proxy_ajp (AJPv13) 或 mod_proxy_http |
| JDK 版本 | JDK 1.2.x | JDK 8/11/17/21 (LTS) |
| 部署單位 | .war 或目錄 | .war、目錄、Spring Boot Fat Jar |
| 管理介面 | 無內建 | Manager App、Host Manager |
| SSL 終端 | Apache 專責 | Tomcat 可直接支援 (APR/native) |
| 設定檔格式 | XML | XML (相容) + 部分支援 YAML/JSON |
/etc/systemd/system/tomcat.service)-Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxMetaspaceSize=512mdocker run -d -p 8080:8080 tomcat:9-jdk11雖然 Tomcat 3.1 已成歷史,但理解其安裝架構有助於掌握 Servlet 容器運作核心:JVM 啟動 → 類別載入 → Web 應用部署 → 連接器監聽 → 請求分派 → Servlet 生命週期。現代開發建議直接使用 Spring Boot 內嵌 Tomcat/Jetty/Undertow,簡化部署運維。