最新版Apache2.2与Tomcat的整合指南 |
回复 |
|
因为复杂度太高而备受职责的JK2因为开发人员太少而停止了,JK也一年多没更新了。但不要紧,最新版的Apache2.2中,集成了对tomcat支持的ajp——proxy_ajp模块。
本文虽然专门介绍Linux下apache2.2的安装与配置,但配置部分和说明部分,对windows等平台也是适用的。
安装Tomcat
Tomcat的安装,请参考网上其他文章。
安装后,
确认tomcat的配置文件server.xml中,把ajp1.3链接配置打开。即Define a Coyote/JK2 AJP 1.3 Connector on port 8009部分。
运行tomcat
安装Apache
登录linux,选择一个目录,下载apache源代码:
wget
http://archive.apache.org/dist/httpd/httpd-2.2.2.tar.gz
解压缩
tar fvxz httpd-2.2.2.tar.gz
进入解压后的目录。进行配置:
./configure --prefix=/usr/apache --enable-module=most --enable-proxy --enable-proxy-ajp --enable-forward --enable-proxy-connect --enable-proxy-http --enable-so --enable-deflate --enable-headers --enable-include
上面的配置,用到了其他一些模块,说不定以后会用到,如支持ssi的include模块,但这些不是本文的重点。
编译(编译如果不成功,确认一下你的linux是否安装有编译所需要的c环境和其他需要的类库)
make
安装
make install
编辑/usr/apache/conf/httpd.conf文件,把端口改一改,一般的,改为80(别跟tomcat的端口冲突)
进入/usr/apache目录,运行apache
./apachectl -k start
运行apache后,浏览一下是否运行正常。
关闭apache
./apachectl -k stop
把apache作为linux的启动就运行服务程序
执行如下操作:
cp /usr/apache/bin/apachectl /etc/rc.d/init.d/httpd
确认linux以前安装的httpd(apache)不需要了,你可覆盖掉以前apache的httpd文件。
chkconfig --add httpd
别忘了,运行linux的setup,把httpd服务默认设定为自动运行。
到现在,你就可用另一种方式来启动、关闭apache了。如
service httpd start
配置httpd.conf方法
老生常谈,先配置文件跟路径,配置监听端口等。
下面,就说说配置proxy_ajp了。
#加载解析模块(windows下,或linux采用动态加载模式下需配置。前面我们的linux编译时把下面的模块嵌入到了apache中,所以不用再加载)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#禁止使用proxy_ajp代理的目录:
ProxyPass /images/ !
#使用proxy_ajp代理;下面的配置,是把所有目录全用代理(当然,还会跟上面的禁用配置组合成完整的规则)
ProxyPass / ajp://127.0.0.1:8009/
ProxyPassReverse / ajp://127.0.0.1:8009/
配置到现在,重启一下apache,就可通过apache来访问tomcat的服务了。
其他说明
1、apache对tomcat的支持历史:apache第2.1版本后,内置了proxy_ajp,而jk2已经没人开发了,jk则支持到apache的2.0.58版本。
proxy_ajp配置较简单,但可配置性还不如jk2,主要表现在proxy_ajp目前只支持配置到目录,还不支持对文件名称的pattern模式匹配(即还不能定义到只对jsp文件起作用)。
2、因为proxy_ajp的配置,还不支持对文件名称的pattern模式匹配,所以你要特别注意:
——尽量把jsp和静态文件和图片路径分不同的目录来管理;
——对于静态文件和图片路径,如/images,你可用“ProxyPass /images !”来禁止ProxyPass,从而来让apache来直接处理图片的请求。
——关于apache的ssi(即shtml,include)与tomcat的集成时,shtml文件不能处于ProxyPass的控制下(即不能在ProxyPass目录),而shtml调用的jsp须在ProxyPass有效控制下;
写到这里,最后感叹一声,如果proxy_ajp能支持文件名称匹配模式,那真是太完美了。期待着那一天。
解决apache “internal dummy connection ”的办法 |
回复 |
|
在我这里,该问题出现在apache2.2+tomcat 5.5的时候,apache会不断访问tomcat,如果是tomcat 4则没该问题(按楼上的配置)。
解决办法是:
配置的时候,采用-with-mpm=worker方式。
./configure --prefix=/usr/apache --enable-module=most --enable-proxy --enable-proxy-ajp --enable-forward --enable-proxy-connect --enable-proxy-http --enable-so --enable-deflate --enable-headers --enable-include -with-mpm=worker
----
another
我的运行环境:Windows2003 Server SP4 + J2SDK1.5.0 + Apache2.0.54 + Tomcat5.5.9
**准备软件:
1、安装 Apache 2.0.54
2、Tomcat 5.5.14
3、Jk2连接器(mod_jk2.so)
一:配置Apache和tomcat
Apache安装在d:\Apache2 下,监听端口 80;
Tomcat在D:\Tomcat51 下,监听端口 8080;
两者都以windows 2000服务进行安装。
将mod_jk2.so复制到d:\Apache2\modules目录下:
1.编辑d:\Apache2\conf\httpd.conf文件,在LoadModule那一段代码中添加:
LoadModule jk2_module modules/mod_jk2.so
2.将AddDefaultCharset ISO-8859-1 改为 AddDefaultCharset GB2312 使Apache自动支持中文显示;
3.在“虚拟主机配置代码段”中添加:(此段配置可以根据你的实际情况进行修改)
<VirtualHost *:80>
ServerAdmin linvsfen◎163.com
DocumentRoot "d:/ Tomcat51/webapps/jsp-examples
ServerName localhost
ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
**编写workers2.properties文件并加入d:\Apache2\conf目录,内容如下:
# Usually commented out on production environments
[logger.apache2]
file=”D:/Apache2/logs/error.log”
level=ERROR
# Provide the basic config needed
[config]
file=D:/Apache2/conf/workers2.properties
debug=1
# Provide the location of shm file on the Apache web server
[shm]
file=D:/Apache2/conf/jk2.shm
size=1000000
[channel.socket:localhost:8009]
port=8009
host=localhost
#define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Map the Tomcat examples webapp to the Web server uri space
[uri:/jsp-examples/*]
[uri:/*.jsp]
**编写一个jsp文件(sessiontest.jsp),放在d:\Tomcat51\webapps\jsp-examples 下;
重新启动以后,启动apache和tomcat,访问http://localhost/jsp-examples/sessiontest.jsp可以访问。
二.Tomcat配置上ssl步骤:
1. 生成服务器证书server02.jks和客户端证书dwp.p12
2、把server02.jks放到conf目录下,
打开d:\ tomcat51\conf\server.xml 文件,
然后修改server.xml文件,将注释掉的内容的注释去掉和增加证书存放的位置:如下:
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="conf\server02.jks" keystorePass="123456"
truststoreFile="conf\server02.jks" truststorePass="123456"/>
注:server02.jks是证书存贮文件
3. 安装客户端证书dwp.p12
3. 修改Tomcat配置,使其自动启用SSL
打开d:\test\tomcat51\webapps\jsp-examples\WEB_INF\web.xml 文件,在security-constraint 标签下,增加如下内容:
<user-data-constraint>
<description>
Constrain the user data transport for the whole application
</description>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
注释掉<auth-constraint>标签下的内容
<auth-constraint>
<!-- Anyone with one of the listed roles may access this area -->
<role-name>tomcat</role-name>
<role-name>role1</role-name>
</auth-constraint>
在web-resource-collection 标签下,增加如下内容:
<url-pattern>/*</url-pattern>
重新启动Apache和tomcat,
访问 http://localhost/jsp-examples/sessiontest.jsp是可是访问的,这是系统提示用户出示证书,启用SSL加密通道,SSL建立后,返回结果。URL变为https://localhost:8443/jsp-examples/sessiontest.jsp
分享到:
相关推荐
- **All-in-One下三种启动方式**:提供了一种简化模式下的三种启动选项。 - **安装步骤说明**:详细指导了整个安装流程。 - **安装加密服务**:确保数据的安全性。 - **安装产品**:具体安装过程。 - **安装MySQL**...
- **绿色版:** 使用 ALL in ONE 版本制作 MyEclipse 绿色版,便于携带和部署。 **1.8 运行 MyEclipse** - 完成安装后,启动 MyEclipse 并进行必要的配置。 #### 三、开发第一个 Java 应用程序 **2.1 介绍** - ...
- **ALL in ONE 版本的安装**:将下载的 MyEclipse 文件直接解压到 Eclipse 的安装目录下。 - **插件(PLUG-IN)版本的安装**:通过 Eclipse 的插件管理器安装 MyEclipse 插件。 **1.7.2.3 使用 ALL In ONE 版本...
- 使用 ALL in ONE 版本创建无需安装的 MyEclipse 绿色版。 - **运行**: - 启动 Eclipse, MyEclipse 将自动加载。 8. **解决 Eclipse 运行问题**: - 对于常见的启动失败或异常, 提供了详细的故障排除指南。 9....
- **MyEclipse6**:分为ALL in ONE版本与插件(PLUG-IN)版本两种安装方式,其中详细说明了安装步骤及运行流程。 #### 三、开发第一个Java应用程序 **1. 手工编写与运行Java程序** - 通过一个简单的示例介绍了...
如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? ...
如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? ...
如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? ...
如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? ...
如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计...
如何书写一个 one to many 配置文件. 133 11、iBatis与Hibernate有什么不同? 133 12、写Hibernate的一对多和多对一双向关联的orm配置? 134 9、hibernate的inverse属性的作用? 134 13、在DAO中如何体现DAO设计模式? ...
如何书写一个 one to many 配置文件. 122 11、iBatis与Hibernate有什么不同? 122 12、写Hibernate的一对多和多对一双向关联的orm配置? 122 9、hibernate的inverse属性的作用? 122 13、在DAO中如何体现DAO设计模式? ...