一、簡單介紹 Apache、Tomcat
Apache HTTP Server(簡稱 Apache),是 Apache 軟件基金協會的一個開放源碼的網頁服務器,可以在 Windows、Unix、Linux 等操作系統中運行是最流行的Web服務器軟件之一。Apache 反應速度快,運行效率高,但只支持HTML等靜態頁面(加載插件后也可支持 PHP 頁面)。
Apache Tomcat 是由 Apache 軟件基金協會與 Sun 公司聯合開發的一款Web服務器,它除了支持HTML等靜態頁面外,還支持JSP、Servlet 。
在相同的運行環境下,Tomcat 對靜態頁面的反應速度沒有 Apache 靈敏,整合 Apache 與 Tomcat 能使系統運行於一個良好環境下,提高系統效率。
二、軟件包下載
運行環境:Windows 7
Apache 2.2 下載:http://httpd.apache.org/download.cgi
Tomcat 7.0 下載:http://tomcat.apache.org/download-70.cgi
JDK 6 下載:http://www.oracle.com/technetwork/java/javase/downloads/index.html
mod_jk.mo 連接包下載:http://apache.etoak.com//tomcat/tomcat-connectors/jk/binaries/windows/
三、JDK 安裝
JDK (Java Development Kit) 是 Sun 針對Java開發員的產品,是現今使用最廣泛的Java SDK。JDK 是整個Java的核心,包括了Java運行環境和基礎類庫等。常用版本包括 JDK 6、JDK 7、JDK 8。
成功安裝 JDK 6 后,必須設置環境變量,讓系統感知並能調用 JDK 6。

打開 “控制面板 --> 系統安全 --> 系統 --> 高級系統設置 --> 環境變量”,增加以下配置 :
| 變量 | 值 | 說明 |
| java_home | C:\ jdk1.6.0_30 | 寫入JDK安裝的路徑 |
| Path | ;%java_home%\bin | 在Path原有值上加入此值 |
| classpath | ;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar | 在classpath的原有值上加入此值 |
四、Apache 2.2 安裝
運行 Apache 2.2 安裝包, 在安裝過程可以設置域名、服務器名稱和端口,Apache的默認端口為80。
httpd.conf 是Apache的主要配置文件,在Apache 安裝完成后,可嘗試打開 “/Apache 2.2/conf/httpd.conf ” 文件進行修改,下面是 Apache 的常用配置:
1 ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2" 2 # 定義配置文件、日志文件等的根目錄,通常為Apache2.2安裝的要目錄 3 4 <IfModule mpm_winnt.c> 5 ThreadsPerChild 250 6 MaxRequestsPerChild 0 7 </IfModule> 8 # <IfModule prefork.c> 9 # ....... 10 # </IfModule> 11 # <IfModule worker.c> 12 # ....... 13 # </IfModule> 14 # Apache 支持MPM多路處理模塊,MPM是一種多進程與多線程相混合的模式 15 # Apache 為 Unix、OS/2、BeOS 系統定義了 perwork、worker、beos 等多種模式 16 # 但在Windows下只支持winnt模式 17 # ThreadPerChild 定義常用線程數、MaxRequestsPerChild 定義最多線程數 18 19 Listen 8000 20 # 設置 Apache 的監聽路徑,一般默認為127.0.0.1:80端口,但由於80經常被IIS等進程所占用, 21 # 建設改用另一個端口,此處使用8000端口 22 23 LoadModule actions_module modules/mod_actions.so 24 LoadModule alias_module modules/mod_alias.so 25 LoadModule asis_module modules/mod_asis.so 26 LoadModule auth_basic_module modules/mod_auth_basic.so 27 # LoadModule auth_digest_module modules/mod_auth_digest.so 28 .......... 29 .......... 30 # 設置模塊處理 31 32 <IfModule !mpm_netware_module> 33 <IfModule !mpm_winnt_module> 34 User daemon 35 Group daemon 36 </IfModule> 37 </IfModule> 38 # 如果你想使httpd以另外的用戶或組來運行,你必須在開始時以root方式啟動 39 # 然后再將它切換為你想要使用的用戶或組。 40 41 ServerAdmin leslies2@163.com 42 # 定義管理員郵箱,當Apache出錯時將把錯誤信息發到此地址 43 ServerName 127.0.0.1 44 # 如果你的主機沒有注冊DNS名,在這里鍵入它的IP地址 45 46 DocumentRoot "E:/Apache Webs" 47 # 定義發布文件的根目錄 48 <Directory /> 49 Order deny,allow 50 Deny from all 51 </Directory> 52 # 為特定的目錄配置一組默認指令,禁止訪問根目錄的文件 53 54 <Directory “E:/Apache Webs/WebSite1”/> 55 Order deny,allow 56 </Directory> 57 # 允許客戶訪問WebSite1下的目錄 58 59 ErrorLog "logs/error.log" 60 # ErrorLog:錯誤日志文件定位。 61 LogLevel warn 62 # LogLevel:控制記錄在錯誤日志文件中的日志信息數量。 63 # 包括:debug,info,notice,warn,error,crit,alert,emerg。 64 65 <IfModule log_config_module> 66 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 67 LogFormat "%h %l %u %t \"%r\" %>s %b" common 68 <IfModule logio_module> 69 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 70 </IfModule> 71 CustomLog "logs/access.log" common 72 </IfModule> 73 # 日志訪問格式設置 74 75 <IfModule alias_module> 76 ScriptAlias /cgi-bin/ "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/" 77 </IfModule> 78 # 設定默認CGI腳本目錄及別名 79 80 <Directory "C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> 81 AllowOverride None 82 Options None 83 Order allow,deny 84 Allow from all 85 </Directory> 86 # 設定默認CGI腳本目錄的屬性 87 88 DefaultType text/plain 89 # 設定默認MIME內容類型 90 <IfModule mime_module> 91 TypesConfig conf/mime.types 92 AddType application/x-compress .Z 93 AddType application/x-gzip .gz .tgz 94 </IfModule> 95 # 指定MIME類型映射文件 96 97 <IfModule ssl_module> 98 SSLRandomSeed startup builtin 99 SSLRandomSeed connect builtin 100 </IfModule> 101 # SSL默認配置
完成配置后,啟動Apache 2.2,在 "E:\\Apache Webs\WebSite1" 添加靜態頁面 index.html。
最后打開 http://localhost:8000/index.html,測試 Apache 2.2 能否正常運行。
五、Tomcat 7 安裝
運行 Tomcat 7 安裝包,完成安裝后,打開 “控制面板 --> 系統安全 --> 系統 --> 高級系統設置 --> 環境變量”,增加以下配置 :
| 變量 | 值 |
| tomcat_home | C:\Program Files\Apache Software Foundation\Tomcat 7.0 |
| Path | ;%tomcat_home%\lib;%tomcat_home%\lib\servlet-api.jar;%tomcat_home%\lib\jsp-api.jar |
在 Tomcat 的目錄下,conf 文件夾中包含 Tomcat 的核心配置,logs 文件夾包含 Tomcat 的日志記錄 , webapps 文件夾是 Tomcat 的默認網站存放目錄。

