历时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的最后加上

 # 设置虚拟主机,定义port为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.jspErrorLog 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># 同意client訪问此路径 <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 这个port指的是tomcat中ajp协议的port,不是我们经经常使用的那个支持http的8080。

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

另外,我的tomcat的port号改成了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
是一个非常easy的jsp
开启apache,
对了还没有说怎么开启apache服务呢。

在apache/bin下有个ApacheMonitor。

双击

选定服务后,start就可以。
然后訪问  http://localhost:81/PathTest/jsp/a.jsp
注意,我们的port号是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
  假设不是port问题的话,那么就是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行,出现了问题

上面的133行错误是什么意思呢?

给后面加上一个地址就OK

2 上面的配置中,我们在81port,訪问html,jsp,js,jpg都是没有问题的,深入甚至增加mvc框架后的.do,.action都能够正常处理。
  但是我们假设訪问的是servlet呢?
  眼下没有特别好的方法。

给httpd.conf下的VirtualHost里面加上这个
  JkMount /*/servlet/* ajp13 
  这是什么意思?

假设请求的url中间包括"servlet"这个字符,apache就把它发给tomcat。

这篇文章參考了非常多博客,详细參考信息就不一一列出了

转载于:https://www.cnblogs.com/jhcelue/p/6855532.html

tomcat整合apache相关推荐

  1. 在Linux下进行Apache+tomcat整合

    今天为大家介绍如何在Linux下进行Apache+tomcat整合,虚拟机版本是Redhat5,ip地址为192.168.1.12,实验步骤如下: 一 安装Jdk 二 安装Apache 三 安装tom ...

  2. tomcat 和apache的整合的方法及配置(一)

    一.   apache和tomcat的简介及整合的原因   整合 Apache Http Server 和 Tomcat 可以提升对静态文件的处理性能.利用 Web 服务器来做负载均衡以及容错.无缝的 ...

  3. Linux下Tomcat与Apache Web服务器的整合

    原文:http://os.51cto.com/art/200709/57327.htm ◆1.引言 基于Web技术的Internet/Intranet近年来已经得到了广泛的应用,Intranet是以T ...

  4. Linux系统下Apache与Tomcat整合

    Linux系统下Apache与Tomcat整合 1.准备,下载需要的文件. 到Apache官方网站下载所需要的文件: httpd-2.2.17.tar.gz apache-tomcat-6.0.32. ...

  5. Apache与Tomcat整合

    一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由 ...

  6. JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apache/IIS的整合)

    链接地址:http://www.cnblogs.com/dartagnan/archive/2011/03/25/2003426.html JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apa ...

  7. apache和tomcat有什么不同,为什么要整合apache 和tomcat?

    1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是A ...

  8. Apache+Tomcat整合

     所用软件: 1.httpd-2.2.22.tar.gz 2.tomcat-7.0.23.tar.gz 3.tomcat-connectors-1.2.30.tar.gz 4.jdk-6U21-i58 ...

  9. Apache HttpServer的安装并与Tomcat整合Linux 版

    这里采用的httpserver版本是2.2.22,jdk与tomcat的安装参见: http://blog.csdn.net/supercrsky/article/details/8283200 1. ...

最新文章

  1. LeetCode 98. Validate Binary Search Tree--C++解法--判断是否是BST--递归,迭代做法,中序遍历
  2. BusinessFrameWork
  3. 玩转ECS第8讲 | 服务器迁移中心SMC最佳实践及新特性介绍
  4. 538. 把二叉搜索树转换为累加树
  5. deepin linux grub,deepin linux 安装之后 引导错误 出现 grub
  6. 1-5 线性表元素的区间删除 (20 分)
  7. oldboy_09_03day
  8. Hp Dell服务器硬件监控
  9. Bootstrap 下拉菜单事件
  10. 医疗新基建,更需新安全
  11. c++调用powershell_告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始
  12. markdown语言练习
  13. pdn阻抗测试_阻抗测试基础(超详细,安捷伦工程师力作)(上篇)
  14. Opencv4.2 DNN模块 终于支持Nividia GPU了!
  15. python程序实现最大限度突破高德地图爬虫限制,包括.exe文件的编译,提供最大限度爬虫高德地图poi思路
  16. 全新的Uber App设计
  17. 智联招聘自动刷新简历软件
  18. 【CVPR2020】百度入选22篇论文涵盖全视觉领域!
  19. Elasticsearch插件之分词器
  20. Ncurses学习经历(十三)菜单系统的核心

热门文章

  1. 适用所有服务器的全站301重定向跳转教程
  2. selenium java封装_selenium2.0的初步封装(java版本)
  3. Linux笔记-解决QtCreator中qDebug不打印的问题
  4. Qt工作笔记-QString中Split与section效率实践
  5. Database工作笔记-对层次库的理解
  6. 如何在 Ubuntu 20.04 上安装 Java
  7. 32位mips运算器logisim_很多网友问32位低功耗MCU设计
  8. 有关findviewbyid 一个错误用法
  9. Android开发之高德API篇:2、高德API线路规划
  10. (数据库系统概论|王珊)第一章绪论-第三节:数据库系统的结构