windows平台整合Apache与tomcat
Apache与Tomcat整合的好处
- Apache主要用来解析静态文本,如html。Tomcat虽然也有此功能,但Apache效率大大高于Tomcat,尤其是对于并发数较大的企业级应用,能更好的显示Apache的高效率。
- Tomcat用来解析jsp,servlet等,所有的客户请求首先会发送到Apache,如果请求是静态文本则由Apache解析,并把结果返回给客户端,如果是动态的请求,如jsp,Apache会把解析工作交给Tomcat,由Tomcat进行解析(前提:两者现实整合),Tomcat解析完成后,结果仍是通过Tpache返回给客户端,这样就可以达到分工合作,实现负载均衡,提高系统的性能!而且因为JSP是服务器端解释代码的,这样整合可以减少Tomcat的服务开销。
整合前的准备
版本选择
为了使得整合的性能更加稳定,本次整合中apache和tomcat采用的并不是最新版本,而是相对来说比较稳定的版本。
Apache:httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
Tomcat:apache-tomcat-7.0.6_1
Tomcat-connector:mod_jk-1.2.37-httpd-2.2.22.so(根据需要去网上下载对应的版本)。
注意:1.2.37:指的是连接器的版本号。
2.2.22:指的是apache的版本号。
安装目录:
本次整合用了两个tomcat。
Apache: E:\apache\apache\install(在这次整合中给它取个名字叫apache,安装目录是dirApache,目的是便于下面讲解)
Tomcat: E:\apache\tomcat\apache-tomcat-7.0.6_1(tomcat1,dirTomcat1)
E:\apache\tomcat\apache-tomcat-7.0.6_2(tomcat2,dirTomcat2)
具体整合的配置
Tomcat
配置 server 的关闭口
要在一台机器上开启两个tomcat,则需要将tomcat配置成不同的端口号。
将dirTomat1中conf/server.xml中的配置语句
<Server port="8005" shutdown="SHUTDOWN">
将其改为:
<Server port="8015" shutdown="SHUTDOWN">
dirTomcat2中的配置类推,只要port未被占用即可。
配置Service名称
本次我们运行了两个tomcat,所以要为每个tomcat取一个名字,以此来区分不同的tomcat服务器。
在dirTomcat1中conf/server.xml中找到
Service name="Catalina">
将其改为:
Service name="tomcat1">
dirTomcat2中的配置以此类推改为tomcat2.
注意:
这个名字要和dirApache下conf/ workers.properties中的worker.tomcat1对应tomcat1,tomcat2以此类推,(具体是否必须一致有待进一步确定)
配置 http访问的Connector端口
在dirTomcat1中conf/server.xml中找到
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
将其改为:
<Connector
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="150" />
由于有两个tomcat所以其中以个采用的是默认的访问端口,即没有改变端口。
对于tomcat2,本次整合将其端口改为8090(只要访问端口没有被占用即可)
配置 AJP 1.3 Connector端口
同样打开dirTomcat1中的conf/server.xml,找到
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
将其改为:
<Connector
port="8019"
protocol="AJP/1.3"
redirectPort="8443"
maxThreads="3000"
emptySessionPath="true"
enableLookups="false"/>
注意:
后面三个绿色的配置为并发支持配置。
对于dirTomcat2以此类推。
配置 Engine
是要是添加jvmRoute 属性,找到dirTomcat1/conf.server.xml中的
<Engine name="Catalina" defaultHost="localhost">
将其改为:
<Engine jvmRoute="tomcat1" name="Catalina" defaultHost="localhost">
注意:jvmRoute与workers.properties配置的worker.tomcat1对应。
对于dirTomcat2以此类推。
配置Host
将dirTomcat1/conf.server.xml中的Host部分
<Host
name="localhost"
appBase="webapps"(tomcat默认与conf同级的)
unpackWARs="true"
autoDeploy="true">
将其改为:
<Host
name="localhost"
appBase="E:\apache\webapps"(配置自己的项目目录,便于使用)
unpackWARs="true"
autoDeploy="true">
注意:
这个设置要和apache中的虚拟主机设置相对应(即要和dieApache/conf/ extra/ httpd-vhosts.conf中的DocumentRoot和Directory对应)。
对于tomcat2以此类推
Apache
检查Apache访问端口
Apache默认访问端口:
Listen 80 只要未被占用一般不用修改。
配置apache项目目录及其虚拟目录
1) 改变apache默认目录(理论上可以不用改这个)
在dirApache/conf/httpd.conf文件中找到并配置
DocumentRoot "E:\apache\webapps"(不配置则是apache默认的项目目录,应当配置成和虚拟目录一致,并且和tomcat的虚拟目录一致)。
2) 配置apache虚拟目录
在dirApache/conf/extra/httpd-vhosts.conf文件,内容为:
NameVirtualHost localhost
<VirtualHost localhost>
ServerAdmin 229408905@qq.com
DocumentRoot "E:/apache/webapps"
ServerName localhost
JkMount /*.jsp controller
DirectoryIndex index.html index.jsp
<Directory E:/apache/webapps/>
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost localhost>
ServerAdmin 229408905@qq.com
DocumentRoot "E:/apache/webapps"
ServerName localhost
JkMount /*.jsp controller
DirectoryIndex index.html index.jsp
<Directory E:/apache/webapps/>
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
注意:
a) ServerAdmin:这是在安装apache时填写的邮件信息。
b) DocumentRoot: 这个要和tomcat中指定的目录一致。
c) JkMount /*.jsp controller:当请求的是动态网页jsp时就将其转发到tomcat中进行解析,controller名字和在workers.properties文件中指定的controller名字一致(当apache和tomcat整合时的配置语句,不整即无需配置)。
3) 加载httpd-vhosts.conf配置文件
在dirApache/conf/httpd.conf文件中找到
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
将其改为:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
创建workers.properties配置文件
worker.list=controller
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=1
worker.controller.sticky_session_force=1
# Set properties for tomcat1 (ajp13)
worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost
worker.tomcat1.port=8019
worker.tomcat1.lbfactor=1
# Set properties for tomcat2(ajp13)
worker.tomcat2.type=ajp13
worker.tomcat2.host=localhost
worker.tomcat2.port=8029
worker.tomcat2.lbfactor=1
注意:
1) controller名字可以随便取,但是要与….相对应。
2) worker.controller.balanced_workers=tomcat1,tomcat2
其中tomcat1,tomcat2要和tomcat中server.xml文件中的
<Service name="tomcat1">
或者
<Engine jvmRoute="tomcat1" name="Catalina" defaultHost="localhost">
中的一个的名字相同(测试时只要一个相同就行)。但是真正实现apache和tomcat负载均衡链接的名称是通过Engine 的jvmRoute属性来实现的连接,所以建议将以上两个名字都取成一样,这样就不会出错。
指定的名称不对应,则会报以下错误:
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
意思是apache找不到项目目录。
3) worker.tomcat1.host=localhost
要和tomcat中server.xml文件中的
<Host
name="localhost"
appBase="E:\apache\webapps"
unpackWARs="true"
autoDeploy="true">
配置语句种的=name属性对应,为服务器ip或者域名。
4) worker.tomcat1.port的端口号为tomcat中定义的AJP 1.3 Connector端口号,如下:
<Connector
port="8019"
protocol="AJP/1.3"
redirectPort="8443"
maxThreads="3000"
emptySessionPath="true"
enableLookups="false"/>
即与上述端口号相对应。
配置Tomcat连接器
a) 将tomcat连接器mod_jk-1.2.37-httpd-2.2.22.so复制到dirApache/ modules目录下。
b) 在dirApache/conf中创建mod_jk.conf(tomcat连接器配置文件)文件,其内容为:
#多TOMCAT负载均衡整合开始
#加载mod_jk模块(tomcat连接器)
LoadModule jk_module modules/mod_jk-1.2.37-httpd-2.2.22.so
# 指定workers.properties文件(要转发到的tomcat服务器和控制器)
JkWorkersFile conf/workers.properties
#多TOMCAT负载均衡整合结束
c) 加载tomcat连接器配置文件(如果不创建这个文件,那么他的所有配置都将要直接放在httpd.conf文件中,这样不便于管理)
在dirApache/conf/httpd.conf文件最后添加如下语句,:
#加载mod_jk文件配置
include conf/mod_jk.conf
项目测试
- 准备一个javaweb项目,名称为ApacheAndTomcat
在项目中使用一个index.jsp页面(内容为输出一句话”jsp success!!”),并在web.xml中配置成默认项目首页为index.jsp,然后将项目放在上面的虚拟目录中
- 启动apache服务和tomcat服务
在页面中输入以下任意一个url:
http://localhost/ApacheAndTomcat/
http://localhost:8080/ApacheAndTomcat/
http://localhost:8090/ApacheAndTomcat/
如果内容为:
JSP success!!
表示apache和tomcat整合成功。
整合优化
线程和请求支持设置
在apache配置文件httpd.conf中找到
ThreadsPerChild 250
MaxRequestsPerChild 0
并改为:
ThreadsPerChild 1900
MaxRequestsPerChild 10000
如果没有就直接添加。
并发支持配置
在apache配置文件最后添加如下配置语句
<IfModule worker.c>
StartServers 4
ServerLimit 64
ThreadLimit 256
MaxClients 2048
MinSpareThreads 64
MaxSpareThreads 128
ThreadsPerChild 64
MaxRequestsPerChild 0
</IfModule>
windows平台整合Apache与tomcat的更多相关文章
- Windows下整合apache和Tomcat
1.前言: 引用:http://www.cnblogs.com/liaokailin/p/3963603.html 引用的博客里面有比较详细的说明,并且结合图片,非常生动: 我这里只做简单的说明和整合 ...
- (转)Linux整合apache和tomcat构建Web服务器
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wenzhongxiang.blog.51cto.com/6370734/1285 ...
- 在CentOS下企图整合Apache和Tomcat依然失败
环境: 64位CentOS Linux version 2.6.32-431.el6.x86_64 CentOS release 6.5 (Final) Apache/2.2.15,mod_jk/1 ...
- Windows(Vertrigo)下Apache与Tomcat的整合
为了实现整合,上网找了很多资料!尝试了很多次,终于成功整合了!下面我就把整合过程分享给大家,希望能给以后有需要的人提供帮助. 准备工作: 1.VertrigoServ 2.23 下载地址: http ...
- apache和tomcat有什么不同,为什么要整合apache 和tomcat
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展.2. Apache和Tomcat都可以做为独立的web服务器来运行,但是Ap ...
- 为什么要整合apache 和tomcat?
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是A ...
- apache和tomcat有什么不同,为什么要整合apache 和tomcat?
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展.2. Apache和Tomcat都可以做为独立的web服务器来运行,但是Ap ...
- Windows平台整合SpringBoot+KAFKA_第1部分_环境配置部分
项目需要,需要整合 SpringBoot+KAFKA 我调查了一下,发现Linux中,要先装zoomkeeper,再装KAFKA,如 https://blog.csdn.net/zhangcongy ...
- Windows平台整合SpringBoot+KAFKA__第2部分_代码编写前传
开始准备写测试代码 看半天不太懂(我也算是小白级别的,看我搞windows版本的kafka就知道了), 看文档无聊,偶然看到一个KAFKA的windows管理程序,于是就试试就装了一个,感觉那个玩意也 ...
随机推荐
- linux实践之程序破解
linux实践之程序破解 这次的实践是文件破解,让我们从login可执行文件开始吧! 首先我们执行一下这个可执行程序 ①我们希望在不知道密码的情况下,能够登陆进去.且无论密码是什么,都是提示“on y ...
- Linux从零单排(一):Google Chrome的安装
刚刚安装了Linux ubuntu16.10系统,先装上我一直习惯用的Google Chrome 安装步骤如下: 1.终端输入 sudo wget https://repo.fdzh.org/chro ...
- 微信小程序-WXSS
WXSS(WeiXin Style Sheets)是一套样式语言,用于描述 WXML 的组件样式. WXSS 用来决定 WXML 的组件应该怎么显示. 为了适应广大的前端开发者,我们的 WXSS 具有 ...
- Ubuntu 14.04 编译安装 husky
简介 Husky是一个大数据分布式开发框架,用C++开发,因为粗粒度(coarse-grained)平台(如Spark,Hadoop,Flink)MR耗时太大,然后细粒度(fine-grained)平 ...
- Android 基于Android的手机邮件收发(JavaMail)之二( Welcome.java 和 ReceiveAndSend.java )
周末休息,这次我们继上次内容继续.上一篇内容我们讲述的是一些准备工作.下载两个javamail.jar和activation.jar文件,然后再BuildPath~ 言归正传,为了展示效果,在这里我申 ...
- shell中{}的妙用
shell中${}的妙用 1. 截断功能 ${file#*/}: 拿掉第一条/及其左边的字符串:dir1/dir2/dir3/my.file.txt ${file##*/}: 拿 ...
- php cUrl模拟登录,cookie保存到文件中
源码如下: <?php header("Content-Type:text/html;charset=utf-8"); //模拟群友通讯录手机号登录 $curl = curl ...
- 配置Openfire的eclipse项目
官方文档在这里 Install JDK Download JDK and install them. The least version should be 1.5. I use 1.6. Sorry ...
- C#下没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
C#下没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) 原因:没有原生支持64位,而是以32位兼容方式运行 解决办法:在项目属性里设置“生成” ...
- asp.net mvc 5 web api 关于Requested resource does not support options 问题
1.用visual studio 2015 建立一个 web api 应用程序.记住这是一个 web api 应用. 2.新建一个web api . 3.用C#访问,代码如下:[没有问题,返回正确] ...