Linux论坛's Archiver

《开源》旗舰电子杂志2009年第1期火热下载!

xmlinuxer 发表于 2008-9-1 15:52

CentOS平台搭建AMP环境并实现Apache与Tomcat整合

软件版本:
        Apache_2.2.9-win32-x86-no_ssl-r2.msi
        Php-5.2.6-Win32.zip
        Mysql-5.1.26-rc-win32.zip

安装目录:
        D:/xmlinux/webapp

PHP配置:

    (1)将D:"xmlinuxer"webapp"php5"目录下的libmysql.dll和php5ts.dll两个文件复制到C:"WINDOWS"system32"下;

    (2)将D:"xmlinuxer"webapp"php5"ext"目录下的php_gb2.dll、php_mysql.dll及 php_mbstring.dll复制到C:"WINDOWS"system32"下;

    (3)将D:"xmlinuxer"webapp"php5"中的php.ini-dest或php.ini-recommended重命名为php.ini复制到C:"WINDOWS"system32"下;

    (4)改配置文件php.ini,具体包括:

        i.extension_dir="/"改为 extension_dir = " F:/Program Files/PHP5.2/ext";

        ii.去掉下面三个表达式前面的“;”,改后如下:

                extension=php_gd2.dll
                extension=php_mbstring.dll
                extension=php_mysql.dll

        iii.;date.timezone =   修改为 date.timezone = PRC
            
Apache配置httpd.conf文件

    加入支持php5和mysql的代码:

        LoadFile D:/xmlinuxer/webapp/php5/libmysql.dll
        LoadModule php5_module D:/xmlinuxer/webapp/php5/php5apache2_2.dll
        PHPIniDir "D:/xmlinuxer/webapp/php5"
        AddType application/x-httpd-php .php

整合Apache & Tomcat

方案一:mod_jk模块实现

    适用于较低版本,在Apache2.2.*以后的的版本上无法成功实现Apache与Tomcat的整合,即使编译模块通过了的话(网上很多文档都是用这种方法的资料,而且都大同小异,我试过了。。。可以模块可以编译通过,但是其实根本实现不了,因为现在mod_jk模块最高版本只支持到Httpd-2.2.4版本的而已,所以对于Apache版本高一点就的话就根本没有mod_jk与之对应的模块实现)所以对此方案测试并不能成功实现。


方案二:mod_proxy代理模块实现
    Apache2.2.*以上版本本身已经支持Tomcat了,所以这里用mod_proxy来整合Tomcat
    打开httpd.conf文件,把
        LoadModule proxy_module modules/mod_proxy.so
        LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
    前面的#去掉, 并在文件最后添加
        ProxyPass / ajp://127.0.0.1:8009/
        ProxyPassReverse / ajp://127.0.0.1:8009/

    这样做的话就相当于Apache把所有80端口的请求都转发给了Tomcat的8009(ProxyPass /  ajp://127.0.0.1:8009/    ;ProxyPassReverse  /  ajp://127.0.0.1:8009/),都由Tomcat处理请求,这时的Apache只相当于一个转发器的作用,由Tomcat解析。此时要是关闭Tomcat服务,再访问还会出现503 Service Temporarily Unavailable 错误!
       
        Service Temporarily Unavailable
        The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.


    但是我们想实现的是将请求中静态的页面交给Apache处理,动态请求交给Aomcat处理。因为他们在各自的处理效率上比较高,这才是整合Apache和Tomcat的真正目的作用。

    这里要实现将html交给Apache处理,而把jsp转发给Tomcat处理。还需要多刚刚修改的httpd.conf进行完善,排除掉Tomcat对静态文件的解析过滤。
   
    即在刚刚的 ProxyPass /  ajp://127.0.0.1:8009 前面加入一行

    ProxyPass /web/ !

    插入这行配置的意思是表示/web/下的文件的请求不转发到Tomcat进行解析直接由Apache解析。此时只要把不想转发到Tomcat处理的放在Apache安装目录下\htdoc\ 下名为web文件夹里即可。


附录:

    Mod-proxy的缺点是,当其中一台tomcat停止运行的时候,apache仍然会转发请求过去,导致502网关错误。但是只要服务器再启动就不存在这个问题。如果前置Apache代理服务器停止运行,所有集群服务将无法对外提供。

    Mod-proxy优点是.可以只将Apache置于公网,节省公网IP地址资源。可以通过设置来实现Apache专门负责处理静态网页,让Tomcat专门负责处理JSP和servlet等动态请求。


参考资料:

    IBM Developer Works中关于Apache HTTP Server 与 Tomcat 的三种连接方式介绍的描述[url]http://www.ibm.com/developerworks/cn/opensource/os-lo-apache-tomcat/index.html[/url]

calm 发表于 2008-11-4 10:56

大哥, 这是CentOS平台 ?

我的CentOS平台怎么找不着D盘, 求解.......

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.