Apache整合Tomcat --架构师第一

本文详细介绍了一种利用Apache和Tomcat共同搭建高效Web应用服务器的方法。通过具体步骤说明如何配置Apache作为静态内容服务器,Tomcat作为应用服务器,并实现两者的有效协同工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

这是一个通用的Web即B/S工程的架构,它由:

ü   Web Server

ü   App Server

ü   DB Server

三大部分组成,其中:

²  Web Server

置于企业防火墙外,这个防火墙,大家可以认为是一个CISCO路由器,然后在CISCO路由器上开放了两个端口为:80和443。

80端口:用于正常的http访问

443端口:用于https访问,即如果你在ie里打入https://xxx.xxx.xx这样的地址,默认

走的是443这个端口。

         WebServer专门:

用于解析HTML、JS(JavaScript)、CSS、JPG/GIF等图片格式文件、TXT、

VBSCRIPT、PHP等一切一切“静态”网页内容。

²  App Server

置于企业防火墙内,它和Web Server之间的连接必须且一定为内部IP连接。

外部IP:即Internet IP地址,我们的web服务器一般会有一个内部IP一个外部IP,因此在这里,我们的App Server没有任何外部IP,只有内部IP,所以我在这边说App Server与Web Server只能以内部IP形式连接。

打比方说我们用的是tomcat,它的端口为8080,那么这个ip地址上的8080端口只能由任何内部ip才能访问,外部的internet是访问不了的,这样做就是为了安全。

App Server用于解析我们的任何需要Java编译器才能解析的“动态”网页,其实App Server本身也能解析任何静态网页的。

那么我们这样来想一下:

我们让负责专门解析静态网页的Web Server来解析html等内容,而让App Server专门用于解析任何需要Java编译器才能解析的东西,让它们“两人”各司其职。这样作的好处:

1)    为App Server“减压”,同时也提高了performance

2)    不用再把8080这个端口暴露在internet上了,也很安全,必经我们的app server上可是有我们的代码的,就算是编译过的代码也容易被“反编译”,这是很不安全的。

3)    为将来的进一步的“集群扩展”打好了基础

²  DB Server

打比方说我们用的是Oracle,它需要通过1521与App Server进行连接是不是?那么这个1521我们称为数据库连接端口,如果把它暴露在Internet上,是不是在危险了点?就算我们的密码很复杂,但对于高明的黑客来说,要攻破你的口令也只是时间上的问题而己。

因此我们把我们的DB Server也和App Server一样,置于内网的防火墙。任何的DB连接与管理只能通过内网即在公司企业内部来访问,就是这个道理。

 

我们装有微软的IIS,这本身也是一个WebServer,那么请你将它关闭:

ControlPanel->Administrative Tools->Service,找到IISAdmin和,将它全部关闭并将启动方式设为:manual以便于不用每次重启后再要去手动关闭一下。

然后用netstat –ano找到任何还在占用80端口的程序,将它关闭掉。

 

 

这边的server name你们要填入自己的server的真实名,不能用我这个,这个servername如:shnlap93.cts.com只能够我用,这个名称是全局唯一的,和你的IP一样。

 

 

 

 

 

其实就是上述这样的一个架构,下面是原理

1)      Apache装有一个模块,这个模块叫mod_jk

2)      Apache通过80端口负责解析任何静态web内容

3)      任何不能解析的内容,用表达式告诉mod_jk,让mod_jk派发给相关的app server去解释。

通过上述的文字描述我们可以得知:

1)  我们需要在Apache中先装一个mod_jk

2)  我们需要在httpd.conf中写点表达式

下面来实现。

1)      把mod_jk-1.2.31-httpd-2.2.3.so手工copy进我们的Apache安装目录的modules目录下,这个文件的全名叫: mod_jk-1.2.31-httpd-2.2.3.so,大家可以从ftp上的“/JavaArchitect/mod_jk/”目录中获取,因为这个文件是我用C++在本地重新编译过的,网上下载的是src即源码,省去大家再去编译的时间了,而且一些其它网上下载的mod_jk.so是无法使用的。

