Apache+Tomcat整合应用及负载均衡 一(原创)

前言:这段时间要做一个项目,实现workflow的监视。服务器的架设可能就是Apache+Tomcat了,本来Tomcat可以做这些,但是考虑到学习,就用了Apache。这里不得不提一下Apache与Tomcat的区别:

Tomcat是Sun和Apache合作做出来的JSPServer,支持Servlet和JSP。Tomcat本身可以作为Web Server,当处理静态页面时,Tomcat不如Apache迅速,不像Apache一样可配置、强壮。Apache作为最流行的Web服务器功能强大、高效,但并不支持JSP及servlet,所以通常的做法是把它们整合起来,让Apache处理静态页面,而把动态页面的请求交给Tomcat处理,发挥各自的优势。通过在Apache中加载整合模块和进行设置,Apache就能够根据URL,把不属于自己的请求转给Tomcat。Apache可以配置loadbalance,使得多个Tomcat可以分担处理业务。这样apache处理一些静态页面调用,而复杂的逻辑处理,数据库处理则有多个tomcat来分担,能偶大大提高网站的处理能力。但并不是说Tomcat集群越多越好,一般不多于五个,至于为什么?请google...Apache+Tomcat整合应用及负载均衡 一(原创) - Edison - 飞


准备工作

1.JDK1.5

目前虽然JDK1.6已经出来满久了,但是大多数应用还是采用JDK1.5,为了避免兼容性问题,建议用JDK1.5

2.Apache2.0.61

作用:Web服务器

下载:http://www.apache.org/dyn/closer.cgi/httpd/binaries/win32/      (最好选择最快的mirror)

PS:虽然Apache2.2已经release,但是发现Apache2.2跟tomcat5.5的兼容性不是很好,由于现在用到的一些应用兼容的Tomcat版本不一,而5.5可以满足所有要求,所以采用与Tomcat5.5兼容的apache2.0.61

3.Tomcat5.5.25

作用:Java Web应用程序容器

下载:http://archive.apache.org/dist/tomcat

PS: 该版本能兼容目前项目里所有的应用,所以采用。注意,请下载.zip的解压缩版!因为后面要复制进行多tomcat部署!

4.mod_jk_apache_2.0.59.so

作用:Tomcat与Apache整合的一个connector

下载:http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.25/

PS:JK作为连接器对版本的兼容要求很高,由于apache2.0.61没有对应的JK,所以选择2.0.x里面最新的2.0.59版,事实证明兼容不错。下载后记得把文件名改为mod_jk.so(apache国外官网倒是没有指出,反倒是镜像站里指出来了,这点真是奇怪,呵呵)


安装:

1.安装JDK1.5  (略)

2.安装Apache

由于下载的是安装版,所以安装后直接去http://localhost:80查看

3.安装Tomcat

解压缩Tomcat到指定地点,本次试验位置为    C:\apache-tomcat-5.5.25   作为一个备份,以免出问题。

然后复制该文件夹,并重命名   C:\apache-tomcat-5.5.25Server1

再次粘贴并重命名:                  C:\apache-tomcat-5.5.25Server2

PS:如果不做双tomcat的负载均衡就没必要复制了。


整合:

1 将文件mod_jk.so拷贝到Apache的modules目录

2.在conf文件夹下创建 workers.properties文件,这个文件是为apache指出系统中跑的有几个跟它有关的server。

conf/workers.properties文件内容:

worker.list=tomcat,status


worker.tomcat.port=8009
worker.tomcat.host=localhost
worker.tomcat.type=ajp13

 

worker.status.type=status

注:

在上面内容中  ,

worker.list=*,*,*,* 

是指出有几个在httpd中需要用到的worker,这里的两个:一个tomcat,是使用的web应用容器;另一个status,这个是用来监控jkstatus的。jkstatus实际上使mod_jk自带的一个应用,目的是观察每个tomcat的状态,并可以在运行时设置每个tomcat的某些参数。以后可以通过

worker.tomcat.port=8009  这个显然是指明端口。

注意!

worker.tomcat.type=ajp13   

指出了用ajp13类型进行通讯,tomcat默认如果用该类型通讯端口为8009,这里这个端口一定要与/tomcat/conf/server.xml中对应的AJP1.3 connector port一致!否则apahe不能跟tomcat通讯。他们是通过这个端口进行web的通讯的。

worker.tomcat.host=localhost

这个是tomcat服务器对应的机子,如果安装在与apache不同的机子上,要使用对应tomcat机子上的IP

3.配置apahce/conf/httpd.conf文件

找到<VirtualHost>,把#去掉,改为

 <VirtualHost *:80>
    ServerAdmin admin@localhost
    DocumentRoot "C:\apache-tomcat-5.5.25\webapps\ROOT"
    ServerName localhost
    ErrorLog logs/localhost-error_log
    CustomLog logs/localhost-access_log common
    Alias /jsp-examples "C:\apache-tomcat-5.5.25\webapps\jsp-examples"
    Alias /servlets-examples "C:\apache-tomcat-5.5.25\webapps\servlets-examples"
    Alias /xplanner "C:\Project\xplanner"

    JkMount /xplanner tomcat
</VirtualHost>

注:  ServerAdmin      这个是admin的邮箱

         DoucmentRoot   这个是当前这个VH的根路径

         ErrorLog             这个是记录error的log的位置

         Alias                    这个是进行别名重定义操作,即某个文件夹不存在于前面设置的根目录(DocumentRoot)下,当通过80端口需要去找这个文件夹时,自动的去根据后面的参数找。但前提是Tomcat已经编译好该文件夹!/jsp-exampoles  这个是Tomcatwebapps下面的jsp例子的文件夹。当用户从80端口访问时,如果不加别名,在点击jsp-examples时是找不到这个页面的。

PS: 后面的 Alias /xplanner 这个是我项目的一个应用,不需要加。这里我只是拿来当个例子,在后面就不需要改这里了。

JkMount /xplanner tomcat 就是把/xplanner下的所有文件都交给名为tomcat的worker去处理(与workers.properties里面的worker名一致)

OK,继续在conf/httpd.conf末尾增加:

 LoadModule jk_module modules/mod jk_so

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel info

JkMount /*.jsp tomcat

JkMount /*.jspx tomcat

JkMount /*.servlet tomcat

JkMount /servlet/* tomcat

JkMount /jkstatus status

DirectorIndex index.html index.htm index.jsp

注: LoadModule  是用来读取模块,这里是读取的JK

        JkLogFile       是指出存放JK的log文件地址

        JkLogLevel     是指出log级别,有 info、debug、error三个级别,但是也有看到warn的

        JkMount /*.jsp  tomcat 是把.jsp文件映射到jk连接器上交给名为tomcat的worker去处理

        JkMount /jkstatus status 是调用查看status的模块

        DirectorIndex index.html index.htm index.jsp 是指出目录文件类型,apache不会自动识别index文件,这里指出来,这样用户直接敲击目录名,就会自动显示index的内容

        当然,这部分代码也可以另外写一个.conf文件,在httpd.conf里面用一个Include 就行了。

保存文件后,重新启动apache和tomcat,分别进入http://localhost:80http://localhost:8080 看到内容一致说明整合成功!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值