zoukankan      html  css  js  c++  java
  • 利用Apache和Tomcat实现分布式服务器

    一:原理

    tomcat是一个web应用服务器,能够解析静态文件和动态文件(如:html、jsp、servlet等);apache是一个web server,能够解析静态文件。Tomcat作为一个独立的web服务器是可以使用的,但是它对静态文件的解析能力不如apache,所以就产生现在的web应用的分布式部署,apache+tomcat。

    两者之间的通信通过workers配置(由tomcat使用Server.xml中的Connector标签定义端口port和协议 protocol,workers.properties文件中定义端口、协议、tomcat服务器地址);由mod_jk模块负责两者通信的处理。通信 协议有很多,其中jk2已经被抛弃了,现在就用jk就好了。

    整个过程其实就是让apache的httpd.conf文件调用mod_jk.conf,mod_jk.conf调用workers.properties,最后配置虚拟主机。

    二:文件说明

    mod_jk.conf

    主要定义mod_jk模块的位置以及mod_jk模块的连接日志设置,还有定义worker.properties文件的位置。

    worker.properties

    定义worker的参数,主要是连接tomcat主机的地址和端口信息。如果Tomcat与apache不在同一台机器上,或者需要做多台机器上tomcat的负载均衡只需要更改workers.properties文件中的相应定义即可。

    三:软件版本说明

    Jdk1.4.2_08(1.5也可以,把JRE装在JDK目录下)

    tomcat 5.0.、5.5

    apache apache_2.0.55-win32-x86-no_ssl.msi

    mod_jk_1.2.6_2.0.50.dll(要根据apache版本确认)

    把上面所有组件都安装到D:Server目录下,这样也方便日常管理配置和将来移植到别的服务器上去

    JAVA_HOME java安装路径

    TOMCAT_HOME tomcat安装路径

    APACHE_HOME apache安装路径

    四:操作步骤

    4.1软件安装

        按顺序安装Jdk1.5、tomcat、apache

        可能遇到的问题

    问题1: 在解析JSP页面时,提示无法找到java compiler

    请拷贝 j2sdklib ools.jar 到 tomcatcommonlib下面。

    使用tomcat作为service启动后总是这样,当然用startup.bat脚本启动倒是完全正常。主要原因分析起来是以service方式启动的Tomcat无法读取JAVA_HOME 和CLASS_PATH等环境变量。

    问题2:如何解决通过服务方式启动tomcat时log中提示ZoneInfo:d:serverj2sdklibzioneInfoMappings(系统找不到指定的路径。)

    从d:serverj2sdkjrelib目录拷贝所有文件放到 d:serverj2sdklib ,jrelib 中的文件和j2sdklib 中的文件没有一个重复的,不用担心会覆盖掉j2sdklib 中原有的任何文件。

    4.2加入mod_jk连接模块

    拷贝mod_jk_1.2.6_2.0.50.dll到APACHE_HOMEapache2modules文件夹下,并重命名为mod_jk.dll

    4.3修改apache配置文件

        为了保持httpd.conf文件的简洁,把jk模块的配置放到单独的文件中来,就在httpd.conf中增加一行调用include “D:serverApache2confmod_jk.conf”

    4.4配置mod_jk.conf

    下面是mod_jk.conf的文件内容,根据项目实际情况进行修改(照做就可以了)

    # Load mod_jk module

    LoadModule jk_module modules/mod_jk.dll

    # Where to find workers.properties

    JkWorkersFile conf/workers.properties

    # Where to put jk logs

    JkLogFile logs/mod_jk.log

    # Set the jk log level [debug/error/info]

    JkLogLevel info

    # Select the log format

    #JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

    # JkOptions indicate to send SSL KEY SIZE,

    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

    # JkRequestLogFormat set the request format

    #JkRequestLogFormat "%w %V %T"

    # Send servlet for context /examples to worker named ajp13

    #JkMount /servlet/* ajp13

    # Send JSPs for context /examples to worker named ajp13

    JkMount /*.jsp ajp13

    JkMount /*.do ajp13

    JkMount /*/*.do ajp13

    上面这一行我们设置了了 /*.jsp ajp13 就是说把所有.jsp结尾的文件都由ajp13这个worker交给tomcat处理了

    4.5配置apache2confworkers.properties

    worker.list=ajp13

    worker.ajp13.port=8009

    worker.ajp13.host=localhost  #本机,若上面Tomcat主机不为localhost,作相应修改

    worker.ajp13.type=ajp13  #类型

    worker.ajp13.lbfactor=1  #代理数,不用修改

    4.6虚拟主机的配置

    举例配置2个vhost网站 一个是 localhost ,另一个是 www.ok.com
    当然www.ok.com 是虚拟的,本地测试时,应该修改系统中的hosts文件,添加一行 127.0.0.1  www.ok.com

    NameVirtualHost *:80

    <VirtualHost *:80>

    ServerAdmin webmaster@localhost

    DocumentRoot "C:/tomcat-5.5.9/webapps/jsp-examples/"

    ServerName localhost

    ErrorLog logs/localhost-error_log

    CustomLog logs/localhost-access_log common

    </VirtualHost>

    <VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot D:/projectTest/

    ServerName 192.168.5.220

    ErrorLog logs/ok.com-error_log

    CustomLog logs/ok.com-access_log common

    <Location /server-status>           # 这样我可以看到apache服务器状态

    SetHandler server-status

    #Order deny,allow

    #Deny from all

    #Allow from localhost

    #Allow from 192.168.5.80

    </Location>

    </VirtualHost>

    4.7虚拟主机的配置

    添加新的www.ok.com 虚拟主机,在tomcat安装路径confserver.xml的最后,找到<Engine>段,改为

    <Engine>

    <Host name=”localhost” ……>

    </Host>

    <Host name="www.ok.com" debug="0" appBase="D:/server/www/" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

    <Context path="" docBase="." />

    <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="ok.com_log." suffix=".txt" timestamp="true" />

    </Host>

    </Engine>

    五:结语

       因tomcat、apache都是开源软件,对

  • 相关阅读:
    第四次上课 PPT作业
    大道至简 读后感④
    第三次上课 PPT 课后测试
    大道至简 读后感③
    Java 02 课后作业
    Java 多个数字相加算法
    大道至简 读后感②
    wpf控件
    一个简单的prism mef例子
    c#弱事件(weak event)
  • 原文地址:https://www.cnblogs.com/srluv/p/tomcat.html
Copyright © 2011-2022 走看看