tomcat5+apache all in one

最新版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

你可能感兴趣的:(apache,tomcat,linux,jsp,配置管理)