2)      用ultraedit打开httpd.conf文件,跑到文件最后面加入以下几行:

 

 

文字:

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so

JKWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

<VirtualHost *>

ServerAdmin localhost

DocumentRoot d:/www/

ServerName localhost

DirectoryIndex index.html index.htm index.jsp index.action

ErrorLog logs/shsc-error_log.txt

CustomLog logs/shsc-access_log.txt common

 

JkMount /*WEB-INF ajp13

JkMount /*j_spring_security_check ajp13

JkMount /*.action ajp13

JkMount /servlet/* ajp13

JkMount /*.jsp ajp13

JkMount /*.do ajp13

JkMount /*.action ajp13

 

JkMount /*fckeditor/editor/filemanager/connectors/*.* ajp13

JkMount /fckeditor/editor/filemanager/connectors/* ajp13

</VirtualHost>

 

代表:

ü   Apache载入一个额外的插件,用于连接tomcat。

ü   连接时的配置参数描述位于Apache安装目录的/conf目录下的一个叫workers.properties文件中,mod_jk一般使用ajp13协议连接,使用的是tomcat的8009端口。

3)      Worker.properties文件内容如下:

workers.tomcat_home=d:/tomcat2

workers.java_home=C:/jdk1.6.32

ps=/

worker.list=ajp13

worker.ajp13.port=8009

worker.ajp13.host=localhost

worker.ajp13.type=ajp13

4)      告诉我们的Apache,哪些是要交给tomcat来解析,除此之外都由Apache本身来解析

<VirtualHost *>

ServerAdmin localhost

DocumentRoot d:/www/

ServerName localhost

DirectoryIndex index.html index.htm index.jsp index.action

ErrorLog logs/shsc-error_log.txt

CustomLog logs/shsc-access_log.txt common

 

JkMount /*WEB-INF ajp13

JkMount /*j_spring_security_check ajp13

JkMount /*.action ajp13

JkMount /servlet/* ajp13

JkMount /*.jsp ajp13

JkMount /*.do ajp13

JkMount /*.action ajp13

 

JkMount /*fckeditor/editor/filemanager/connectors/*.* ajp13

JkMount /fckeditor/editor/filemanager/connectors/* ajp13

</VirtualHost>

 

大家看到没,所有的/servlet/*都由tomcat负责解析,所有的jsp, .do, .action都由tomcat解析。

此处还有一个特殊的/fckeditor,这个是我们使用的一个博客编辑器,这个因为是servlet的,因此也需要交给tomcat铁析。

5)      将/cbbs工程布署到tomcat的webapps目录下

6)      将/cbbs同样手工copy一份到d:/www目录下

7)      删除d:/www/cbbs/WEB-INF这个目录,嘿嘿,因为d:/www下的东西是由Apache解析的,所有的WEB-INF下的都是Java,我们只需要布署在tomcat下即可,是不是?

8)      重启tomcat,重启Apache,在ie中直接输入: http://localhost/cbbs,使用sally/abcdefg登录,操作一下,一切成功

Oh…yeah, tomcat+apache一步搞定。

三、用于实验的cbbs工程配置

最后附上cbbs布署需要用到的配置,相关的工程可通过ftp” /Java Architect/Project/”下的cbbs.zip来获取。

ü   在tomcat中打开server.xml加入:

<Resource

driverClassName="oracle.jdbc.OracleDriver"

factory="org.apache.commons.dbcp.BasicDataSourceFactory"

maxActive="25" maxIdle="100" maxWait="5000" name="jdbc/eltds"

password="xxx"

type="javax.sql.DataSource"

url="jdbc:oracle:thin:@10.225.101.51:1521:jcoedb1"

         username="xxx"/>

<Context crossContext="true" docBase="D:/upload" path="/uploadpic" reloadable="true"/>

<Context docBase="cbbs" path="/cbbs" reloadable="true"/>

ü   手工在d盘根目录建立一个upload目录,在此目录内再建立一个image目录。

ü   在tomcat中打开context.xml加入

<ResourceLink   name="jdbc/cbbsds"   type="javax.sql.DataSource"   global="jdbc/cbbsds"/>

 

 

资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在 IT 领域,文档格式转换是常见需求,尤其在处理多种文件类型时。本文将聚焦于利用 Java 技术栈,尤其是 Apache POI 和 iTextPDF 库,实现 doc、xls(涵盖 Excel 2003 及 Excel 2007+)以及 txt、图片等格式文件向 PDF 的转换,并实现在线浏览功能。 先从 Apache POI 说起,它是一个强大的 Java 库,专注于处理 Microsoft Office 格式文件,比如 doc 和 xls。Apache POI 提供了 HSSF 和 XSSF 两个 API,其中 HSSF 用于读写老版本的 BIFF8 格式(Excel 97-2003),XSSF 则针对新的 XML 格式(Excel 2007+)。这两个 API 均具备读取和写入工作表、单元格、公式、样式等功能。读取 Excel 文件时,可通过创建 HSSFWorkbook 或 XSSFWorkbook 对象来打开相应格式的文件,进而遍历工作簿中的每个 Sheet,获取行和列数据。写入 Excel 文件时,创建新的 Workbook 对象,添加 Sheet、Row 和 Cell,即可构建新 Excel 文件。 再看 iTextPDF,它是一个用于生成和修改 PDF 文档的 Java 库,拥有丰富的 API。创建 PDF 文档时,借助 Document 对象,可定义页面尺寸、边距等属性来定制 PDF 外观。添加内容方面,可使用 Paragraph、List、Table 等元素将文本、列表和表格加入 PDF,图片可通过 Image 类加载插入。iTextPDF 支持多种字体和样式,可设置文本颜色、大小、样式等。此外,iTextPDF 的 TextRenderer 类能将 HTML、
资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 VESA DSC(Display Stream Compression)是由视频电子标准协会(Video Electronics Standards Association)推出的一种高效低延迟的图像数据压缩技术,主要用于缓解高分辨率、高刷新率显示系统中显示接口的数据传输压力。它在不降低画质的前提下,可显著降低带宽需求,从而提升显示系统性能。VESA DSC有多个版本,从 v1.1 到 v1.2b,每个版本都对前一版本进行了改进和优化,比如修复错误、提升性能或增强兼容性。其中,v1.1 是基础版本,v1.2 系列则是对原始规范的逐步完善,v1.2a 和 v1.2b 通常是针对特定问题或新需求的微调版本。 DSC 压缩规格说明书详细介绍了 DSC 的工作原理、编码流程、解码算法以及与显示系统的接口规范,涵盖以下关键点:1. 压缩算法:DSC 结合了熵编码和预测编码,通过预测连续像素间的差异来减少传输信息量,其中熵编码单元(EEU)和熵解码单元(EDU)负责数据的编码和解码。2. 帧内和帧间预测:DSC 支持基于同一帧内像素信息的帧内预测,以及利用前后帧像素关系的帧间预测,从而在保持画质的同时提高压缩效率。3. 带宽管理:DSC 标准可动态调整压缩比率,以适配显示设备的实际带宽需求,确保流畅显示。4. 实时性和低延迟:DSC 设计时注重实时应用,尽可能减少压缩和解压缩过程中的延迟,这对于游戏和专业图形应用至关重要。5. 兼容性和互操作性:作为 VESA 的标准,DSC 与其他显示接口标准(如 HDMI、DP 等)兼容,保证不同设备间的互操作性。6. C Model 源码:提供的 C 模型源码是 DSC 算法的参考实现,有助于开发者理解 DSC 工作机制,用于开发 DSC 兼容的硬件或软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值