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

Apache 整合 Tomcat 讓 JSP 動起來:mod_jk 完整配置指南

     編輯:Java 相關知識

前言:為什麼需要 Apache + Tomcat?

Apache HTTP Server 擅長處理靜態資源、SSL、負載平衡與安全防護;Tomcat (Servlet/JSP 容器) 擅長執行動態 Java 網頁邏輯。兩者結合可發揮各自優勢:Apache 處理靜態檔案與前端代理,Tomcat 專注業務邏輯運算。早期使用 mod_jserv 整合,但配置複雜、效能低、SSL 支援差。Jakarta 專案推出 mod_jk (AJP 1.3 協定) 解決這些問題,並支援多種 Web Server。

一、Unix/Linux 平台安裝配置 (以 Solaris 2.7 為例)

1. 環境需求

  • JDK 1.2 (安裝於 /usr/java1.2)
  • Perl 5.005 (/usr/local/bin)
  • gzip (/usr/local/bin)

2. 下載原始碼套件

  • Apache 1.3.19: apache_1.3.19.tar.gz
  • Tomcat 3.2.1 原始碼: jakarta-tomcat-3.2.1-src.tar.gz (需編譯 mod_jk)
  • Tomcat 3.2.1 二進制: jakarta-tomcat-3.2.1.tar.gz

3. 編譯安裝 Apache

# 解壓縮
gzip -dc ./apache_1.3.19.tar.gz | tar xf -

# 進入目錄配置
cd apache_1.3.19
./configure --prefix=/home/apache-1.3.19 --with-perl=/usr/local/bin/perl --enable-module=so

# 編譯安裝 (需 root 權限)
su
make install

4. 編譯安裝 mod_jk

# 解壓縮 Tomcat 原始碼
gzip -dc jakarta-tomcat-3.2.1-src.tar.gz | tar xf -

# 進入 mod_jk 原始碼目錄
cd jakarta-tomcat-3.2.1-src/src/native/apache1.3

# 使用 apxs 編譯 mod_jk.so
/home/apache-1.3.19/bin/apxs -o mod_jk.so -DSOLARIS -I../jk -I/usr/java1.2/include -I/usr/java1.2/include/solaris -lposix4 -c *.c ../jk/*.c

# 安裝模組
su
/home/apache-1.3.19/bin/apxs -i -a -n jk mod_jk.so

成功訊息範例:

cp mod_jk.so /home/apache-1.3.19/libexec/mod_jk.so
chmod 755 /home/apache-1.3.19/libexec/mod_jk.so
[activating module `jk' in /home/apache-1.3.19/conf/httpd.conf]

5. 安裝 Tomcat

su
gzip -dc jakarta-tomcat-3.2.1.tar.gz | (cd /home; tar xf -)

6. 參數配置

Apache httpd.conf

# 載入模組 (apxs -a 已自動加入,若無請手動加入)
LoadModule jk_module libexec/mod_jk.so

# Worker 定義檔與日誌
JkWorkersFile /home/jakarta-tomcat-3.2.1/conf/workers.properties
JkLogFile /home/apache-1.3.19/logs/mod_jk.log
JkLogLevel warn

# 將 *.jsp 與 /servlet/* 請求轉發給 Tomcat (worker 名稱 ajp13)
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13

Tomcat server.xml

<Connector className="org.apache.tomcat.service.PoolTcpConnector">
    <Parameter name="handler" value="org.apache.tomcat.service.connector.Ajp13ConnectionHandler"/>
    <Parameter name="port" value="8009"/>
</Connector>

<Context path="" docBase="/home/htdocs" debug="0">
</Context>

workers.properties

workers.tomcat_home=/home/jakarta-tomcat-3.2.1
workers.java_home=/usr/java1.2
ps=/

啟動/關閉腳本環境變數 (startup.sh / shutdown.sh)

# 在 BASEDIR=`dirname $0` 之前加入
PATH=/usr/java1.2/bin:$PATH:.
JAVA_HOME=/usr/java1.2
TOMCAT_HOME=/home/jakarta-tomcat-3.2.1
export PATH JAVA_HOME TOMCAT_HOME

7. 測試驗證

# 啟動 Apache
/home/apache-1.3.19/bin/apachectl start

# 啟動 Tomcat
/home/jakarta-tomcat-3.2.1/bin/startup.sh

# 建立測試 JSP
vi /home/apache-1.3.19/htdocs/test.jsp
<html><head><title>JSP Test</title></head>
<body><% out.print("This is a JSP test file!"); %></body></html>

瀏覽器訪問 https://主機名/test.jsp,若顯示測試文字即代表整合成功。

二、Windows NT/2000 平台安裝配置

1. 環境與下載

  • OS: Windows 2000
  • JDK 1.2.2 (安裝於 C:\jdk1.2.2)
  • WinZip 解壓工具
  • 下載預編譯套件:
    • Apache: apache_1.3.19-win32-no_src-r2.msi
    • mod_jk: mod_jk.zip
    • Tomcat: jakarta-tomcat-3.2.1.zip

2. 安裝步驟

  1. 執行 Apache MSI 安裝程式。
  2. 解壓 mod_jk.zip 到 Apache 的 modules 子目錄。
  3. 解壓 jakarta-tomcat-3.2.1.zip 到 C:\ 目錄。

3. 修改 httpd.conf

# DSO 支援區段
LoadModule jk_module modules/mod_jk.dll

# 檔案尾部加入
JkWorkersFile C:/jakarta-tomcat-3.2.1/conf/workers.properties
JkLogFile C:/jakarta-tomcat-3.2.1/logs/mod_jk.log
JkLogLevel warn
JkMount /*.jsp ajp13
JkMount /servlet/* ajp13

4. 配置 Tomcat

參考 Unix 部分配置 server.xml、workers.properties,注意路徑分隔符改用反斜線 \。

5. 修改 startup.bat / shutdown.bat (第 2 行插入)

set TOMCAT_HOME=C:\jakarta-tomcat-3.2.1
set JAVA_HOME=C:\jdk1.2.2
set PATH=C:\jdk1.2.2\bin;.;%PATH%

6. 測試

啟動 Apache (開始選單或 apachectl start) 與 Tomcat (startup.bat),瀏覽器訪問測試 JSP 驗證。

三、關鍵概念總結

概念說明
AJP 1.3Apache JServ Protocol 1.3,專為 Web Server 與 Servlet 容器高效通訊設計的二進制協定
mod_jkApache 模組,實作 AJP 1.3 客戶端,負責將動態請求轉發給 Tomcat
JkMountURL 對應規則,決定哪些請求交給哪個 Worker 處理
WorkerTomcat 實例的邏輯代表,定義於 workers.properties
Context docBaseTomcat 對應 Apache DocumentRoot 的實體路徑,確保 JSP 檔案可被兩邊存取

結語

Apache + Tomcat (mod_jk) 架構是早期 Java Web 部署的經典模式,雖然現代多改用 Nginx + Tomcat 或直接使用 Tomcat 獨立模式 (配合 Nginx 反向代理),但理解 AJP 協定、Worker 概念、靜動態分離原理,對於微服務閘道設計、傳統系統遷移仍具高度參考價值。

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