在conf 文件夾的 server.xml 是 Tomcat 最為重要的配置,下面是 server.xml 的常用設置:
1 <?xml version='1.0' encoding='utf-8'?> 2 <!-- Server 屬性說明 3 port:指定一個端口,這個端口負責監聽關閉Tomcat的請求 4 shutdown:向以上端口發送的關閉服務器的命令字符串 5 --> 6 <Server port="8006" shutdown="SHUTDOWN"> 7 <!--定義多個監聽--> 8 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 9 <Listener className="org.apache.catalina.core.JasperListener" /> 10 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 11 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 12 <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 13 <!--定義共用資源--> 14 <GlobalNamingResources> 15 <Resource name="UserDatabase" auth="Container" 16 type="org.apache.catalina.UserDatabase" 17 description="User database that can be updated and saved" 18 factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 19 pathname="conf/tomcat-users.xml" /> 20 </GlobalNamingResources> 21 <!--<Service>元素由org.apache.catalina.Service接口定義,它包含一個<Engine>元素, 22 以及一個或多個<Connector>,這些Connector元素共享用同一個Engine元素--> 23 <Service name="Catalina"> 24 <!--<Connector>元素代表與客戶程序交換信息,它可以接收客戶的請求,並向客戶返回響應結果--> 25 <!--定義HTTP協議的處理方式,處理接口默認為8080 26 由於此接口經常被其他應用程序調用,建議修改接口--> 27 <Connector port="8081" protocol="HTTP/1.1" 28 connectionTimeout="20000" 29 redirectPort="8443" /> 30 <!--定義AJP/1.3協議的處理方式,此為整合 Tomcat+Apache 的核心協議,請慎重處理 --> 31 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 32 <!--每個<Service>元素只能包括一個<Engine>元素. 33 <Engine>元素處理在同一個<Service>中所有<Connector>元素接收到的客戶請求--> 34 <Engine name="Catalina" defaultHost="localhost"> 35 <!-- Realm是一個存儲用戶名,密碼以及和用戶名相聯系的角色的”數據庫” 36 用戶名,密碼可以用來驗證用戶對一個或多個web應用程序的有效性。--> 37 <Realm className="org.apache.catalina.realm.LockOutRealm"> 38 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 39 resourceName="UserDatabase"/> 40 </Realm> 41 <!--<Host>元素定義了一個虛擬主機,它可以包含一個或多個Web應用--> 42 <Host name="localhost" appBase="webapps" 43 unpackWARs="true" autoDeploy="true"> 44 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 45 prefix="localhost_access_log." suffix=".txt" 46 pattern="%h %l %u %t "%r" %s %b" /> 47 </Host> 48 </Engine> 49 </Service> 50 </Server>
Tomcat 默認使用8080端口處理HTTP請求(因為此端口經常被其他應用程序調用,建議修改)。
完成設置后,輸入地址localhost:8080 就可看到 Tomcat 的管理頁面。

