tomcat整合apache

历时4个多小时,终于把tomcat与apache整合起来了。

中间出了各种各样的问题,现记录一下,也希望能对后来者有点帮助。

背景

apache与tomcat的区别联系大家都知道:

tomcat能处理jsp页面,也能处理html页面

apache只能处理静态资源,如html页面,图片,js等等,而且apache处理html页面比tomcat处理html的速度快。

那为了提升整个系统的访问速度。

我们就把apache与tomcat整合到一起,我们发的所有请求都是先给apache,如果具体的请求是html(还包括.jpg,.js等静态资源)就直接让apache处理,如果是jsp或servlet等动态信息,就交给tomcat处理。

下载与安装

jdk 1.7

tomcat 6  (tomcat7在整合中似乎有些问题,大家就用tomcat6吧)

apache 2.2.4

mod_jk 这就是把apache无法处理的动态请求发送给tomcat的东西。 这里要注意,mod_jk的版本一定要与apache的版本匹配

我建议大家就直接在百度上搜 "mod_jk-1.2.26-httpd-2.2.4" 或者去http://download.csdn.net/download/wng1978/6708623 这里直接下载

我一直强调版本问题,就是因为我自己下载的各种组件的版本不匹配,中间浪费了很多时间。

因此,我再说句题外话

大家在新接触一个东西时,特别是还处在搭环境的阶段的时候,下载的各个组件最好就按照你所阅读的那个文章所说的版本,这样至少不会出现版本冲突的问题。

初学者,一旦碰到这种版本问题,是很打击积极性的。

整合

mod_jk

解压缩mod_jk-1.2.26-httpd-2.2.4.rar,得到mod_jk-1.2.26-httpd-2.2.4.so,将它改名为mod_jk.so后放到apache的安装目录下的modules中。

编辑apache/conf/httpd.conf文件

找到Listen 80这一行( ctrl+f )修改为 Listen 81

