Windows Server 2008 R2環境下Apache2.4+Tomcat8配置


安裝步驟

1. 安裝配置JDK
2. 安裝配置Apache
3. 安裝配置Tomcat
4. 啟動服務並測試

一、Apache安裝與配置

1、Apache解壓
在D盤根目錄下建立一個文件夾Apache Group,將httpd-2.4.38-win64-VC15.zip解壓到此文件夾下。

2、Apache安裝與卸載
以管理員身份運行cmd,將目錄移動到D:\Apache Group\Apache24\bin下,安裝運行:

httpd -k install -n Apache2.4

安裝完成,右鍵我的電腦,管理,服務,可以看到多了一個名為Apache2.4的服務。
卸載運行

httpd -k uninstall -n Apache2.4

卸載完成后,服務中Apache2.4就會消失。

3、配置httpd.conf
打開Apache Group\Apache24\conf下的httpd.conf主配置文件進行配置,修改前將其備份一下,防止配置錯誤解決不掉的時候恢復。

Define SRVROOT "/Apache24"    (37行)
ServerRoot "${SRVROOT}"      (39行)

更改為安裝目錄

Define SRVROOT "D:\Apache Group\Apache24"
ServerRoot "${SRVROOT}"

默認是80端口的,如果80端口被占用,則無法安裝成功
用一下命令可以查詢80端口被哪個進程id占用,netstat -aon | findstr "80"
再用一下命令查詢該進程id是代表哪個進程,tasklist | findstr "PID號"

或者直接改Apache的端口號

Listen 8888    (60行)

httpd.conf最后一行加入

Include conf/mod_jk.conf

4、配置mod_jk.conf
將tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip解壓,並找到其中mod_jf.so文件,將其放至Apache Group\Apache24\modules文件夾中
在Apache Group\Apache24\conf目錄下建立mod_jk.conf文件,並打開,將其配置為以下代碼。

