apache+tomcat集群最佳配置(如何搭建apache+tomcat集群)

本文目录
- 如何搭建apache+tomcat集群
- 是否了解tomcat的调优工作,需要修改哪些配置文件实
- Linux+apache+tomcat详细配置
- Apache Tomcat 5.5.12环境windows下怎样配置
- windows环境下的tomcat集群怎么搭建
- apache与tomcat集成的线程数怎么配置
- apache+tomcat配置
- apache+tomcat post的配置是哪些
- 如何整合Apache与Tomcat
- apache tomcat配置
如何搭建apache+tomcat集群
在实际应用中,如果网站的访问量很大,为了提高访问速度,可以与多个Tomcat服务器与Apache服务器集成,让他们共同运行servlet/jsp组件的任务,多个Tomcat服务器构成了一个集群(Cluster)系统,共同为客户提供服务。集群系统具有以下优点:
高可靠性(HA):利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
高性能计算(HP):即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。
负载平衡:即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
原理:JK插件的负载均衡器根据在worker.properties中配置的lbfactor(负载平衡因数),负责为集群系统中的Tomcat服务器分配工作负荷,以实现负载平衡。每个Tomcat服务器间用集群管理器(SimpleTcpCluster)进行通信,以实现HTTP回话的复制,比如Session。
下面我们在一台机器上配置一个Apache和两个Tomcat服务器集群:
2.安装Apache,安装两个Tomcat,并把一个测试项目放到两个Tomcat的webapps目录下以便以后测试。
3.把mod_jk.so复制到《apache_home》/modules下。
4.在《apache_home》/conf目录下创建:workers.properties文件:
"pln"》worker "pun"》. "pln"》list "pun"》= "pln"》 worker1 "pun"》, "pln"》worker2 "pun"》, "pln"》loadbalancer "com"》#apache把Tomcat看成是工人,loadbalancer是负载均衡器
worker.worker1.host=localhost #Tomcat worker1服务器
worker.worker1.port=8009 #Tomcat端口
worker.worker1.type=ajp13 #协议
worker.worker1.lbfactor=100 #负载平衡因数
worker.worker2.host=localhost #Tomcat worker2服务器
worker.worker2.port=8009 #因为在一台机器上所以端口不能一样
worker.worker2.type=ajp13 #协议
worker.worker2.lbfactor=100 #设为一样代表两台机器的负载相同
worker.loadbalancer.type=1b
worker.loadbalancer.balanced_workers=worker1,worker2
worker.loadbalancer.sticky_seesion=false
worker.loadbalancer.sticky_session_force=false
说明:1.worker.loadbalancer.sticky_seesion如果设为true则说明会话具有“粘性”,也就是如果一个用户在一个Tomcat中建立了会话后则此后这个用户的所有操做都由这个Tomcat服务器承担。集群系统不会进行会话复制。如果设为false则下面的 sticky_session_force无意义。
2.sticky_session_force:假设sticky_session设为true,用户会话具有了粘性,当当前Tomcat服务器停止服务后,如果sticky_session_force为true也就是强制会话与当前Tomcat关联,那么会报500错误,如果设为false则会转到另外的Tomcat服务器。
***隐藏网址***
"com"》#Tomcat集群配置
"com"》LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
#我的工人们
JkLogFile logs/mod_jk.log
#日志文件
JkLogLevel debug
#tomcat运行模式
JkMount /*.jsp loadbalancer
#收到.jsp结尾的文件交给负载均衡器处理
JkMount /helloapp/* loadbalancer
#收到helloapp/路径交给负载均衡器处理
6.修改两个Tomcat的conf/service.xml文件。
6.1首先要修改AJP端口,确保他们与workers.properties中配置的一样
例如按我们上面的配置,只需要把Tomcat2中的AJP端口该为8109即可。
6.2此外在使用了loadbalancer后,要求worker的名字与Tomcat的service.xml中的Engine元素的jvmRoute属性一致,
例如worker1修改为: 《Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1"》
6.3另外,如果两台Tomcat服务器装在一台机器上,必须确保他们的端口没有冲突,Tomcat中一共配置了三个端口:
《Server port="8005" shutdown="SHUTDOWN"》
《Connector port="8080" .../》
《Connector port="8109" protocol="AJP/1.3" redirectPort="8443" /》
把其中一个该了让它们不一样就行了。
完成了以上步骤我们的集群算是基本完成了,打开Apache和两个Tomcat 浏览器进入:localhost/demo/ 能够正确访问。
为了测试,我们写一个jsp文件:test.jsp
"tag"》《html》
《head》
《title》test《/title》
《/head》
《body》
《%
System.out.printfln("call test.jsp");
%》
session:《%=session.getId() %》
《/body》《/html》
把它放到两个Tomcat中的demo项目中,浏览器访问这个页面,每次访问只在一个Tomcat控制台打印语句。
然而页面中的Session Id是会变的。这种情况下如果一个用户正在访问时,如果跳到另一个Tomcat服务器,那么他的session就没有了,可能导致错误。
7.配置集群管理器
如果读者对HttpSession有了解应该知道,用户的会话状态保存在session中,一个浏览器访问多个网页它们的请求始终处于一个会话范围中,因此SessionID应该是不变的。
以上我们看到的浏览器中的SessionID不同,因为转到另一个Tomcat后当前会话就结束了,又在另一个服务器上开启了一个新的会话。那么怎么让多个Tomcat服务器共享一个会话呢?
为了解决上述问题,我们启用Tomcat的集群管理器(SimpleTcpCluster):
7.1修改Tomcat1和Tomcat2的servlet.xml文件,在Engine元素中加入以下Cluster元素
"tag"》《Cluster "pln"》 "atn"》className "pun"》= "atv"》"org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8"》
《Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/》
《Channel className="org.apache.catalina.tribes.group.GroupChannel"》
《Membership className="org.apache.catalina.tribes.membership.McastService"
bind="127.0.0.1"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/》
《Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/》
《Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"》
《Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/》
《/Sender》
《Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/》
《Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/》
《/Channel》
《Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/》
《Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/》
《Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/》
《ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/》
《ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/》
《/Cluster》
关于Cluster的相关介绍参照:《tomcat-home》\webapps\docs\cluster-howto.html 《tomcat-home》\webapps\docs\config\cluster.html
7.2分别修改Tomcat1和Tomcat2 demo项目的web.xml文件,在后面加入《distributable》元素
"tag"》《web-app》
"pln"》...
"tag"》《distributable/》
《/web-app》
如果一个web项目的web.xml文件中指定了《distributable/》元素那么Tomcat服务器启动这个Web应用时,会为它创建由《Cluster》元素指定的会话管理器,这里我们用的是DeltaManager,他们把会话从一个Tomcat服务器复制到集群中另一个Tomcat服务器。
7.3重新启动两个Tomcat,发现Tomcat控制台还是依次打印出Call test.jsp 页面中的SessionID却不变了。测试完成。
重要说明:(1).如果项目要发布到集群上,那么与会话有关的类需要实现java.io.Serializable序列化接口。
(2).集群中Tomcat间用组播方式进行通信,如果机器上有多个网卡则可能导致组播失败,解决的办法是《Cluster》元素的《Membership》元素配置bind属性,它用于明确知道组播地址:
《Membership className="org.apache.catalina.tribes.membership.McastService" bind="127.0.0.1".../》
(3).如果集群较小,可以采用DeltaManager会话管理器,如果多的话建议使用BackupManager
(4).《Membership》的address设为"228.0.0.4",运行时须确保机器联网能访问到该地址,否则可能运行失败。
是否了解tomcat的调优工作,需要修改哪些配置文件实
Tomcat性能调优方案
一、操作系统调优
对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快。。
【适用场景】 任何项目。
二、Java虚拟机调优
应该选择SUN的JVM,在满足项目需要的前提下,尽量选用版本较高的JVM,一般来说高版本产品在速度和效率上比低版本会有改进。
JDK1.4比JDK1.3性能提高了近10%-20%,JDK1.5比JDK1.4性能提高25%-75%。
因此对性能要求较高的情况推荐使用 JDK1.6。
【适用场景】 任何项目。
三、Apache集成Tomcat
Web服务器专门处理HTTP请求,应用服务器是通过很多协议为应用提供商业逻辑。虽然Tomcat也可以作web服务器,但其处理静态html的速度比不上Apache,且其作为web服务器的功能远不如Apache,因此把Apache和Tomcat集成起来,将html和Jsp的功能部分进行明确分工,让Tomcat只处理Jsp部分,其他的由Apache,IIS等web服务器去处理,由此大大提高Tomcat的运行效率。
如果一个项目中大量使用了静态页面、大量的图片等,并有有较大的访问量,推荐使用Apache集成Tomcat的方式来提高系统的整体性能。
***隐藏网址***
相对于JK的连接方式,后两种在配置上比较简单的,灵活性方面也一点都不逊色。但就稳定性而言不像JK这样久经考验,所以建议采用JK的连接方式。
Apache+JK+Tomcat配置:
***隐藏网址***
【部署步骤】
1.安装Apache服务器
2.部署Tomcat
3.将mod_jk.so拷贝到modules目录下面
***隐藏网址***
【适用场景】 大量使用静态页面的应用系统。
四、Apache和Tomcat集群
对于并发要求很高的系统,我们需要采取负载均衡的方式来分担Tomcat服务器的压力。负载均衡实现大概有四种:第一是通过DNS,但只能简单的实现轮流分配,不能处理故障;第二是基于MS IIS,windows 2003 server本身就带了负载均衡服务;第三是硬件方式,通过交换机功能或专门的负载均衡设备来实现;第四种是软件的方式,通过一台负载均衡服务器进行,上面安装软件。使用Apache Httpd Server做负载均衡器,Tomcat集群节点使用Tomcat就可以做到上述第四种方式,这种方式比较灵活,成本相对比较低,另外一个很大的优点就是可以根据应用情况和服务器的情况做一些灵活的配置。所以推荐使用Apache+Tomcat集群来实现负载均衡。
采用Tomcat集群可以最大程度的发挥服务器的性能,可以在配置较高的服务器上部署多个Tomcat,也可以在多台服务器上分别部署Tomcat,Apache和Tomcat整合的方式还是JK方式。经过验证,系统对大用户量使用的响应方面,Apache+3Tomccat集群》 Apache+2Tomcat集群 》 Apache集成Tomcat 》 单个Tomcat。并且采用Apache+多Tomcat集群的部署方式时,如果一个Tomcat出现宕机,系统可以继续使用,所以在硬件系统性能足够优越的情况下,需要尽量发挥软件的性能,可以采用增加Tomcat集群的方式。
***隐藏网址***
Apache需要调整运行参数,这样才能构建一个适合相应网络环境的web服务。其中可进行的优化配置如下:
1.设置MPM(Multi Processing Modules多道处理模块)。ThreadPerChild,这个参数用于设置每个进程的线程数,在Windows环境下默认值是64,最大值是1920,建议设置为100-500之间,服务器性能高的话值大一些,反之小一些。MaxRequestPerChild表示每个子进程能够处理的最大请求数。这个参数的值更大程度上取决于服务器的内存,如果内存比较大的话可以设置为很大的参数,否则设置一个较小的值,建议值是3000.
2.关闭DNS和名字解析 HostnameLookups off
3.打开UseCanonicalName模块 UseCanonicalName on
4.关闭多余模块 一般来说,不需要加载的模块有,mod_include.so、mod_autoindex.so、mod_access.so、mod_auth.so.
5.打开KeepAlive支持
KeepAlive on, KeepAliveTimeout 15 MaxKeepAliveRequests 1000
根据实际经验,通过Apache和Tomcat集群的方式提高系统性能的效果十分明显,这种方式可以最大化的利用硬件资源,通过多个Tomcat的处理来分担单Tomcat时的压力。
【部署步骤】
1.安装Apache服务器
2.部署Tomcat集群,即多个相同的Tomcat。
3.将mod_jk.so拷贝到modules目录下面
***隐藏网址***
【适用场景】 并发用户量及在线使用用户数量比较高的系统。
五、Tomcat自身优化
1.JVM参数调优:-Xms《size》 表示JVM初始化堆的大小,-Xmx《size》表示JVM堆的最大值。这两个值的大小一般根据需要进行设置。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。在catalina.bat中,设置JAVA_OPTS=’-Xms256m -Xmx512m’,表示初始化内存为256MB,可以使用的最大内存为512MB。
2.禁用DNS查询
当web应用程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。DNS查询需要占用网络,并且包括可能从很多很远的服务器或者不起作用的服务器上去获取对应的IP的过程,这样会消耗一定的时间。为了消除DNS查询对性能的影响我们可以关闭DNS查询,方式是修改server.xml文件中的enableLookups参数值:
Tomcat4
《Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="80" minProcessors="5" maxProcessors="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false" disableUploadTimeout="true" /》
Tomcat5
《Connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true"/》
3.调整线程数
通过应用程序的连接器(Connector)进行性能控制的的参数是创建的处理请求的线程数。Tomcat使用线程池加速响应速度来处理请求。在Java中线程是程序运行时的路径,是在一个程序中与其它控制线程无关的、能够独立运行的代码段。它们共享相同的地址空间。多线程帮助程序员写出CPU最大利用率的高效程序,使空闲时间保持最低,从而接受更多的请求。
Tomcat4中可以通过修改minProcessors和maxProcessors的值来控制线程数。这些值在安装后就已经设定为默认值并且是足够使用的,但是随着站点的扩容而改大这些值。minProcessors服务器启动时创建的处理请求的线程数应该足够处理一个小量的负载。也就是说,如果一天内每秒仅发生5次单击事件,并且每个请求任务处理需要1秒钟,那么预先设置线程数为5就足够了。但在你的站点访问量较大时就需要设置更大的线程数,指定为参数maxProcessors的值。maxProcessors的值也是有上限的,应防止流量不可控制(或者恶意的服务攻击),从而导致超出了虚拟机使用内存的大小。如果要加大并发连接数,应同时加大这两个参数。web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。
在Tomcat5对这些参数进行了调整,请看下面属性:
maxThreads Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。
acceptCount 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
connnectionTimeout 网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
minSpareThreads Tomcat初始化时创建的线程数。
maxSpareThreads 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
最好的方式是多设置几次并且进行测试,观察响应时间和内存使用情况。在不同的机器、操作系统或虚拟机组合的情况下可能会不同,而且并不是所有人的web站点的流量都是一样的,因此没有一刀切的方案来确定线程数的值。
六、APR库使用
Tomcat中使用APR库,其实就是在Tomcat中使用JNI的方式来读取文件以及进行网络传输。可以大大提升Tomcat对静态文件的处理性能,同时如果你使用了HTTPS方式传输的话,也可以提升SSL的处理性能。
一般在Windows下,可以直接下载编译好的二进制版本的dll库文件来使Tomcat启用APR,一般建议拷贝库文件tcnative-1.dll到Tomcat的bin目录下。而在Linux下,可以直接解压和安装bin目录下的tomcat_native.tar.gz文件,编译之前要确保apr库已经安装。
怎么才能判断Tomcat是否已经启用了APR库呢?方法是通过看Tomcat的启动日志:
如果没有启用APR,则启动日志一般有这么一条:
***隐藏网址***
如果启用了APR,则这条日志就会变成:
***隐藏网址***
***隐藏网址***
调优综述
根据以上分析,如果想要Tomcat达到最优的效果,首先要争取使得操作系统以及网络资源达到最优,并且最好使用高版本的JDK。对于有大量静态页面的系统,采用Apache集成Tomcat的方式,把静态页面交由Apache处理,动态部分交由Tomcat处理,能极大解放Tomcat的处理能力。使用ARP库也能极大的提高Tomcat对静态文件的处理能力。对于并发要求较高的系统,采用Apache加Tomcat集群的方式,将负载分别分担到多个Tomcat上,能很大的提高系统的性能,充分利用硬件资源。同时需要对Tomcat自身进行优化,包括增大内存、调节并发线程数等。
Linux+apache+tomcat详细配置
到/etc/profile 中 umask 022 上 添加如下内容
配置环境
在profile中添加
JAVA_HOME=jdk安装目录
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export JAVA_HOME CLASSPATH PATH
export TOMCAT_HOME=/usr/local/apache-tomcat-5.5.30
tar -zxvf apache-tomcat-5.5.30.tar.gz
安装好后更改整个安装文件夹的权限
sudo chmod 777 -R apache-tomcat-5.5.30
到安装好的文件夹下中bin目录中 执行./startup.sh & 启动服务器
在浏览器中输入127.0.0.1:8080看是否安装成功。
Apache Tomcat 5.5.12环境windows下怎样配置
配置
桌面上选择“我的电脑”(右键)
高级
环境变量
在“系统变量”---》“新建”
在变量名中输入:JAVA_HOME,变量值中输入:F:\JDK13然后确定;
在“系统变量”---》“新建”
在变量名中输入:TOMCAT_HOME,变量值中输入:F:\tomcat32b4然后确定;
windows环境下的tomcat集群怎么搭建
搭建apache+tomcat集群的方法:
1、安装tomcat+apache+mysql。
2、修改tomcat的端口,即修改server.xml中的配置,并修改 《Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat_8084"》
***隐藏网址***
4、在conf.d文件夹中加入xxx.conf文件,在该文件中添加如下配置:
***隐藏网址***
ProxyRequests Off
ProxyPass / balancer://chinatrial-cluster/ stickysession=JSESSIONID nofailover=Off
***隐藏网址***
***隐藏网址***
***隐藏网址***
《Proxy balancer://chinatrial-cluster》
***隐藏网址***
***隐藏网址***
***隐藏网址***
《/Proxy》
其中route后面的值是和tomcat的server.xml中的《Engine》中的jvmRoute相对应
5、实现session共享
在数据库中建session共享表:
CREATE DATABASE `session`
USE `session`;
DROP TABLE IF EXISTS `session`.`tomcat_sessions`;
CREATE TABLE `session`.`tomcat_sessions` (
`session_id` varchar(100) NOT NULL,
`valid_session` char(1) NOT NULL,
`max_inactive` int(11) NOT NULL,
`last_access` bigint(20) NOT NULL,
`app_context` varchar(255) default NULL,
`session_data` mediumblob,
PRIMARY KEY (`session_id`),
KEY `kapp_context` (`app_context`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
6、在项目的context.xml中进行Manager的配置:
《Manager className="org.apache.catalina.session.PersistentManager"
debug="99" saveOnRestart="true" maxActiveSessions="-1"
minIdleSwap="30" maxIdleSwap="600" maxIdleBackup="0"》
《Store className="org.apache.catalina.session.JDBCStore"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://172.16.100.229/session?user=root&password=nazca123&useUnicode=true&characterEncodeing=utf-8"
sessionTable="tomcat_sessions" sessionIdCol="session_id"
sessionDataCol="session_data" sessionValidCol="valid_session"
sessionMaxInactiveCol="max_inactive"
sessionLastAccessedCol="last_access" sessionAppCol=’app_context’
checkInterval="60" debug="0" /》
《/Manager》
apache与tomcat集成的线程数怎么配置
***隐藏网址***
安装tomcat,解压apache-tomcat-6.0.20.zip,测试时我是把两个tomcat分开放在不同的虚拟机,其中一个是和apache同一台虚拟机。
两个tomcat分别命名为worker2和worker3!
apache+tomcat配置
ServerAdmin,服务器管理员,没什么特别的含义。
ServerName,相当于域名一样,类似百度或者新浪的域名地址。
假如你通过浏览器访问127.0.0.1这个地址(80端口是默认的,apache也是用的这个端口,写不写都一样,tomcat的端口就是8080),那么apache会帮去你找到DocumentRoot所配置的路径,默认找index的页面。
如果你成功整合了apache和tomcat,那么你访问127.0.0.1的页面应该是和localhost:8080一样的。
apache+tomcat post的配置是哪些
1、Apache是一个代理服务器,它可以将您的服务器隐藏在内网,对外暴露的只是Apache服务器,提高您服务器的安全,另外Apache服务服务器解析静态资源(图片,html页面,css样式文件等)的效率比tomcat要高很多,使用Apache + tomcat将动静资源分开;还有一个很重要的功能,如果您有多台服务器,Apache可以为您提供负载均衡的功能,例您的多台服务器使用同一个对外的出口。
2、您配置了Apache,可以解释html文件,说明您的apache服务器已经正常启动了,出现503的错误,500+的错误表示的是服务器错误,Apache不能解释jsp文件,您需求将*.jsp,*.do,*.action之类的动态文件转发给tomcat去处理,如果您用的是apache 2.2或以上的版本,您可以使用ProxyPass指令,将访问*.jsp的页面都交给tomcat去处理,这时候Apache起到的就是代理服务器的作用。
***隐藏网址***
如何整合Apache与Tomcat
apache支持静态页,tomcat支持动态的,比如servlet等。
一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。
apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理。
apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。
这两个有以下几点可以比较的:
1、两者都是apache组织开发的
2、两者都有HTTP服务的功能
3、两者都是免费的
不同点:
Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)
Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器
整合的好处是:
如果客户端请求的是静态页面,则只需要Apache服务器响应请求
如果客户端请求动态页面,则是Tomcat服务器响应请求
因为jsp是服务器端解释代码的,这样整合就可以减少Tomcat的服务开销
Windows下Apache与Tomcat的整合:
准备工作:
1、 Apache 2.2.4
***隐藏网址***
2、 Tomcat 6.0.16
***隐藏网址***
3、 JDK
***隐藏网址***
如果只是应用的话,也可以选择安装JRE,因为JRE比较小:)
***隐藏网址***
***隐藏网址***
***隐藏网址***
开始安装:
软件的安装顺序可以适当调整,但是JDK(JRE)一定要在Tomcat之前安装:
1、安装JDK(JRE)
此处默认、自定义安装均可。安装完成以后按下面的示例设置你的系统环境变量:我的电脑 -》 属性 -》 高级 -》 环境变量 (这里要添加的是系统变量,非用户变量)
JAVA_HOME = D:\Program Files\Java\jdk1.6.0_07
CLASSPATH = .;%Java_Home%\lib\tools.jar;%Java_Home%\lib\dt.jar;
PATH = %Java_Home%\bin;%PATH%
注意JAVA_HOME的路径改为你的实际安装路径。其它两个不变。
2、安装Apache
此处注意,如果你本机已经装了IIS并且占用了80端口,你可以选择禁用IIS或者给IIS指定其它端口,或者给Apache指定其它端口,根据实际情况进行设置。在Apache的安装过程中要设置Network Domain和Server Name为Localhost,设置你的Email地址(这个一定要设置,不然Apache启动不起来)。
***隐藏网址***
3、安装Tomcat
将Tomcat解压到 D:\Program Files\Tomcat 下,设置环境变量:
CATALINA_BASE = D:\Program Files\tomcat
CATALINA_HOME = D:\Program Files\tomcat
CLASSPATH = %CATALINA_HOME%\lib\servlet-api.jar
运行 D:\Program Files\Tomcat\bin\startup.bat 启动Tomcat,出现Tomcat页面则表示安装成功。
4、安装JK
***隐藏网址***
下面进行服务器的配置:
1、配置Tomcat
查找Tomcat目录下的 conf/server.xml文件,在《host》《/host》中间加入以下语句以修改其默认的目录:
《Context path="" docBase="E:\wwwroot" reloadable="true" crossContext="true"/》
在这里,如果 path 不为空,则设置的是虚拟目录,path 的值为虚拟目录名。
查找Tomcat目录下的 conf/workers.properties文件,并对比下方文本内容,如有不同处,以下方文本为准进行修改。
workers.tomcat_home=C:\apache-tomcat-6.0.18 #让mod_jk模块知道Tomcat的位置
workers.java_home=D:\Program Files\Java\jre1.6.0_07 #让mod_jk模块知道jre的位置
ps=\
worker.list=ajp13 #模块版本
worker.ajp13.port=8009 #工作端口,若没占用则不用修改
worker.ajp13.host=localhost #本机,若上面的Apache主机不为localhost,作相应修改
worker.ajp13.type=ajp13 #类型
worker.ajp13.lbfactor=1 #代理数,不用修改
如果此文件不存在,则依以上内容创建。对Tomcat的设置进行任何修改后都要重启才可以生效。
2、配置Apache
***隐藏网址***
***隐藏网址***
#此处mod_jk的文件为你下载的文件
JkWorkersFile "D:\Program Files\Tomcat\conf\workers.properties"
#指定tomcat监听配置文件地址
JkLogFile "D:\Program Files\Tomcat\logs\mod_jk2.log"
#指定日志存放位置
JkLogLevel info
#设置虚拟主机
《VirtualHost localhost》
#如果非虚拟主机,将《VirtualHost localhost》和最后的《/VirtualHost》注释或者删除掉即可
ServerAdmin localhost
DocumentRoot E:/wwwroot
《Directory "E:/wwwroot"》
#您的站点项目所在路径,应与tomcat中的目录设置相同,据说以上两个必须同时设置才可以生效,没有试过不同的时候会有什么情况
ServerName localhost
DirectoryIndex index.html index.htm index.jsp
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /servlet/* ajp13
#让Apache支持对servlet传送,用以Tomcat解析
JkMount /*.jsp ajp13
#让Apache支持对jsp传送,用以Tomcat解析
JkMount /*.do ajp13
#让Apache支持对.do传送,用以Tomcat解析
《/VirtualHost》
#开头的行为注释,可以删除。此处的配置我是以设置虚拟目录,重新指定了serverName,DocumentRoot路径的方式配置站点,实际上,Apache的配置可以非常灵活,你也可以不采用虚拟目录的方式,而直接去修改站点的默认配置,使用任意文本工具,搜索如 ServerName,DocumentRoot,ServerAdmin等相关项,然后将该项的配置根据你的实际情况进行修改即可。我建议大家可以多多尝试不同的配置,这是一种很有乐趣的体验。
所有的修改完成以后,双击系统托盘中的Apache图标,然后点击Start启动Apache服务。
***隐藏网址***
安装常见问题:
1.一启动Apache出现“windows不能在本地计算机启动Apache2”错误
多数情况是端口的问题,可能有其他软件占用了80端口,最好把Apache的端口改成81端口就可以了
2.windows下查看80端口占用情况,适用于查看任何端口
开始–运行–cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选”查看”-”选择列”,经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用。
我们需要确定谁占用了我们的80端口
在windows命令行窗口下执行:C:\》netstat -aon|findstr “80″
看到了吗,端口被进程号为2044的进程占用,继续执行下面命令:
C:\》tasklist|findstr “2044″
avp.exe 2044 Console 0 37,680 K
很清楚吧,avp 卡巴监听80端口,调整卡巴网络监听设置。
当然,如果你的80端口被其他程序占用,kill掉或者调整端口。
apache tomcat配置
apache安装目录为APACHE_HOME
tomcat安装目录为TOMCAT_HOME (要设到环境变量中)
jdk安装目录为JAVA_HOME(要设到环境变量中)
1.安装apache:(假定安装目录为APACHE_HOME,根据你实际安装自行替换)
***隐藏网址***
1) Port 8080 或者80 随你
2) ServerName localhost
3) DocumentRoot "e:/www" (为了发布方便,不如自己建个目录作为文档根)
4) 把原来的《Directory "APACHE_HOME/htdocs"》改为
《Directory "e:/www"》
5) 添加index.jsp为缺省的主索引文件
《IfModule mod_dir.c》
DirectoryIndex index.html index.jsp
《/IfModule》
***隐藏网址***
#tomcat支持
include TOMCAT_HOME/conf/mod_jk.conf-auto
只需要这一句就够了,别听那些白痴的话,加上什么tomcat-apache.conf,那没用.
把mod_jk.dll拷贝进APACHE_HOME/module目录
这会先不管apache了,来设置tomcat3.2
步骤:
把tomcat解压缩,将它真正的目录jarakar-tomcat拷贝到你要的目录名TOMCAT_HOME
修改TOMCAT_HOME下的conf目录中的server.xml
1) 如果你不想看TOMCAT启动信息,这么做:
《Logger name="tc_log"
path="logs/tomcat.log"
verbosityLevel = "INFORMATION"
/》
增加一个PATH="logs/tomcat.log" 就可以了
2) 让tomcat改到8081上,一般来说www服务在80或者8080上:
《!-- Normal HTTP --》
《Connector className="org.apache.tomcat.service.PoolTcpConnector"》
《Parameter name="handler"
***隐藏网址***
《Parameter name="port" value="8081"/》
《/Connector》
3)增加APJ13协议支持
《!-- Apache AJP13 support. This is also used to shut down tomcat. --》
《Connector className="org.apache.tomcat.service.PoolTcpConnector"》
《Parameter name="handler" value="org.apache.tomcat.service.connector.Ajp13
ConnectionHandler"/》
《Parameter name="port" value="8009"/》
《/Connector》
就放在原来的APJ12连接器后面就可以了
4)配合APACHE修改文档根目录
《!-- 文档根目录 --》
《Context path="/" docBase="e:/www" 》
《/Context》
5)为了用例子测试,还得改一下EXAMPLES的CONTEXT:
《Context path="/examples"
docBase="TOMCAT_HOME/webapps/examples" crossContext="false" 》
《/Context》
要使用MOD_JK还得改一下同一目录下的WORKERS.PROPERTIES文件:
1) workers.tomcat_home=TOMCAT_HOME
2) workers.java_home=JAVA_HOME
3) ps= 我爱windows 赫赫
现在ok了,开始启动!
别慌,还有启动顺序问题,注意啊,先启动tomcat让它自己修改一下配置,第一次一定
要先tomcat,以后除非修改tomcat的设置,都可以先启动apache了。
ok 来启动tomcat:运行TOMCAT_HOME/bin下面的startup.bat
看到:Startting tomcat. Check logs/tomcat.log for error messages.那就对了
再来检查tomcat的情况
先随便在e:www里面放个index.jsp文件,内容是
JAVA天堂
《%="啊哈!jsp第一次运行!"%》
***隐藏网址***
如果看到上面的话出现,那么根文档就成功了,再来用例子测试一下,用浏览器打开:
***隐藏网址***
运行猜数字游戏,如果正确了,说明咱们的examples上下文也关联正确。这就简单了。
剩下就是运行apache了
运行apache,看到这么一行:
Apache/1.3.14 (win32) with mod_jk running...那就对了
***隐藏网址***
***隐藏网址***
还是看到那句“啊哈!jsp第一次运行!”
这就说明apache和tomcat连上了!

更多文章:
form表单制作(为什么制作的form表单会在网页显示中多出一行)
2026年10月11日 09:10
teammate(teammate,company,partner)
2026年10月11日 06:10
javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)
2026年10月11日 04:00
text函数公式(excel中round和text函数的区别是什么)
2026年10月11日 03:50
google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)
2026年10月11日 02:00
websocket整合springboot(Springboot整合Websocket遇到的坑)
2026年10月11日 01:40
drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)
2026年10月10日 19:20
xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)
2026年10月10日 17:50




