Tomcat WEB服务器
1)Tomcat是一款开源的、免费的WEB服务器软件,是Apache基金会旗下的,主要是用于发布网站代码、提供网页信息服务的,用户通过浏览器可以实现页面的访问。
2)Tomcat WEB软件默认可以处理静态网页,同时也可以处理动态网页,而Nginx、Apache只能处理静态网页,Tomcat软件主要是基于Java语言开发的,主要是用于发布JAVA动态网站。
静态网页(静态文件)
静态网页主要是跟后端数据库不发生交互的网页,其网页内容很少被更新或者几乎不更新,网页文件后缀命名通常是以.htm、.html、.xml等结尾的,这些内容可以直接被浏览器解析,浏览器可以解析html,css,js语法。(每个用户访问到的资源都是一样的)
动态网页(动态文件)
动态网页主要是跟后端数据库发生交互的网页,其网页内容经常被更新或者随着后端数据库内容变化而更新,网页文件后缀命名通常是以.asp、.jsp、.php等结尾的。(每个用户访问资源得到的结果可能不一样,动态资源需要被解析为静态资源返回给浏览器,通过浏览器进行解析,浏览器只能解析静态资源)
- JAVA动态网页(JSP:Java Server Pages)是基于JAVA语言开发的网页程序,而JAVA开发必备一个组件JDK工具包。JDK是JAVA语言开发的核心组件,同时JDK也是JAVA代码程序运行时的环境,JDK工具包中:JRE是用来解析和处理JSP网页程序的。
- JDK工具包主要是有两个部分组成,分别是JAVA工具(代码开发时用到)和JRE运行环境(代码运行时用到),其中JRE又是由JVM+类、库文件组成的。JVM(JAVA虚拟机)主要是用于运行和解析JAVA代码(字节码:是通过JAVAC编译器工具编译生成的)。
Web 容器是什么?
让我们先来简单回顾一下 Web 技术的发展历史,可以帮助你理解 Web 容器的由来。
早期的 Web 应用主要用于浏览新闻等静态页面,HTTP 服务器(比如 Apache、Nginx)向浏览器返回静态 HTML,浏览器负责解析 HTML,将结果呈现给用户。
随着互联网的发展,我们已经不满足于仅仅浏览静态页面,还希望通过一些交互操作,来获取动态结果,因此也就需要一些扩展机制能够让 HTTP 服务器调用服务端程序。
于是 Sun 公司推出了 Servlet 技术。你可以把 Servlet 简单理解为运行在服务端的 Java 小程序,但是 Servlet 没有 main 方法,不能独立运行,因此必须把它部署到 Servlet 容器中,由容器来实例化并调用 Servlet。
而 Tomcat 和 Jetty 就是一个 Servlet 容器。为了方便使用,它们也具有 HTTP 服务器的功能,因此 Tomcat 或者 Jetty 就是一个“HTTP 服务器 + Servlet 容器”,我们也叫它们 Web 容器。
其他应用服务器比如 JBoss 和 WebLogic,它们不仅仅有 Servlet 容器的功能,也包含 EJB 容器,是完整的 Java EE 应用服务器。从这个角度看,Tomcat 和 Jetty 算是一个轻量级的应用服务器。
在微服务架构日渐流行的今天,开发人员更喜欢稳定的、轻量级的应用服务器,并且应用程序用内嵌的方式来运行 Servlet 容器也逐渐流行起来。之所以选择轻量级,是因为在微服务架构下,我们把一个大而全的单体应用,拆分成一个个功能单一的微服务,在这个过程中,服务的数量必然要增加,但为了减少资源的消耗,并且降低部署的成本,我们希望运行服务的 Web 容器也是轻量级的,Web 容器本身应该消耗较少的内存和 CPU 资源,并且由应用本身来启动一个嵌入式的 Web 容器,而不是通过 Web 容器来部署和启动应用,这样可以降低应用部署的复杂度。
因此轻量级的 Tomcat 和 Jetty 就是一个很好的选择,并且 Tomcat 它本身也是 Spring Boot 默认的嵌入式 Servlet 容器。最新版本 Tomcat 和 Jetty 都支持 Servlet 4.0 规范。
JDK的部署
[root@localhost ~]# mkdir -p /usr/java/ 一般jdk都放在该目录下面
[root@localhost java]# tar xf jdk1.8.0_131.tar.gz
[root@localhost src]# ll /usr/java/jdk1.8.0_131
total 25864
drwxr-xr-x. 2 10 143 4096 Mar 15 2017 bin #里面包含工具包
-r--r--r--. 1 10 143 3244 Mar 15 2017 COPYRIGHT
drwxr-xr-x. 4 10 143 122 Mar 15 2017 db
drwxr-xr-x. 3 10 143 132 Mar 15 2017 include
-rwxr-xr-x. 1 10 143 5097105 Mar 15 2017 javafx-src.zip
drwxr-xr-x. 5 10 143 185 Mar 15 2017 jre #java代码运行时候所需要的
drwxr-xr-x. 5 10 143 245 Mar 15 2017 lib
-r--r--r--. 1 10 143 40 Mar 15 2017 LICENSE
............................................................................................................................
[root@localhost bin]# ./java -version --tomcat是java语言开发的,在运行tomcat之前需要确保JDK安装了,可以看到JDK版本是1.8
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
tomcat的部署
[root@localhost src]# tar xf apache-tomcat-8.0.39.tar.gz
[root@localhost src]# mv apache-tomcat-8.0.39 /usr/local/tomcat
[root@localhost src]# ll tomcat/
total 92
drwxr-xr-x. 2 root root 4096 May 28 15:10 bin
drwxr-xr-x. 2 root root 182 Nov 9 2016 conf
drwxr-xr-x. 2 root root 4096 May 28 15:10 lib
-rw-r--r--. 1 root root 57011 Nov 9 2016 LICENSE
drwxr-xr-x. 2 root root 6 Nov 9 2016 logs
-rw-r--r--. 1 root root 1444 Nov 9 2016 NOTICE
-rw-r--r--. 1 root root 6741 Nov 9 2016 RELEASE-NOTES
-rw-r--r--. 1 root root 16195 Nov 9 2016 RUNNING.txt
drwxr-xr-x. 2 root root 30 May 28 15:10 temp
drwxr-xr-x. 7 root root 81 Nov 9 2016 webapps
drwxr-xr-x. 2 root root 6 Nov 9 2016 work
bin目录下存放着可执行文件,着两个脚本是可以启动和关闭tomcat的脚本,.bat是windows的脚本。.sh是linux的shell脚本
-rwxr-xr-x. 1 root root 1902 Nov 9 2016 shutdown.sh
-rwxr-xr-x. 1 root root 1904 Nov 9 2016 startup.sh
conf目录:存放着配置文件
logging.properties 日志的配置文件
server.xml tomcat服务器配置的信息,比如tomcat的端口号就是配置在该文件当中
tomcat-users.xml 配置了tomcat的访问用户以及每个用户具有的角色信息进行权限管理
Web.xml tomcat部署的所有应用配置文件,在该文件里可以配置一些默认的配置,比如默认的servelet是哪个
lib目录:存放着tomcat的一些jar包
webapps目录:tomcat默认的应用部署目录,如果有一些web项目需要部署到tomcat,那么就可以放在该目录下
work目录:jsp文件编译之后生成的java源码以及class字节码所存放的目录
配置JAVA_HOME,CLASSPATH环境变量
[root@localhost src]# JAVA_HOME=/usr/java/jdk1.8.0_131
[root@localhost src]# echo $JAVA_HOME
/usr/java/jdk1.8.0_131
每次开机都会加载,那么该变量永久生效,你退出当前shell重新登入还是生效,因为在你重新进入shell终端那个文件会生效
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# tail -n 3 /etc/profile 在倒数两行加入如下
export JAVA_HOME=/usr/java/jdk1.8.0_131
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib --jdk调用的lib库,这个变量定义了lib库和软件包的目录
[root@localhost ~]# source /etc/profile 加载该文件里的内容
[root@localhost local]# echo $CLASSPATH
:/usr/java/jdk1.8.0_131/lib:/usr/java/jdk1.8.0_131/jre/lib
#这些环境变量方便程序查找需要的东西
启动你的tomcat
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_131
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@localhost ~]# ps -ef | grep tomcat
root 10351 1 5 15:54 pts/0 00:00:04 /usr/java/jdk1.8.0_131/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
[root@localhost ~]# netstat -tpln | grep -wE "8005|8080|8009"
tcp6 0 0 :::8080 :::* LISTEN 10351/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 10351/java
tcp6 0 0 :::8009 :::* LISTEN 10351/java
可以看到起来了三个端口,浏览器访问使用8080
[root@localhost ~]# netstat -tpln | grep -wE "8005|8080|8009"
tcp6 0 0 :::8080 :::* LISTEN 10351/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 10351/java
tcp6 0 0 :::8009 :::* LISTEN 10351/java
8005是用来关闭tomcat的端口的,也可以使用kill命令来关闭,只是关闭的一种方式
127.0.0.1:8005 可以看到只有本机才能连接上8005端口
8009端口是tomcat和apache专属端口,apache连接tomcat就是通过该端口,nginx想连tomcat就不能够通过8009