福州建设网站设计,新余网站建设找谁做,成都微信公众号制作,营销策略是什么意思1、tomcat和apache的区别与联系 1#xff09;apache是web服务器#xff0c;只支持静态网页#xff1b;tomcat支持动态的#xff0c;如servlet等。一般是用apachetomcat#xff0c;apache只是作为一个转发器#xff0c;对jsp的处理是由tomcat来处理的。 2#xff09;apac…1、tomcat和apache的区别与联系 1apache是web服务器只支持静态网页tomcat支持动态的如servlet等。一般是用apachetomcatapache只是作为一个转发器对jsp的处理是由tomcat来处理的。 2apache是普通服务器本身只支持html页面可以通过插件来支持php还可以与Tomcat连同通过apache来访问tomcat的资源从而支持asp、jsp等动态网页。 3apache和tomcat的整合使用 如果客户端请求的是静态页面则只需要apache服务器做响应如果请求的是动态页面则是tomcat服务器做响应将解析的jsp等动态网页代码解析后传回给apache服务器经由apache返回给浏览器。 为什么要这样组合呢jsp等动态网页是服务器解释的Tomcat只做动态代码解析apache回传解析好的静态代码apachetomcat整合可以减少tomcat的服务开销。 4apache是由C语言实现的支持各种模块和特性通过扩展核心功能来实现tomcat是由java开发的更好的支持servlet和jsp 5apache是web服务器web服务器传送页面使浏览器可以浏览文本服务器专门处理HTTP请求tomcat是运行在apache上的应用服务器应用服务器是通过协议来为应用程序提供商业逻辑的。 6tomcat完全可以替代apache的功能但是apcahe解析静态页面的速度很快所以在能用apache的情况下还是优先选择apache。 2、应用服务器和web服务器
应用服务器是用来处理业务逻辑的web服务器则主要是让客户可以通过浏览器进行访问处理静态页面的。web服务去通常比应用服务器简单。web服务器只提供web服务功能而应用服务器则提供整个企业级解决方案。 3、apache整体分析
1目录结构 bin - 程序命令目录 conf - 配置文件目录 http.conf主配置文件 http-autoindex.conf http-dav.confdav支持配置 httpd-languages.conf #语言支持配置 httpd-manual.conf httpd-mpm.conf #服务器池管理。如选择apache模式及配置连接数。 httpd-multilang-errordoc.conf httpd-ssl.conf #SSL支持配置 httpd-userdir.conf httpd-vhosts.conf #虚拟主机配置实例如下
NameVirtualHost *:80 #表示使用基于名称的虚拟主机配置。*表示本机所有IP可以改成具体IP
VirtualHost *:80 #定义一个虚拟主机监听本机所有IP地址的80端口
ServerAdmin webmasterdummy-host.example.com #管理员信箱
DocumentRoot /usr/local/apache-2.2.22/docs/dummy-host.example.com #站点目录
ServerName dummy-host.example.com #域名
ServerAlias www.dummy-host.example.com #别名
ErrorLog logs/dummy-host.example.com-error_log #错误日志
CustomLog logs/dummy-host.example.com-access_log common #访问日志
/VirtualHost htdocs - 编译安装时的站点目录 logs - 默认日志文件存放位置 error_log 错误日志 access_log访问日志 httpd.pid记录主进程号 modules - 模块目录各种扩展功能的插件编译后的模块都在这里
2apache的层次结构分5层结构。
● 操作系统平台功能层apache是运行在os上的应用程序必须使用os本身提供的底层功能比如进程和线程、进程和线程的通信网络套接字通信和文件操作等。但是apache是跨平台的。
● 可移植运行库层APR是os的适配层通过ARP实现apache的跨平台。不同的操作系统提供的底层API不同也就是实现同一个操作所用的函数方法不同这时在Apache和操作系统中间设计一个APR这样APR根据不同的操作系统分别实现一个相同的功能这样apache可以调用APR的提供的一个API接口。这样apache在处理与系统相关的事务时就直接去访问APR的同一api接口再由APR调用不同os的底层服务。
● 核心功能层实现apache的基本功能和核心功能包括读取和响应HTTP请求、处理HTTP协议。核心功能层包含核心程序、核心模块。 核心程序主要实现apache的基本功能启动和终止apache、处理配置文件、接受和处理HTTP连接、读取HTTP请求并对请求进行处理、处理HTTP协议 核心模块是可以有也可以没有的但是有2个模块是必须要有的mod_core 和mod_so。 mod_core负责处理配置文件中的大部分配置指令并根据这些指令运行apache mod_so负责在需要的时候动态加载其余模块缺少该模块其他模块就无法加载 关系apache最基本的核心功能由apache核心完成而核心无法提供的功能则又模块提供。
● 可选功能层Apache有很多模块包括mod_ssl mod_proxy mod_perl apache的文件都是C语言开发的如果有perl脚本写的模块必须把mod_perl 模块加载否则不能运行
● 第三方支持库apahe的一些模块会使用到第三方的开发库比如 mod_ssl 使用了 opensslmod_perl 使用了perl 开发库这些库并不属于apache是第三方库。
3apache的核心组件
包括配置文件组件http_config、进程并发组件MPM、连接处理组件http_connection、HTTP协议处理组件http_protocol、HTTP请求处理组件http_request、HTTP核心组件http_core、核心模块组件mod_core。
4apache运行流程
● 启动过程apache的启动包括两个阶段高权限启动阶段和低权限运行阶段通常称之为两阶段启动方式。
apache中的绝大部分内存都是基于内存池分配的在apache启动时必须首先初始化内存池资源然后apache会读取和解析apache的配置文件(httpd.conf) 在启动的最后阶段apache将通过调用ap_mpm_run函数并将控制权交给MPM只有当MPM执行失败或结束后才把控制权交还给主程序而且MPM在处理HTTP连接时用的权限是普通用户的权限这样会避免黑客攻击apache会获取root权限。
MPM的并发方式可通过with-mpm参数指定 prefork基于非线程模型纯进程并发没有线程适用于那些没有线程库或者不想使用线程的服务器。在所有情况下都很安全对运行非线程安全non-thread-safe模式的软件如PHP它是唯一的安全选择。prefork用当度的子进程来处理不同的请求进程间彼此独立这也使得其成为最稳定的MPM之一。确定也在于此由于每一个请求都会产生一个新的进程导致系统资源消耗很快在并发量较大的时候问题就更加突出。 worker基于线程模式在worker模式下有一个唯一的父进程控制进程这个父进程会根据需要生成若干子进程每个子进程会有一个监听线程和若干服务线程。监听线程负责监听客户端请求并将请求交给服务线程处理。 ● 链接处理在收到client端的HTTP请求并建立socket链接后apache就获取了client对应的ip通过这个ip可以确定该ip地址对应的虚拟主机族。一旦client与apache建立链接请求数据将被读取出来然后HTTP_PROTOCOL 模块将开始对该报文进行解析。读取的请求信息会保存在数据结构 request_rec 中。
● 请求处理对于HTTP报文apache调用ap_process_request函数对请求进行实质处理请求处理包括3个阶段 请求解析阶段URL字符转义它就要将%xx 格式的字符串重新还原成原来的字符串、优化URL等 安全处理身份认证、用户授权等 请求准备阶段apache在处理客户请求的资源前先要确定用户请求资源的类型然后再进行内容生成
● 内容生成请求处理最重要的内容就是响应内容生成对于静态的HTML文件直接读取文件返回给客户端就可以了对于一些脚本还有动态数据库文件需要调用对应的处理器生成客户请求的响应内容生成内容会进入过滤器进行内容过滤(自己设置过滤的内容和规则)通过最后一个过滤器(网络过滤器后)把内容发送到网络最后传输到客户端并在浏览器中显示。 4、tomcat整体分析
1目录结构 bin - tomcat运行相关的脚本文件命令 conf - 存放tomcat服务器的各种全局配置文件重要的是server.xml和web.xml logs - 存放tomcat执行的日志文件 webapps - tomcat的主要web发布目录默认情况下。可修改成自己希望的路径 work - 存放编译后产生的class文件 temp - 临时活页夹Tomcat运行时候存放临时文件用的
2web应用程序的目录结构helloapp为例 /helloapp文本应用的根目录所有的web页面都是在这个目录下 /helloapp/WEB_INF存放该web应用发布时的描述文件web.xml /helloapp/WEB_INF/class存放各种class文件 /helloapp/WEB_INF/lib存放web应用所需要的jar文件