Apache 与tomcat实现分布式应用部署

简介: 一:原理 tomcat是一个web应用服务器,能够解析静态文件和动态文件(如:html、jsp、servlet等);apache是一个web server,能够解析静态文件。Tomcat作为一个独立的web服务器是可以使用的,但是它对静态文件的解析能力不如apache,所以就产生现在的web应用的分布式部署,apache+tomcat。 两者之间的通信通过workers配置(由tomc

一:原理

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

请拷贝 j2sdk\lib\tools.jar 到 tomcat\common\lib下面。

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

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

从d:\server\j2sdk\jre\lib目录拷贝所有文件放到 d:\server\j2sdk\lib\ ,jre\lib 中的文件和j2sdk\lib\ 中的文件没有一个重复的,不用担心会覆盖掉j2sdk\lib 中原有的任何文件。

4.2加入mod_jk连接模块

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

4.3修改apache配置文件

    为了保持httpd.conf文件的简洁,把jk模块的配置放到单独的文件中来,就在httpd.conf中增加一行调用include “D:\server\Apache2\conf\mod_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配置apache2\conf\workers.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安装路径\conf\server.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都是开源软件,对版本搭配要求比较严格,因此一定要注意版本。

目录
相关文章
|
4月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
287 0
|
7月前
|
安全 JavaScript 前端开发
HarmonyOS NEXT~HarmonyOS 语言仓颉:下一代分布式开发语言的技术解析与应用实践
HarmonyOS语言仓颉是华为专为HarmonyOS生态系统设计的新型编程语言,旨在解决分布式环境下的开发挑战。它以“编码创造”为理念,具备分布式原生、高性能与高效率、安全可靠三大核心特性。仓颉语言通过内置分布式能力简化跨设备开发,提供统一的编程模型和开发体验。文章从语言基础、关键特性、开发实践及未来展望四个方面剖析其技术优势,助力开发者掌握这一新兴工具,构建全场景分布式应用。
693 35
|
7月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
390 41
|
7月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
510 17
|
7月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
160 18
|
6月前
|
分布式计算 Java 大数据
Java 大视界 —— 基于 Java 的大数据分布式计算在气象数据处理与天气预报中的应用进展(176)
本文围绕基于 Java 的大数据分布式计算在气象数据处理与天气预报中的应用展开,剖析行业现状与挑战,阐释技术原理,介绍其在数据处理及天气预报中的具体应用,并结合实际案例展示实施效果。
|
7月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
222 10
Java 大视界 -- 基于 Java 的大数据分布式存储在视频监控数据管理中的应用优化(170)
本文围绕基于 Java 的大数据分布式存储在视频监控数据管理中的应用展开,分析管理现状与挑战,阐述技术应用,结合案例和代码给出实操方案。
|
9月前
|
Java 网络安全 Apache
SshClient应用指南:使用org.apache.sshd库在服务器中执行命令。
总结起来,Apache SSHD库是一个强大的工具,甚至可以用于创建你自己的SSH Server。当你需要在服务器中执行命令时,这无疑是非常有用的。希望这个指南能对你有所帮助,并祝你在使用Apache SSHD库中有一个愉快的旅程!
532 29
|
11月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
162 23

热门文章

最新文章

推荐镜像

更多