#加載mod_jk Module
LoadModule jk_module modules/mod_jk.so
#指定 workers.properties文件路徑
JkWorkersFile conf/workers.properties
#指定那些請求交給tomcat處理,"controller"為在workers.propertise里指定的負載分配控制器
JkMount /*.do controller
JkMount /*WEB-INF controller
JkMount /*j_spring_security_check controller
JkMount /*.action controller
JkMount /servlet/* controller
JkMount /*.jsp controller
JkMount /*.do controller
JkMount /*.action controller
JkMount /* controller


5、配置workers.properties
官方文檔:http://tomcat.apache.org/connectors-doc/reference/workers.html

在Apache Group\Apache24\conf目錄下建立workers.properties文件

worker.list = controller,tomcat8-1,tomcat8-2 #server 列表
#worker.list = tomcat8-1
#========tomcat8-1========
worker.tomcat8-1.port=9010   #ajp13 端口號,在tomcat下server.xml配置,默認8009
worker.tomcat8-1.host=localhost    #tomcat的主機地址,如不為本機,請填寫ip地址
worker.tomcat8-1.type=ajp13
worker.tomcat8-1.lbfactor = 1      #server的加權比重,值越高,分得的請求越多

#========tomcat8-2========
worker.tomcat8-2.port=6010
worker.tomcat8-2.host=localhost
worker.tomcat8-2.type=ajp13
worker.tomcat8-2.lbfactor = 1
#========controller,負載均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat8-1,tomcat8-2     #指定分擔請求的tomcat
worker.controller.sticky_session=1    #回話是否有粘性,false表示無粘性,同一個回話的請求會到不同的tomcat中處理
worker.controller.sticky_session_force=false    #當一個節點蹦了,如果設值為true,那么服務器返回500錯誤給客戶端,如果設值為false,則轉發給其他的tomcat,但是會丟失回話信息


負載均衡器也可配置為,下方配置為一個用戶的所有請求由一個tomcat處理,上方配置為用戶請求會進到不同的tomcat

Tomcat負載均衡原理:http://blog.csdn.net/fubin5115/article/details/78078166

#========controller,負載均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=1

如需增加Tomcat,在workers.properties中增加即可

6、Apache調優(未親測)
放開httpd.conf里面的Include conf/extra/httpd-mpm.conf一句。
把conf\extra目錄下的httpd-mpm.conf文件里的參數改為:

<IfModule mpm_winnt_module>
ThreadsPerChild 2000
MaxRequestsPerChild 2000
</IfModule>

二、Tomcat安裝與配置

1、Tomcat安裝
將apache-tomcat-8.5.34-windows-x64.zip解壓到Apache Group目錄下
在相同目錄下復制一份,命名為tomcat8-1,tomcat8-2
2、Tomcat配置
分別配置conf/server.xml
(1)修改shutdown端口,tomcat1改為9015,tomcat2改為8015

<Server port="8005" shutdown="SHUTDOWN">

(2)修改請求端口,初始代碼:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

tomcat1修改為:

<Connector port="9110" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
maxThreads="4000"
minSpareThreads="1000"
maxSpareThreads="2000"
redirectPort="8443"
acceptCount="2000"
disableUploadTimeout="true"
enableLookups="false"
URIEncoding="UTF-8" />

tomcat2將端口改為8110
(3)修改AJP端口號,同workers.properties中配置的port,tomcat1改為9019,tomcat2改為8019

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

(4)修改Engine,tomcat1在末尾加 jvmRoute=”tomcat1”,tomcat2在末尾加 jvmRoute=”tomcat2”,與workers.properties配置的server名稱對應

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

(5)將以下注釋掉的代碼打開

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

參考的文章中改為以下配置(未親測):

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
</Cluster>

至此Tomcat配置完畢

3、Tomcat優化(未親測)
在service.xml文件里加入

maxThreads="800" minSpareThreads="25" maxSpareThreads="700" enableLookups="false" acceptCount="1200"

maxThreads=”150” 表示最多同時處理150個連接
minSpareThreads=”25” 表示即使沒有人使用也開這么多空線程等待
maxSpareThreads=”75” 表示如果最多可以空75個線程,例如某時刻有80人訪問,之后沒有人訪問了,則tomcat不會保留80個空線程,而是關閉5個空的。
acceptCount=”100” 當同時連接的人數達到maxThreads時,還可以接收排隊的連接,超過這個連接的則直接返回拒絕連接。

運行項目配置
(1)需要在集群下運行的項目的web.xml文件結束標志/web-app前中加入

<distributable/>

(2)將要運行的項目分別放置於tomcat8-1和tomcat8-2的webapps下,或者在server.xml中配置

<Context path="/test" docBase="E:/www/testProject" debug="0" reloadable="true" />

Apache+Tomcat配置測試
測試Tomcat
首先空項目跑一下,看tomcat能否正常啟動
然后加項目跑一下,看tomcat能否正常啟動

測試Apache
Tomcat啟動后重啟一下Apache服務,看能否啟動
注意:Apache有可能啟動不起來,那么解決方式是查看Apache安裝目錄下的logs目錄下的error.log文件,
根據log文件解決可能存在的問題。直到Apache可以正常啟動,至此Apache就可以正常啟動了。

測試負載均衡
寫一個測試jsp放置於項目中,運行一下,看控制台輸出

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
System.out.println("===========================");
%>
</body>
</html>

經測試
(1)workers.properties配置為worker.controller.sticky_session=1,且tomcat的server中Cluster未打開時,同一瀏覽器多次訪問均進同一tomcat,換瀏覽器后會進另一個tomcat。
(2)workers.properties配置為另一種方式時為負載均衡,請求均勻分布在兩個tomcat。

如何把Apache和Tomcat加入Windows的服務:

Apache:https://blog.csdn.net/charliefromkansas/article/details/50315317

Tomcat:https://blog.csdn.net/warylee/article/details/82802174


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM