Apache+Tomcat软件配置一、配置方案介绍方案一(1Apache+1Tomcat+mod_jk1.2)方案二(1Apache+NTomcat+mod_jk1.2=软负载均衡)PS:为什么要使用Apache?单独使用Tomcat做JSP服务器,在工作效率上会有问题,并且所能承受的最大并发连接数也有一定的限制;经测试,当并发连接较多时,Tomcat就会处于“僵死”状态,对后继的请求连接失去响应。所以现在就有了一些“整合”解决方案:将html与jsp的功能部分进行明确分工,让tomcat只处理jsp部分,其它的由apache,IIS等这些webserver处理,由此大大节省了tomcat有限的工作“线程”。二、软件配置说明1.方案一worker.properties-APACHEworkers.tomcat_home=/webjoin/local/tomcatworkers.java_home=/webjoin/local/java1.6ps=/worker.list=ajp13worker.ajp13.port=8009worker.ajp13.host=192.168.19.18worker.ajp13.type=ajp13httpd.conf-APACHE在virtualhost配置中通过JKMount和JKUnMount定义对于Tomcat的请求的前转规则,如:JKMount/ajp13JKUnMount/images/*ajp13在httpd.conf中还需要配置加载mod_jk模块,如:LoadModulejk_modulemodules/mod_jk.soJkWorkersFileconf/workers.propertiesJkLogFilelogs/mod_jk.logJkLogLevelinfoJkLogStampFormat[%a%b%d%H:%M:%S%Y]server.xml-TOMCAT1,Tomcat只需要在server.xml中配置应用8009的Connector,一般不需特别配置,只用确认一下就可以了,其中线程数的配置需要手工修改:Connectorport=8009maxThreads=1500minSpareThreads=125maxSpareThreads=75enableLookups=falseredirectPort=8443debug=0protocol=AJP/1.3URIEncoding=GBK/2,应用的配置在$CATALINA_HOME/conf/Catalina/localhost/xxxxx.xml文件中Contextpath=docBase=/webjoin/=0reloadable=trueLoggerclassName=org.apache.catalina.logger.FileLoggerprefix=localhost_user_log.suffix=.txttimestamp=true//Context应用应用部署在目录下,每个应用在一个子目录中,如目录。Apache的访问日志记录在/webjoin/logs/httpd/crbt目录。应用的日志路径配置在应用的web.xml文件中,一般在/webjoin/logs/webapps/xxxx目录。2.方案二以下均以1APACHE+3TOMCAT为例说明。worker.properties-APACHE与配置单一个Tomcat不同,在worker.properties中需要配置4个worker,其中3个是与sTomcat配置的连接,一个用于负载均衡。当请求某一Tomcat发生错误或者Tomcat在2分钟内没有返回任何数据时,会标志该Tomcat为异常,不再向该Tomcat发送请求。每一分钟会尝试发送请求一次检测Tomcat是否已可用,由于尝试使用是采用真实的请求去尝试,因此客户端此时会得到一次错误结果,不过由于是1分钟内的全部请求失败1次,对用户的影响很小。如下:worker.list=lbworker.tomcat1.type=ajp13worker.tomcat1.host=127.0.0.1worker.tomcat1.port=7009worker.tomcat1.lbfactor=50worker.tomcat1.reply_timeout=120000worker.tomcat1.connect_timeout=1000worker.tomcat2.type=ajp13worker.tomcat2.host=127.0.0.1worker.tomcat2.port=8009worker.tomcat2.lbfactor=50worker.tomcat2.reply_timeout=120000worker.tomcat3.connect_timeout=1000worker.tomcat3.host=127.0.0.1worker.tomcat3.port=9009worker.tomcat3.lbfactor=50worker.tomcat3.reply_timeout=120000worker.tomcat3.connect_timeout=1000worker.lb.type=lbworker.lb.balance_workers=tomcat1,tomcat2,tomcat3worker.lb.sticky_session=truehttpd.conf-APACHE将原有的JKMountxxxxajp13都修改为JKMountxxxxxlbserver.xml-TOMCAT1、将原tomcat目录拷贝为名为tomcat1、tomcat2和tomcat3的两个新的目录2、分别修改tomcat1、tomcat2和tomcat3的server.xml,修改内容如下A、修改Enginename=StandalonedefaultHost=localhost为Enginename=StandalonedefaultHost=localhostjvmRoute=tomcat1,其中jvmRoute按照实际情况填写,如tomcat1此处填tomcat1,tomcat2就填tomcat2B、修改tomcat1的各个监听端口,关闭端口修改为7005,httpd服务端口修改为7080,Ajp13Connector监听端口修改为7009C、修改tomcat2的各个监听端口,关闭端口修改为8005,httpd服务端口修改为8080,Ajp13Connector监听端口修改为8009D、修改tomcat3的各个监听端口,关闭端口修改为9005,httpd服务端口修改为9080,Ajp13Connector监听端口修改为9009E、修改部署的应用的路径,修改tomcat1、tomcat2和tomcat3的应用配置路径对应到、tomcat2和tomcat3的各个应用路径应用1、在目录下建立目录,tomcat1、tomcat2和tomcat32、将原有应用分别拷贝至、tomcat2和tomcat3目录下3、修改tomcat1、tomcat2和tomcat3下的应用的web.xml中配置的日志路径,将路径指向logs/webapps/下的tomcat1、tomcat2、tomcat3对应的应用日志目录4、在logs/webapps目录下分别建立目录tomcat1、tomcat2和tomcat3,并在分别在其下建立应用日志子目录日志Apache和Tomcat的运行日志分别在各自的目录下的logs目录。Apache的访问日志记录在/webjoin/logs/httpd/crbt目录。每个应用的日志路径配置在应用的web.xml文件中,一般在/webjoin/logs/webapps/tomcat[n]/xxxx目录,其中[n]代表1-3。3.配置详细说明Worker.properties详细配置Tomcatworker是一个Tomcat实例,正等待执行Servlets或任何其他的内容。例如,我们可以有一个Web服务器,比如Apache转发Servlet的请求转发到运行在背后Tomcat进程(worker)。上文所述的是一个很简单的场景;事实上可以配置多个Tomcatworker来服务于Servlets请求。如此配置的原因可以是:我们希望由不同的Tomcatworker来服务不同的context,因而提供一个所有开发者能够共享web服务器但拥有自己的Tomcatworker的开发环境。我们希望由不同的Tomcat进程来服务于不同的虚拟主机,因而对不同公司的站点能有一个清晰的划分。我们希望提供负载均衡,意味着在一台机器上运行多个tomcatworker,并把请求分布开来。也许更多的原因需要使用多个worker,但我猜想这份名单是足够的...Tomcatworkers定义在一个属性文件名为workers.properties中,本教程说明使用到它。配置文件的基本为Tomcatweb服务器插件定义worker可以通过属性文件来实现(propertiesfile—在conf/目录下的workers.properties文件)。Format,Comments,Whitespace格式,评论,空白文件中的每一行定义属性值。一般格式是name=value分隔点可以用作名称的一部分,并展示了配置的层次划分。无效的指示,将记录在Web伺服器启动阶段并防止Web服务器正常工作。一些指令被废弃了。虽然他们仍然会工作,你应该用他们的后继者替换他们。successors一些指令,允许多次执行。这将显示地指出在下面的表格中。在属性名称或值前后的空白将会被忽略。评论可以放置在任何位置,并以'#'开头。所有'#'后的同一行的内容将被忽略。GlobalProperties全局属性这些指令具有全局性。指令默认值描述worker.listajp13JK会使用到以逗号分隔的worker名称列表。启动时,Web服务器插件将实例化worker,并把它的名字显示在在worker.list属性中,即把请求映像到worker。这个指令可以多次使用。worker.maintain60worker连接池维持一定的间隔时间。如果设置为正数,JK将扫描所有worker.list中的连接,并检查是否有需要回收的。此外,任何一个loadbalancer都会在worker.maintain指定的时间内完成一次全局维护。在维护阶段,负载计数器会衰减并且对于存在error的worker会在recover_time被检查。此功能已添加在jk1.2.13。Worker属性每个worker的配置指令包含的3个由点分隔的字符串:worker.workername.directive=value第一个字符串总是worker。第二个字符串是worker的名称。在负载平衡时,worker的名称拥有一个额外的意义。请参考LoadBalancerHowTo.。worker的名称只可以只包含字母数字如[a-z][A-Z][0-9][_\-]并且是区分大小写的。Variables,EnvironmentVariables变量,环境变量你可以定义和使用在workers.properties文件中的变量。定义一个变量,使用如下语法:variable_name=value分隔点是允许出现在变量名称中,但你必须小心,不要使用变量名称与标准的指令名产生冲突。因此,变数名称绝不应以worker.开头。使用一个变量,你可以插入$(variable_name)在属性值那边的任何位置。如果一个变量没有被定义之前使用,我们将搜索进程环境来寻找同名的变量