来自 技术 2019-03-16 00:00 的文章

Tomcat入门

开发十年,就只剩下这套架构体系了!>>>

此前虽然对Tomcat有一些了解,但是在使用的时候总感觉云里雾里,索性趁着现在比较清闲,把Tomcat的基础知识整理一下,不足之处还请各位路过的客官多多指正。

简介

Apache Tomcat是由Apache Software Foundation(ASF)开发的一个开源Java WEB应用服务器。

Tomcat是用Java语言编写的,需要运行在Java虚拟机上,所以一般需要先安装JDK,以提供运行环境。

Tomcat实现了几个Java EE规范,包括Java Servlet、Java Server Pages(JSP),Java Expression Language和Java WebSocket等,这些是都下载Tomcat安装包默认提供的,可以在源码中看到相关Java EE 规范API源码引用。

关于Tomcat的更多介绍安装jdk

使用二进制包安装,下载解压并移动/usr/local/jdk1.8,然后配置环境变量:

JAVA_HOME=/usr/local/jdk1.8/JAVA_BIN=/usr/local/jdk1.8/binJRE_HOME=/usr/local/jdk1.8/jrePATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/binCLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar

详细安装步骤点这里

安装Tomcat下载二进制包进行安装:

$ wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz$ tar zxvf apache-tomcat-8.5.38.tar.gz $ mv apache-tomcat-8.5.38 /usr/local/tomcat启动:

$ /usr/local/tomcat/bin/startup.sh $ netstat -lntp |grep javatcp6 0 0 :::8009 :::* LISTEN 50401/java tcp6 0 0 :::8080 :::* LISTEN 50401/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 50401/java $ ps -ef |grep tomcat8005:管理端口;8009:第三方服务调用端口,比如httpd和Tomcat结合的时候会用到;8080:web服务端口;Tomcat文件介绍

官方文档

目录及文件/bin:各种执行脚本,如启动服务、停止服务脚本等,*.sh 用于Unix系统;/conf:配置文件及相关的 DTDs (XML 文档类型定义,俗称 DTD,它是一种准确描述 XML 语言的方式。)这里最重要的文件是server.xml,它是容器的主要配置文件;/logs:日志文件;/webapps:webapp的存放位置。CATALINA_HOME 和 CATALINA_BASECATALINA_HOME:Tomcat的安装根目录,如/home/tomcat/apache-tomcat-8.5.38CATALINA_BASE:表示特定Tomcat实例的运行时配置文件根目录。如果要在一台计算机上拥有多个Tomcat实例,请使用该 CATALINA_BASE 属性。为什么使用CATALINA_BASE?

默认情况下,CATALINA_HOME 和 CATALINA_BASE指向相同的目录,可以通过手动配置CATALINA_BASE在同一台机器上运行多个Tomcat实例,主要有以下好处:

便于管理和升级Tomcat。由于所有Tomcat实例共享一个CATALINA_HOME中的 .jar文件和二进制文件,因此您可以轻松地将文件升级到较新版本,并通过CATALIA_HOME目录将更改应用到所有Tomcat实例;避免重复相同的静态.jar文件;共享某些特定的文件,如setenv shellCATALINA_BASE及CATALINA_HOME的文件内容

在开始使用CATALINA_BASE之前,首先考虑并创建CATALINA_BASE使用的目录树。请注意,如果您不创建所有推荐的目录,Tomcat会自动创建目录。如果无法创建必要的目录,例如由于权限问题,Tomcat将无法启动,或者可能无法正常运行。

CATALINA_BASE 文件结构:

CATALINA_BASE├── bin│   └── setenv.sh # 只放该文件├── conf # cp CATALINA_HOME/conf/* CATALINA_BASE/conf/ ;至少含有以下两个配置文件│   ├── server.xml│   └── web.xml├── lib├── logs├── temp├── webapps└── work

CATALINA_HOME 文件结构:

CATALINA_HOME├── bin│   └── startup.sh│   └── shutdown.sh ├── lib└── endorsed

bin/setenv.sh:设置所有的环境变量,默认情况下,setenv脚本文件不存在。文件格式如下:

#!/bin/shexport JAVA_HOME="/usr/java/latest"# -Xmx{{ heap_size }} -Xms{{ heap_size }}# export CATALINA_OPTS="-XX:+UseParallelGC {{ JAVA_OPTS }} -Djava.security.egd=file:/dev/./urandom"export CATALINA_PID="$CATALINA_BASE/tomcat.pid"export CATALINA_BASE="/usr/local/tomcat"

关于lib文件:将标准的Tomcat库放在 CATALINA_HOME / lib 文件下,将其他库,如数据库驱动程序等添加到对应的 CATALINA_BASE / lib 目录下。Tips:一般情况下,建议Web应用程序之间的库永远不要共享,将它们放入应用程序内的WEB-INF / lib目录中。

关于conf文件:建议将 CATALINA_HOME/conf 所有文件拷贝到 CATALINA_HOME/conf

如何使用CATALINA_BASE文件?

CATALINA_BASE属性是一个环境变量。您可以在执行Tomcat启动脚本之前进行设置,例如:

CATALINA_BASE=/tmp/tomcat_base1 bin/catalina.sh start