可以在 webapps 目錄下新建 index.jsp 頁面,啟動 Tomcat ,測試 Tomcat 能否正常運行。
六、整合 Apache+Tomcat
在 Apache、Tomcat 都能正常運行的情況下,把 mod_jk.mo 拷貝到 "/Apache2.2/modules"
在 “/Tomcat 7.0/conf ” 文件夾下增加 workers.properties 文件,輸入以下內容。
1 workers.tomcat_home=C:\Program Files\Apache Software Foundation\Tomcat 7.0 2 #讓 mod_jk 模塊感知 Tomcat 3 workers.java_home=C:\Program Files\Java\jdk1.6.0_30\jre 4 #讓 mod_jk 模塊感知 jre 5 ps=\ 6 #指定文件路徑分割符 7 worker.list=config1 8 worker.config1.port=8009 9 #工作端口,此端口應該與server.xml中Connector元素的 AJP/1.3 協議所使用的端口相匹配 10 worker.config1.host=localhost 11 #Tomcat服務器的地址 12 worker.config1.type=ajp13 13 #類型 14 worker.config1.lbfactor=1 15 #負載平衡因數
注意:
worker.list=config1中,conifg1為自定義名稱,但此名稱必須與下文所述的 “/Apache 2.2/conf/httpd.conf ” 文件中 ,JkMount 指令對應的名稱相匹配。
加入workers.properties 文件后,可修改 “/Apache 2.2/conf/httpd.conf ” 文件,加入以下配置。
注意 JkMount 指令中的變量必須與worker.list 所配置的名稱相同。
1 # 設置虛擬主機,定義端口為8000 2 <VirtualHost 127.0.0.1:8000> 3 ServerName 127.0.0.1 4 #定義服務名稱 5 DocumentRoot "C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps" 6 #定義站點項目所在路徑,把路徑指向 tomcat 中的默認網站目錄 7 DirectoryIndex index.html index.htm index.jsp 8 ErrorLog logs/shsc-error_log.txt 9 CustomLog logs/shsc-access_log.txt common 10 #例子1,讓 Apache 支持對webapps/sun.shop/blog 中頁面傳送 11 JkMount /sun.shop/blog/* config1 12 #例子2,向Apache請求此文件夾內頁面時,系統將轉向用Tomcat解析 13 JkMount /*.jsp config1 14 #例子3,向 Apache 請求jsp頁面時,用 Tomcat 進行解析 15 JkMount /*.do config1 16 #例子4,向 Apache 請求.do 動作時, 用 Tomcat 進行解析 17 JkMount /*.action config1 18 #例子5,向 Apache 請求 .action 動作時, 用 Tomcat 進行解析 19 </VirtualHost> 20 21 # 允許客戶端訪問此路徑 22 <Directory "C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps"> 23 Options Indexes FollowSymLinks 24 AllowOverride None 25 Order allow,deny 26 Allow from all 27 </Directory> 28 29 LoadModule jk_module modules/mod_jk.so 30 # 此處 mod_jk.so 文件為你下載的文件 31 JkWorkersFile "C:/Program Files/Apache Software Foundation/Tomcat 7.0/conf/workers.properties" 32 # 指定tomcat監聽配置文件地址 33 JkLogFile "C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/mod_jk2.log" 34 # 指定日志存放位置 35 JkLogLevel info
注意:
JkMount /*.jsp config1 指令代表當客戶端向 Apache 發送 *.jsp 頁面請求時,把處理指向 Tomcat。當使用 Struts時建議使用 *.action、*.do等后綴命名動作,否則若使用無后綴命名時,加入 JkMount /* config1命令,Apache 則會把包括 *.html等靜態頁面所有請求,都轉向 Tomcat。
完成以上配置后,重啟 Apache、Tomcat。此時 Apache、Tomcat 的默認目錄為 “C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps ”,對HTTP請求,Apache 使用8000端口,Tomcat 使用 8081 端口。在默認目錄下加入index.jsp 頁面后,直接向 Apache 發送 http://localhost:8000/index.jsp 頁面請求,可見 Apache 會把請求轉向 Tomcat 進行處理。
對JAVA開發有興趣的朋友歡迎加入QQ群:174850571 共同探討 !
服務類工具的應用與管理
數字證書應用綜合揭秘(包括證書生成、加密、解密、簽名、驗簽)
Windows Server 2008 R2 負載平衡入門篇