在httpd.conf的最后加上

 # 设置虚拟主机,定义端口为81
 <VirtualHost 127.0.0.1:81>
     ServerName 127.0.0.1
     #定义服务名称 E:/apache-tomcat-6.0.44-8500/webapps 是我的tomcat的位置
     DocumentRoot "E:/apache-tomcat-6.0.44-8500/webapps"
     #定义站点项目所在路径,把路径指向 tomcat 中的默认网站目录
     DirectoryIndex index.html index.htm index.jsp
     ErrorLog logs/shsc-error_log.txt

     ##下面例子中的ajp13,请大家记住,后面咱们还要用
     CustomLog logs/shsc-access_log.txt common
     #例子1,让 Apache 支持对webapps/sun.shop/blog 中页面传送
     JkMount /sun.shop/blog/* ajp13
     #例子2,向Apache请求此文件夹内页面时,系统将转向用Tomcat解析
     JkMount /*.jsp ajp13

     #例子4,向 Apache 请求jsp页面时,用 Tomcat 进行解析
     JkMount /*.do ajp13
     #例子5,向 Apache 请求.do 动作时, 用 Tomcat 进行解析
     JkMount /*.action ajp13
     #例子6,向 Apache 请求 .action 动作时, 用 Tomcat 进行解析

 </VirtualHost>

 # 允许客户端访问此路径
 <Directory "E:/apache-tomcat-6.0.44-8500/webapps">
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
 </Directory>  

说实话,我不知道Directory后面那个目录与virtualhost里面那个documentroot中的目录有什么区别联系

目前,我设置这个两个路径一直,都是tomcat下的webapps

到这一步后,我们先检查一下,apache是否已经安装好了。

检查

我已经在E:/apache-tomcat-6.0.44-8500/webapps 下部署了一个叫PathTest的项目,根目录下有个index.html文件。

http://localhost:81/PathTest/

在浏览器中输入上面的地址。

换一个地址

如果你的浏览器也能出现类似上面的效果,说明apache本身已经安装好了。

连接tomcat

将apache连接到tomcat上

再给httpd.conf后面加上以下内容

 LoadModule jk_module modules/mod_jk.so
 # 此处 mod_jk.so 文件为你下载的文件
 JkWorkersFile "E:/apache-tomcat-6.0.44-8500/conf/workers.properties"
 # 指定tomcat监听配置文件地址
 JkLogFile "E:/apache-tomcat-6.0.44-8500/logs/mod_jk2.log"
 # 指定日志存放位置
 JkLogLevel info

上面tomcat的地址大家根据自己的改动一下即可。

设定tomcat

设定tomcat那边如何接受apache的请求。

在上一步里我们有这样的配置

JkWorkersFile "E:/apache-tomcat-6.0.44-8500/conf/workers.properties"

在那么去tomcat的conf目录下看看,并没有workers这个文件,怎么办?新建一个就可以了嘛。并写入如下内容:

workers.tomcat_home=E:\apache-tomcat-6.0.44-8500 #让mod_jk模块知道Tomcat的位置
workers.java_home=C:\Program Files\Java\jre7 #让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 #代理数,不用修改

大家看这一行

worker.list=ajp13 #模块版本

这个ajp13和httpd.conf中的 JkMount /sun.shop/blog/* ajp13 的ajp13 是对应的

你把两处的ajp13改成"mytomcat"也是可以的。

还有 worker.ajp13.port=8009 这个端口指的是tomcat中ajp协议的端口,不是我们经常用的那个支持http的8080。

换句话说这个8009,最好就不要改。

另外,我的tomcat的端口号改成了8500。

在什么地方改?

在tomcat/conf/server.xml下

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

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

8500与8009分别支持两种协议。

OK,现在我们试一试。

开启tomcat,访问 http://localhost:8500/PathTest/jsp/a.jsp

是一个很简单的jsp

开启apache,

对了还没有说怎么开启apache服务呢。

在apache/bin下有个ApacheMonitor。双击

选定服务后,start即可。

然后访问  http://localhost:81/PathTest/jsp/a.jsp

注意,我们的端口号是81,是访问apache的。

apache看到请求的地址是jsp,就通过JkWorkersFile找到apache后面的tomcat,tomcat处理后,再把结果给apache,然后apache再给浏览器。

如果http://localhost:81/PathTest/jsp/a.jsp 和 http://localhost:8500/PathTest/jsp/a.jsp 的返回结果一样。

就说明apache与tomcat整合完毕。

可能出现的问题

1 启动apache的时候 弹出这个错误 the requested operation has failed

如果不是端口问题的话,那么就是httpd.conf被我们修改错了。

怎么办

命令行内进入安装目录apache\bin,使用命令httpd -t,然后出现“Syntax error on line 133 of E:/apache\conf/httpd.conf :ServerAdmin takes one argument, the email address of the server administrator”,看它提示信息,说明,在这个配置文件里面的133行,出现了问题

至于那一行具体有什么问题,大家接着百度即可。

2 上面的配置中,我们在81端口,访问html,jsp,js,jpg都是没有问题的,深入甚至加入mvc框架后的.do,.action都可以正常处理。

可是我们如果访问的是servlet呢?

目前没有特别好的方法。

给httpd.conf下的VirtualHost里面加上这个

JkMount /*/servlet/* ajp13

这是什么意思?

如果请求的url中间包含"servlet"这个字符,apache就把它发给tomcat。

这篇文章参考了很多博客,具体参考信息就不一一列出了

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-11 18:03:24

tomcat整合apache的相关文章

在Windows XP下整合Apache+Tomcat+PHP

本篇文章主要是从安装JK插件方面来对整合Apache+Tomcat进行讲解. 以前在本机上做项目测试的时候,都是单独使用Tomcat,而没有像在服务器上一样用Apache+Tomcat这样的配置.但是整合Apache+Tomcat的好处人尽皆知.为什么我们不来试一试呢? 其实刚开始的时候并不是为了整合Apache和Tomcat而整合的,因为之前在我的PC机上根本就没 有装Apache,一个机缘--公司需要帮别人维护一个用PHP写的项目,于是为了测试PHP,所以我在PC机上装了个Apache,并安

[WebServer] Linux下Apache与Tomcat整合的简单方法

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也翻译成serv

apache+tomcat整合

一 .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

apache与tomcat整合

一.准备所需软件包: 二.安装源码编译环境所需软件包: 三.http安装: 四.jdk安装配置: 1.安装jdk: 2.移动jdk目录:   3.添加java环境变量,vim  /etc/profile,在末尾出添加如下内容: 4.使java环境变量生效: 五.tomcat安装: 六.编译mod_jk模块: 七.测试tomcat能否正常工作: 1.启动tomcat: 2.测试,如果出现如下,表示tomcat正常: 八.apache与tomcat整合: 1.建立mod_jk.conf配置文件,vi

在CentOS下企图整合Apache和Tomcat依然失败

环境: 主要参考:CentOS环境下整合Apache和Tomcat 结果: 仍然无效,主要因为在httpd.conf中加入Include /etc/httpd/mod_jk.conf这句后,httpd无法启动.具体怎么修改还在找原因.

Apache与Tomcat整合(转)

一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的. apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理. apache是web服    Options Includes FollowSymLinks    Allow

整合apache和tomcat构建Web服务器

一.  apache与tomcat整合的必要性 Apache是最流行的Web服务器,开放源代码,支持跨平台的应用(可以运行在几乎所有的Linux.Unix.Windows系统平台上),尤其对Linux的支持相当完美. apache的优点有: 1.功能强大,apache自带了很多功能模块,可根据需求编译自己需要的模块. 2.配置简单,apache的配置文件非常简单,通过简单的配置可实现强大功能. 3.速度飞快,apache处理静态页面文件效率非常高,可以应对大并发和高负荷访问请求. 4.性能稳定,

为什么要整合apache 和tomcat?

转自: https://zhidao.baidu.com/question/94817329.html 1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是Apache不能解释java程序(jsp,serverlet). 3. Apache是普通服务器,本身只支持html即普通网页.不过可以通过插件支持php,还可以与Tomcat连通(单向Apache

debian下Apache和tomcat整合(使用apt工具)

最近部署web系统,需要使用tomcat处理和Apache整合使用,tomcat处理JSP,Apache处理静态资源.开始不知道怎么操作,在网上查阅资料走了很多弯路.完成时候,发现其实很简单,现将配置过程记录如下. 1.安装软件 使用apt工具(本人是比较懒的,有自动化工具可以用,何乐而不为呢)安装Apache.tomcat以及Apache Connector(jk模块),jk模块用于Apache和tomcat直接的交互. 命令如下: apt-get install apache2 tomcat