发博文
正文 字体大小:

学习ubuntu笔记04---整合apache与tomcat

(2008-08-21 16:10:56)
标签:

apache2

web服务

虚拟主机

virtualhost

proxypass

ajp

分类: 操作平台
前言:配置动态虚拟主机

  一般情况下,我们会在Web服务器上寄放多个Web站点,并且每个站点都有它自己的虚拟服务器。对于Apache来说,它同时支持基于名称的虚拟服务器和基于IP的服务器。

  对于基于IP的虚拟服务器,每个站点都具有一个单独的IP地址,这样的缺点是使用太多的IP地址,但如今IPv4的地址已有枯竭的迹象,所以不提倡使用,通常在要求使用SSL 时才使用。

  对于基于名称的虚拟服务器,多个Web站点共享一个IP地址。在这种情况下,通常根据HTTP请求头部来决定将其发给哪一个站点。为此,我们需 要为每个虚拟服务器分别建立一个配置,给作为Web站点的根的目录以及主机命名。

**********************************************************************************************

*********************************************************************************************

    备注:关于如何编译安装apache与tomcat,请参看我的另两篇博文。只所以要单独开这一篇,是因为这是我学习ubuntu的终极目的所在。就是要让它来做服务器。所以整合apache与tomcat只是迈出了第一步。接下来,关于如可优化服务器,我想把一想理论课程好好的补补之后才开博。

一、配置ProxyPass以及ProxyPassReverse规则,实现apache和tomcat的整合。

在httpd.conf最后加上:

    ProxyPass /images/ !
    ProxyPass /js/ !
    ProxyPass /css/ !
    ProxyPass / ajp://127.0.0.1:8009/
    ProxyPassReverse / ajp://127.0.0.1:8009/

前三行是表示禁止转发该路径的请求,一般来说是静态的。

后两行自然是转发所有的访问至8009也就是tomcat的ajp端口。

这样则完成了同tomcat的整合。

    值得注意的是,同tomcat的整合还有一种tomcat-connector的方式,也就是mod_jk,那种的配置更灵活,适用性更高。但是由于其复杂性(目前已经没有更新版本),同时apache2.2版本开始,自身整合了mod_proxy和 mod_proxy_ajp模块,实现了更简单的同tomcat的整合,所以建议采用这种方式了。


二、整合之后,测试
    写了一个简单的phpinfo()测试,却提示下载.......这是怎么回事呢?记得上面的ProxyPass配置不?就是这个地方了,它将所有的/的访问转到了tomcat,自然是没办法处理php的了。
    在网上也搜了一下相关的处理办法,我的想法是能够做到*.php的都不转发,然而ProxyPass好像只支持url的方式,不支持正则匹配,一般的解决办法是比如建一个php的目录,那么在ProxyPass /php !来实现对php的处理。很明显不是一个好的解决办法,如果我的php和jsp混和在一起的,从url上就不能控制了。既便分开,始终要加上一个不必要的路径以区分对php的处理,实在不爽。

    经过一番google,找到一种解决办法,那就是配置虚拟主机。

在conf最下面加:

NameVirtualHost *:80
<VirtualHost *:80>
 ServerName a.test.com
 DocumentRoot /php
 DirectoryIndex index.html index.php
 <Directory "/php">
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
 </Directory>
</VirtualHost>


<VirtualHost *:80>
        ServerName www.test.com
        DocumentRoot /www
        DirectoryIndex index.html index.jsp
        <Directory "/www">
            Options Indexes FollowSymLinks
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
        ProxyPass /images/ !
        ProxyPass /js/ !
        ProxyPass /css/ !
        ProxyPass / ajp://127.0.0.1:8009/
        ProxyPassReverse / ajp://127.0.0.1:8009/
</VirtualHost>
    这样就实现了当访问a.test.com时,apache解析php那个目录,而访问www.test.com时,解释www那个目录,并转发至tomcat。运行测试成功!

******************************************************************************************

*************************************************************************************

    以过一个多月的紧张调试,及参照一些高手的博客,GOOGLE帮忙之下,终于完成了ubuntu的配置工作。接下来的两个多月的时间,我的学习中心将放在《电子商务设计师》教程的学习之上,准备应付11月份的考试。所以会有一段时间不能及时更新博客。

    同时,我也会利用一些业余的时间,学习一些linux的理论知识。让服务器跑得更快,更安全。





阅读 评论 收藏 转载 打印举报
已投稿到:
  • 评论加载中,请稍候...

       

    验证码: 请点击后输入验证码 收听验证码

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有