本文介绍: Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码网页,它是一个模块化服务器可以运行在几乎所有广泛使用计算机平台上。其属于应用服务器。Apache支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML、图片等,但可以通过扩展脚本模块支持动态页面等。缺点:配置相对复杂,自身不支持动态页面。优点相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache静态解析,适合静态HTML、图片等。

Apache、Tomcat和Nginx优缺点区别

1、定义

1)Apache

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码网页,它是一个模块化服务器可以运行在几乎所有广泛使用计算机平台上。其属于应用服务器

Apache支持模块多,性能稳定,Apache本身是静态解析适合静态HTML、图片等,但可以通过扩展脚本模块等支持动态页面等。

缺点配置相对复杂,自身不支持动态页面
优点相对于Tomcat服务器来说处理静态文件是它的优势,速度。Apache是静态解析,适合静态HTML、图片等。
(Apache可以支持PHPcgiperl,但是要使用Java的话,你需要Tomcat在Apache后台支撑,将Java请求由Apache转发给Tomcat处理。)

2)Tomcat

Tomcat 是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目。Tomcat 服务器一个免费开放源代码的Web 应用服务器属于轻量级web应用服务器

Tomcat是应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器可以认为是Apache的扩展,但是可以独立于Apache运行

缺点可以说Tomcat 只能用做java服务器
优点动态解析容器处理动态请求,是编译JSP/Servlet容器

三个端口
8005:关闭tomcat通信接口
8009:与其他http服务器通信接口,用于http服务集合
8080:建立http连接 用,如浏览器访问

3)Nginx

Nginx是俄罗斯人编写的十分轻量级的HTTP服务,Nginx,它的发音为“engine X”,是一个高性能HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。其特点是占有内存少,并发能力强,易于开发部署方便。Nginx 支持多语言通用服务器。

缺点Nginx 只适合静态文件反向代理
优点负载均衡反向代理处理静态文件优势。Nginx 处理静态请求速度高于Apache。
Nginx有动态分离机制,静态请求直接可以通过Nginx处理动态请求转发请求后台交由Tomcat进行处理

2、区别

1)Nginx和tomcat区别

**nginx常用做静态内容服务代理服务器直接外来请求转发给后面的应用服务器tomcat,Django等),tomcat更多用来做一个应用容器,让java web app跑在里面的东西。**严格意义上来讲,Apache和nginx应该叫做HTTP Server,而tomcat是一个Application Server是一个Servlet/JSO应用容器

客户端通过HTTP Server访问服务器上存储资源(HTML文件,图片文件等),HTTP Server是中只是把服务器上的文件如实通过HTTP协议传输客户端

应用服务器往往是运行在HTTP Server的背后,执行应用,将动态的内容转化为静态的内容之后,通过HTTP Server分发客户端

注意nginx只是把请求做了分发,不做处理!!!

2)nginx和Apache的区别

Apache是同步进程模型,一个连接对应一个进程,而nginx异步的,多个连接(万级别)可以对应一个进程

nginx轻量级,抗并发,处理静态文件好。

Apache超稳定,对PHP支持比较简单nginx需要配合其他后端用,处理动态请求有优势,建议使用前端nginx并发后端apache集群,配合起来会更好

nignx正向代理反向代理

3、优缺点比较

1) nginx相对于apache的优点

轻量级,同样起web 服务,比apache占用更少的内存资源并发nginx 处理请求是异步阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能高度模块化设计,编写模块相对简单提供负载均衡
社区活跃,各种高性能模块出品迅速。

2) apache 相对于nginx 的优点

apacherewrite重写) 比nginx 的强大 ;
支持动态页面;
支持的模块多,基本涵盖所有应用;
性能稳定,而nginx相对bug较多。

3) 两者优缺点比较

Nginx 配置简洁, Apache 复杂 ;
Nginx 静态处理性能比 Apache 高 3倍以上 ;
Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端用;Apache 的组件比 Nginx 多 ;
Apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程;
nginx处理静态文件好,耗费内存少;
动态请求由apache去做,nginx只适合静态和反向;
Nginx适合做前端服务器,负载性能很好;
Nginx本身就是一个反向代理服务器 ,且支持负载均衡

4) 总结

Nginx优点:负载均衡反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache;
Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。Apache是静态解析,适合静态HTML、图片等。
Tomcat:动态解析容器,处理动态请求,是编译JSPServlet的容器,Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理。

Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache较适合。

Tomcat结合Apache、Nginx实现高性能web服务器

Tomcat虽然是一个servletjsp容器,但是它也是一个轻量级的web服务器。它既可以处理动态内容,也可以处理静态内容。不过,tomcat最大优势在于处理动态请求,处理静态内容能力不如apache和nginx,并且经过测试发现,tomcat在高并发的场景下,其接受的最大并发连接数是有限制的,连接数过多会导致tomcat处于”僵死”状态,因此,在这种情况下,我们可以利用nginx的高并发,低消耗的特点与tomcat一起使用。因此,tomcat与nginx、apache结合使用共有如下几点原因

1、tomcat处理html能力不如Apache和nginx,tomcat处理静态内容速度不如apache和nginx。
2、tomcat接受的最大并发数有限连接数过多,会导致tomcat处于”僵尸状态,对后续的连接失去响应,需要结合nginx一起使用

通常情况下,tomcat与nginx、Apache结合使用,nginx、apache既可以提供web服务,也可以转发动态请求至tomcat服务器上。**但在一个高性能站点上,通常nginx、apache只提供代理功能,也就是转发请求至tomcat服务器上,而对于静态内容的响应,则由前端负载均衡器来转发至专门的静态服务器上进行处理。**其架构类似于如下图

