历时4个多小时,终于把tomcat与apache整合起来了。
中间出了各种各样的问题,现记录一下,也希望能对后来者有点帮助。
因此,我再说句题外话
大家在新接触一个东西时,特别是还处在搭环境的阶段的时候,下载的各个组件最好就按照你所阅读的那个文章所说的版本,这样至少不会出现版本冲突的问题。
初学者,一旦碰到这种版本问题,是很打击积极性的。解压缩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中。
在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本身已经安装好了。
再给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那边如何接受apache的请求。
在上一步里我们有这样的配置
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 #代理数,不用修改
<Connector port="8500" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
命令行内进入安装目录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行,出现了问题
给后面加上一个地址就OK
2 上面的配置中,我们在81端口,访问html,jsp,js,jpg都是没有问题的,深入甚至加入mvc框架后的.do,.action都可以正常处理。如果请求的url中间包含"servlet"这个字符,apache就把它发给tomcat。
这篇文章参考了很多博客,具体参考信息就不一一列出了