最新版整合Apache2.2.9和Tomcat6.0.18
2009-02-04 13:58
363 查看
因为复杂度太高而备受职责的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.9.tar.gz
解压缩
tar fvxz httpd-2.2.9tar.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-------------------------------------------------
北回归线社区门户Ju a4e%As`*m
cd httpd-2.2.6
,H9FH Q&V$LHh8x0./configure --prefix=[path] / //apache放的地方 如果不指定路径的话
//默认路 径是/usr/local/apache2北回归线社区门户 S4c,lGluB
--enable-so / //这是告诉apache启用加载共享模块的功能。北回归线社区门户g$|#^.w5f9X5]$d,Y
--with-mpm=worker / //这是告诉apache使用称为worker的多线程处理模块
q3I$`~Y8`)D0[other options]北回归线社区门户!]j_0[qC5m'mS
make //进行编译
~^;a0]
s0make install //进行安装
l`XxVCdfLo@mg0../apache/bin/apachectl start //启动apache服务
-------------------------------------配置php----------------------------------------------------
cd php-5.2.5北回归线社区门户qu(C9`6N5^
./configure --prefix=[path] / //设置PHP5 的安装路径。
W0@2FrV6q[ p0--with-mysql=../mysql / ////变量激活regularMySQL扩展功能。
_*C%@"e%wlx0--with-apxs2=../apache/bin/apxs / //告诉PHP查找Apache 2.0的地方。
(}J7n3yo/ ],Nq2W0--with-mysql-sock=../mysql/var/mysql.sock / 北回归线社区门户QXn6n�v H/d
--with-mysqli=../mysql/bin/mysql_config //变量激活新增加的MySQL功能
-y$o&G1l:N5q0make北回归线社区门户$V.w ?�Y[8F
w/h
make install 北回归线社区门户*d�IoRx/%O
cp php.ini-dist ../php/lib/php.ini //将配置文件放到默认位置
8NA1F6lgdB
c0-------------------------------------php整合到apache------------------------------------------------
kbn,gS} B.O
v0打开httpd.conf文件,在LoadModule和AddType项后面加入北回归线社区门户)/"fh{
YL*Gp9t
LoadModule php5_module modules/libphp5.so
F"V+R-{/X1vYm.y8~
R0AddType application/x-httpd-php .php
如果你修改了php.ini文件里的配置,一定要记得重启apache 因为php是作为apache的模块被加载进去的。
------------------------------apache+mysql自启动--------------------------------------------
cp support-files/mysql.server /etc/rc.d/init.d/mysqld北回归线社区门户7_z,h4V%_
chkconfig --add mysqld
这样就可以实现mysql的自启动 你可以在ntsysv中查看
上面这种方法对apache是没用
下面这种方法比较使用:直接在/etc/rc.d/rc.local加入两句话来实现apache+mysql自启动
/usr/local/mysql/share/mysql/mysql.server start
5Au%B:t)oF5X*j0/usr/local/apache2/bin/apachectl start
在我这里,该问题出现在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
本文虽然专门介绍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.9.tar.gz
解压缩
tar fvxz httpd-2.2.9tar.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-------------------------------------------------
北回归线社区门户Ju a4e%As`*m
cd httpd-2.2.6
,H9FH Q&V$LHh8x0./configure --prefix=[path] / //apache放的地方 如果不指定路径的话
//默认路 径是/usr/local/apache2北回归线社区门户 S4c,lGluB
--enable-so / //这是告诉apache启用加载共享模块的功能。北回归线社区门户g$|#^.w5f9X5]$d,Y
--with-mpm=worker / //这是告诉apache使用称为worker的多线程处理模块
q3I$`~Y8`)D0[other options]北回归线社区门户!]j_0[qC5m'mS
make //进行编译
~^;a0]
s0make install //进行安装
l`XxVCdfLo@mg0../apache/bin/apachectl start //启动apache服务
-------------------------------------配置php----------------------------------------------------
cd php-5.2.5北回归线社区门户qu(C9`6N5^
./configure --prefix=[path] / //设置PHP5 的安装路径。
W0@2FrV6q[ p0--with-mysql=../mysql / ////变量激活regularMySQL扩展功能。
_*C%@"e%wlx0--with-apxs2=../apache/bin/apxs / //告诉PHP查找Apache 2.0的地方。
(}J7n3yo/ ],Nq2W0--with-mysql-sock=../mysql/var/mysql.sock / 北回归线社区门户QXn6n�v H/d
--with-mysqli=../mysql/bin/mysql_config //变量激活新增加的MySQL功能
-y$o&G1l:N5q0make北回归线社区门户$V.w ?�Y[8F
w/h
make install 北回归线社区门户*d�IoRx/%O
cp php.ini-dist ../php/lib/php.ini //将配置文件放到默认位置
8NA1F6lgdB
c0-------------------------------------php整合到apache------------------------------------------------
kbn,gS} B.O
v0打开httpd.conf文件,在LoadModule和AddType项后面加入北回归线社区门户)/"fh{
YL*Gp9t
LoadModule php5_module modules/libphp5.so
F"V+R-{/X1vYm.y8~
R0AddType application/x-httpd-php .php
如果你修改了php.ini文件里的配置,一定要记得重启apache 因为php是作为apache的模块被加载进去的。
------------------------------apache+mysql自启动--------------------------------------------
cp support-files/mysql.server /etc/rc.d/init.d/mysqld北回归线社区门户7_z,h4V%_
chkconfig --add mysqld
这样就可以实现mysql的自启动 你可以在ntsysv中查看
上面这种方法对apache是没用
下面这种方法比较使用:直接在/etc/rc.d/rc.local加入两句话来实现apache+mysql自启动
/usr/local/mysql/share/mysql/mysql.server start
5Au%B:t)oF5X*j0/usr/local/apache2/bin/apachectl start
解决apache “internal dummy connection ”的办法 | |
解决办法是:
配置的时候,采用-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
相关文章推荐
- 最新版整合Apache2.2.9和Tomcat6.0.18 集群和负载均衡
- 最新版整合Apache2.2.9和Tomcat6.0.18
- 最新版整合Apache2.2.9和Tomcat6.0.18 集群和负载均衡
- 最全最新最完整的Windows下Apache与Tomcat的整合
- apache整合tomcat之最新终极教程
- Apache2.2.6整合Tomcat6.0.18 (绝对实践过)
- 最新apache2.2.11 + tomcat6.0.20 整合
- 最新版本整合:JDK Apache PHP Tomcat MySQL2011
- 最新版 apache_2.2.11 与 apache-tomcat-6.0.18 集成方案
- Tomcat6.0.18-apache2.2整合总结
- apache2.2.14 ,Tomcat6.0.18 整合
- 最新版Apache2.2与Tomcat的整合指南
- 最新版 apache_2.2.11 与 apache-tomcat-6.0.18 集成方案
- Apache整合Tomcat的相关问题
- apache和tomcat有什么不同,为什么要整合apache 和tomcat?
- Linux系统下Apache与Tomcat整合的简单方法 ZT
- apache和tomcat整合很奇怪的问题
- 整合apache和tomcat构建Web服务器
- Apache与Tomcat的安装与整合
- Linux下apache httpd+tomcat整合步骤