目标
准备
Apache的根目录为: E:/Apache_Server
Web项目路径为: E:/Apache_Server/www(即Apache的DocmentRoot路径) tomcat的根目录为: E:\Apache_tomcat
127.0.0.1 one.test.com two.test.com
tomcat配置
<Connector connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443" compressableMimeType="text/html,application/xml,application/json,application/javascript,text/css,text/plain" />
(2)设置AJP端口,这里设为8009。此端口在后续需配置到Apache中, Apache通过该端口将任务转发到Tomcat
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" compressableMimeType="text/html,application/xml,application/json,application/javascript,text/css,text/plain" />
在tomcat/conf/server.xml中,在Engine节点下增加两个Host节点。Host节点中配置项目的访问域名name、项目路径docBase等信息,如下:
<Host appBase="webapps" autoDeploy="true" name="one.test.com" unpackWARs="true">
<Context path="" docBase="E:/Apache_Server/www/project_one" debug="0" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>
</Host> <Host appBase="webapps" autoDeploy="true" name="two.test.com" unpackWARs="true">
<Context path="" docBase="E:/Apache_Server/www/project_two" debug="0" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>
</Host>
Apache配置
Listen 8082
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
workers.tomcat_home=E:\Apache_tomcat
workers.java_home=D:\Java1.8\jdk
ps=/
worker.list=worker_one,worker_two worker.worker_one.port=8009
worker.worker_one.host=localhost
worker.worker_one.type=ajp13 worker.worker_two.port=8009
worker.worker_two.host=localhost
worker.worker_two.type=ajp13
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
Include conf/extra/httpd-vhosts.conf
在 conf/extra/httpd-vhosts.conf 文件中,添加虚拟主机的配置信息。用JkMount指定哪些内容将转发给Tomcat处理。
<VirtualHost *:8082>
DocumentRoot "E:\Apache_Server\www\project_one"
ServerName one.test.com
ServerAlias one.test.com JkMount /servlet/* worker_one
JkMount /*.jsp worker_one
JkMount /*.htm worker_one
JkMount /*.html worker_one
JkMount /*.do worker_one
JkMount /* worker_one <Directory "E:\Apache_Server\www\project_one">
Options -Indexes +FollowSymLinks +Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost> <VirtualHost *:8082>
DocumentRoot "E:\Apache_Server\www\project_two"
ServerName two.test.com
ServerAlias two.test.com JkMount /servlet/* worker_two
JkMount /*.jsp worker_two
JkMount /*.htm worker_two
JkMount /*.html worker_two
JkMount /*.do worker_two
JkMount /* worker_two <Directory "E:\Apache_Server\www\project_two">
Options -Indexes +FollowSymLinks +Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
配置到此就完成了。
最后,重启Tomcat、重启Apache即可
测试
1、测试jsp网页
在apache的DocmentRoot路径下,增加web.jsp文件,内容如下:
<%@page language="java" import="java.util.*" %>
Stay hungry Stay foolish !!!
Now the time is: <%out.println(new Date());%>
浏览器分别访问Apache和Tomcat:local:8081/wel.jsp、local:8082/wel.jsp,都能看到相同的运行结果,表示整合完成。
2、接口测试
在project_one项目中,增加一个接口,随便返回点东西,如下:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("application/json; charset=utf-8");
PrintWriter out = null;
try{
out = response.getWriter();
out.write("nothing!");
out.flush();
}catch(IOException e){
e.printStackTrace();
}
}
相应的web.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>testInferface</servlet-name>
<servlet-class>com.api.testInferface</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>testInferface</servlet-name>
<url-pattern>/testInferface</url-pattern>
</web-app>
布署上去之后,下面两个链接能对它进行访问,因为one.test.com指向了该项目。
http://one.test.com:8081/testinferface
http://one.test.com:8082/testinferface
而下面这两个则访问不了
http://two.test.com:8081/testinferface
http://two.test.com:8082/testinferface
Over!
Apache 与 Tomcat 整合的更多相关文章
-
Apache与Tomcat整合
Apache与Tomcat整合 一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache ...
-
Apache与Tomcat整合(转)
一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由 ...
-
linux下apache和tomcat整合
一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由 ...
-
debian下Apache和tomcat整合(使用apt工具)
最近部署web系统,需要使用tomcat处理和Apache整合使用,tomcat处理JSP,Apache处理静态资源.开始不知道怎么操作,在网上查阅资料走了很多弯路.完成时候,发现其实很简单,现将配置 ...
-
Apache和Tomcat整合(一个Apache 不同域名处理多个不同业务)
一.简介 在项目中,几乎任何一个项目都包括静态资源和动态请求两大部分.特别对于门户网站这样的项目,静态内容资源会更多,我们使用一般的 Tomcat 部署时,Tomcat 对静态资源的处理能力比较慢,至 ...
-
[WebServer] Linux下Apache与Tomcat整合的简单方法
Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由to ...
-
Apache与Tomcat整合的配置
下载jk连接器地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/ 把jk连接器即“mod_j ...
-
apache和tomcat有什么不同,为什么要整合apache 和tomcat
1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展.2. Apache和Tomcat都可以做为独立的web服务器来运行,但是Ap ...
-
Apache与Tomcat的整合
一 Apache与Tomcat比较联系 apache支持静态页,tomcat支持动态的,比如servlet等. 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由 ...
随机推荐
-
js的设计模式
<Practical Common Lisp>的作者 Peter Seibel 曾说,如果你需要一种模式,那一定是哪里出了问题.他所说的问题是指因为语言的天生缺陷,不得不去寻求和总结一种通 ...
-
常见android手机分辨率(xxhdpi,xhdpi)
手机常见分辨率: 4:3 VGA 640*480 (Video Graphics Array) QVGA 320*240 (Quarter VGA) HVGA 480*320 (Half-size V ...
-
JWT学习小结
JWT全称JSON-Web-Tokens,是一套应对Http其无状态且明文传递请求的特性的规范,保证请求的安全性.我们一般用它来在服务端和客户端之间传递用户的身份信息,实现状态保持. 1,相较于常见的 ...
-
Clinet/Server在工作线程中刷新页面数据的方法
Worker线程不能修改UI线程的状态(比如文本框里面的内容).解决的办法是写一个用来更新文本框内容的函数,然后在Worker线程里面通过BeginInvoke来利用delegate调用这个函数更新文 ...
-
ios开发GCD(2)-dispatch_semaphore_t信号量计数器
思考:现在有多个线程异步执行,我们想要同时最多只能执行2个或n个,该怎么办? dispatch_semaphore_t 看代码解析: NSLog(@"开始"); dispatch_ ...
-
php调试用的几个小方法
1.PHP把一个对象转化成json字符串 $json_string = json_encode($object, JSON_FORCE_OBJECT); json_encode($object); / ...
-
UE4随笔(一)准备过程
19号,也就是中国时间20日凌晨,虚幻4放出了"订阅制"这个重磅炸弹,估计出乎大多数人的想象,已经不止一个同事表示"自己的引擎这下没用了". 笔者前天搞定了付款 ...
-
python 判断两个列表是否有公共元素
def common_data(list1, list2): result = False for x in list1: for y in list2: if x == y: result = Tr ...
-
教你用大功率路由器覆盖3平方公里的WiFi广告
一步一步教你用大功率路由器,不需要互联网宽带,实现覆盖3平方公里的WiFi广告路由器 相信大家对WiFi广告路由器已经不再陌生了,但是广告距离太近了,用处不大.那么,有没有一种简单的办法将WiFi广告 ...
-
VMware Workstation 安装Vmware tools 是 出现vmware tools unavailable
这个问题是因为虚拟机安装的时候操作系统选择的不对,在Virtual Machine Settings中选择Options,在General中选择正确的操作系统类型 例如Guest operating ...