在这里插入图片描述

在这种架构中,haproxy或nginx作为前端代理时,如果是静态内容,如htmlcss等内容,则直接交给静态服务器处理如果请求的图片等内容,则直接交给图片服务器处理如果请求的是动态内容,则交给tomcat服务器处理,不过在tomcat服务器上,同时运行着nginx服务器,此时的nginx作为静态服务器,它不处理动态请求,它的作用主要是接受请求,并将请求转发给tomcat服务器的,除此之外,nginx没有任何作用。

Jar包与War包的介绍与区别

1、Jar包的介绍

Jar(Java Archive,Java归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件

Jar文件格式以流行的ZIP文件格式为基础。但是与ZIP文件不同的是,JAR文件不仅用于压缩发布,而且还用于部署和封装库、组件插件程序,并可以被像编译器和JVM这样的工具直接使用。在Jar包含特殊的文件,如manifests和部署描述符用来知识工具如何处理特定的Jar

manifest元素 是一种XML文件中的顶层元素,使用抢文件名的形式来标识项目中的程序清单

简单来说,Jar就是别人已经写好的一些类,然后对这些类进行打包。可以将这些Jar引入自己项目中去,可以直接使用Jar包中的类和属性,这些Jar包一般存放lib目录

2、War包的介绍

War包是一个可以直接运行的web模块,通常用网站,打成包部署到容器中去。以Tomcat来说,将War包放置在其webapps目录下,然后启动Tomcat,这个包就会自动解压,就相当于发布了。

War包是Sun提出的一种web应用程序格式,与Jar类似,是很多文件的压缩包。War包中的文件按照一定目录结构组织。根据其根目录包含htmljsp文件,或者包含有两种文件的目录,另外还有WEB-INF目录。通常在WEB-INF目录下含有一个web.xml文件和一个classes目录,web.xml这个应用配置文件,而classes目录表则包含编译好的servlet类和jsp或者servlet依赖的其他类(如JavaBean)。通常这些所依赖的类也可以打包jar包放在WEB-INF下的lib目录下。

**在早期ssm架构中,因为spring框架没有内置tomcat,项目一般是前后端分离的,所以一般打成war包,部署在linux安装的tomcat中。**此时,war里面包括写的代码编译成class文件,依赖的包,配置文件所有网站页面,包括htmljsp等等。一个war包可以理解为是一个web项目里面项目所有东西。

当然,前后分离的话后端也可以打成war包部署在tomcat中,前端可以使用nginx部署,因为nginx可以为静态资源提供访问,也可以使用tomcat部署,因为tomcat不仅可以处理动态资源,也可以处理静态资源。

前后分离与否,打成jar包和war包都是可以的,打成jar包则不依赖tomcat服务器可以单独部署;打war包的话需要做配置,去掉springboot内置的tomcat即可。如果去掉springboot内置的tomcat打成jar包,这样的jar包就不是一个web项目

3、Jar与War的区别

War文件代表了一个Web应用程序,Jar是类的归档文件

如果一个Web应用程序的目录和文件非常多,那么将这个Web应用程序部署到另一台机器上,就不是很方便了,这时可以将Web应用程序打包成Web 归档(WAR)文件,这个过程和把Java类文件打包成JAR文件的过程类似。利用WAR文件,可以把Servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构来进行部署了,而是把WAR文件作为部署单元来使用。

一个War文件就是一个Web应用程序,建立War文件,就是把整个Web应用程序(不包括Web应用程序层次结构根目录压缩起来,制定一个.war扩展名

注意的是,虽然WAR文件和JAR文件的文件格式是一样的,并且都是使用jar命令创建,但就其应用来说,WAR文件和JAR文件是有根本区别的

**那么什么时候应该使用WAR文件呢?**在开发阶段不适合使用WAR文件,因为在开发阶段,经常需要添加删除Web应用程序的内容,更新 Servlet类文件,而每一次改动后,重新建立WAR文件将是一件浪费时间的事情。在产品发布阶段,使用WAR文件是比较合适的,因为在这个时候,几乎不需要再做什么改动了。

JAR包需要依赖JDK环境才可以运行,WAR包运行依赖Tomcat,而Tomcat依赖JDK/JRE

4、部署war包到Tomcat

  1. 将程序打包为一个test.war包;
  2. 打开Tomcat的安装路径然后进入到其中的webapps文件夹中,把test.war放在webapps文件夹下;
  3. 启动Tomcat。
    如果不需要更改配置文件:到这一步就可以了。

浏览器输入http:localhost:tomcat_port/test即可打开test项目index.jsp页面(port自己端口号)。如果test项目没有index.jsp页面,那就需要打开其他相应的页面。

如果需要更改配置文件

  1. 关闭 Tomcat。
  2. 删除 test.war文件(如果在tomcat启动的状态下删去war包,解压好的文件夹也会被一并删除,所以需要在解压停止tomcat, 然后删掉war包,这时再启动。项目文件夹就会被认为不是war解压而来。)。
  3. 由于刚刚启动过Tomcat,Tomcat会自动解压缩test.war为 test文件夹。所以我们webapps下面可以看到test文件夹打开test文件夹更改配置文件即可
  4. 更新完配置之后,启动Tomcat。
  5. 浏览器打开即可

原文地址:https://blog.csdn.net/qq_46601365/article/details/127733828

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_48474.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注