前言

Tomcat就没什么好介绍了,老牌服务器应用,JSP应用服务必备。该程序对于老鸟来说功能强大,也能轻车熟路。但对于新手来说,这玩意儿太复杂了,一点都不人性化,有时候感觉还挺傻的。
作为一个新手,被这货折腾得不要不要的,对基本使用整理下,以便后面自己回来翻得到。

Tomcat基础

启停方式

1
2
3
4
5
#启动
$TOMCAT_HOME/bin/startup.sh

#停止
$TOMCAT_HOME/bin/shutdown.sh

程序目录结构

简单介绍一下各个文件夹及文件:

  • bin:主要存放脚本文件,例如比较常用的windows和linux系统中启动和关闭脚本
  • conf:主要存放配置文件,其中最重要的两个配置文件是server.xml和web.xml
  • lib:主要存放tomcat运行所依赖的包
  • LICENSE:版权许可证,软件版权信息及使用范围等信息
  • logs:主要存放运行时产生的日志文件,例如catalina.out(曾经掉过一个大坑)、catalina.{date}.log等
  • NOTICE:通知信息,一些软件的所属信息和地址什么的
  • RELEASE-NOTES:发布说明,包含一些版本升级功能点
  • RUNNING.txt:运行说明,必需的运行环境等信息
  • temp:存放tomcat运行时产生的临时文件,例如开启了hibernate缓存的应用程序,会在该目录下生成一些文件
  • webapps:部署web应用程序的默认目录,也就是 war 包所在默认目录
  • work:主要存放由JSP文件生成的servlet(java文件以及最终编译生成的class文件)

上面是一个安装后的 Tomcat 的全部组成部分,如果你要启动,进入bin目录执行startup.sh就可以,接着就可以在浏览器输入http://localhost:8080/访问了。

Tomcat单实例多应用部署方案

参照网上别人的经验,标准的单机多实例应该是这样的

单实例多应用结构

上图中的 CATALINA_HOME 指Tomcat安装路径,CATALINA_BASE 指实例所在位置。

CATALINA_HOME 路径下只需要包含 binlib 目录,而 CATALINA_BASE 只存放 conf、webapps、logs 等这些文件,这样部署的好处在于升级方便,配置及安装文件间互不影响,在不影响 Tomcat 实例的前提下,替换掉 CATALINA_HOME 中的安装文件。

程序包路径

比如程序包归类放到了/home/wwwroot 目录下,那么其目录结构如下:

1
2
3
4
[root@zaza wwwroot]# ll
总用量 16
drwxr-xr-x. 3 www www 4096 8月 8 17:26 default
drwxr-xr-x 7 root root 4096 8月 9 10:03 tomcat-1

tomcat-1表示实例1tomcat-2表示实例2,每个实例目录结构都是一样的,以此类推。

1
2
3
4
5
6
7
8
9
10
11
[root@zaza wwwroot]# ll tomcat-1
总用量 20
drwx------. 3 root root 4096 8月 9 10:32 conf
drwxr-x---. 2 root root 4096 8月 9 11:08 logs
drwxr-x---. 2 root root 4096 8月 9 10:20 temp
drwxr-x---. 3 root root 4096 8月 9 10:06 webapps
drwxr-x---. 2 root root 4096 8月 9 11:08 work

[root@zaza wwwroot]# ll tomcat-1/webapps/
总用量 4
drwxr-xr-x. 17 root root 4096 8月 9 10:10 ROOT

程序包统一规则放置在webapps/ROOT 下。

Tomcat端口配置

同一个服务器部署不同 Tomcat 要设置不同的端口,不然会报端口冲突,所以我们只需要修改conf/server.xml中的其中前三个端口就行了。但它有四个分别是:

  • Server Port:该端口用于监听关闭tomcat的shutdown命令,默认为8005

  • Connector Port:该端口用于监听HTTP的请求,默认为8080

  • AJP Port:该端口用于监听AJP( Apache JServ Protocol )协议上的请求,通常用于整合Apache Server等其他HTTP服务器,默认为8009

  • Redirect Port:重定向端口,出现在Connector配置中,如果该Connector仅支持非SSL的普通http请求,那么该端口会把 https 的请求转发到这个Redirect Port指定的端口,默认为8443;

宝塔面板部署Tomcat应用

宝塔面板提供了一键安装Tomcat及JDK安装的功能,在配置网站应用时,也可以一键启用Tomcat,面板会自动完成和nginx的配置整合。但是,截止目前最新版本『5.8.7』都会留个坑,导致Tomcat应用只能访问默认的Tomcat默认欢迎页或者干脆出现404错误。

原因就是宝塔面板在生成Tomcat配置的时候有个地方有错误,需要手工对其更正。添加完网站应用并在网站配置中启用Tomcat后,请返回宝塔首页或者软件管理中,找到Tomcat打开Tomcat的主配置

1
2
3
4
//新增的网站应用
<Host appBase="/www/wwwroot/xx.com" autoDeploy="true" name="xx.com" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
<Context crossContext="true" docBase="/www/wwwroot/xx.com" path="" reloadable="true" />
</Host>

在我们新增完网站应用后,默认是上面那样的配置,其中 appBase=docBase= 默认是一样的,这里我们需要将 appBase= 留空然后重载配置或者重启Tomcat,否则会出现404的错误,正确配置如下:

1
2
3
4
//新增的网站应用
<Host appBase="" autoDeploy="true" name="xx.com" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
<Context crossContext="true" docBase="/www/wwwroot/xx.com" path="" reloadable="true" />
</Host>

附录:JSP环境安装

Tomcat使用环境一般都会涉及到环境安装的问题,将基本的资料贴出来以供参考。

JDK

官网下载二进制包,解压到/usr/local/jdk,设置系统环境变量

1
2
3
4
5
6
7
8
9
10
11
12
#设置系统环境变量
vi /etc/profile

#在profile文件中添加如下内容
#set java environment
JAVA_HOME='/usr/local/jdk'
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASS_PATH PATH

#让修改生效
source /etc/profile

TomCat

官网下载二进制包,解压到/usr/local/tomcat,设置系统环境变量

1
2
3
4
5
6
7
8
9
10
11
#设置系统环境变量
vi /etc/profile

#在profile文件中添加如下内容
#set tomcat environment
TOMCAT_HOME='/usr/local/tomcat'
PATH=$PATH:$TOMCAT_HOME/bin
export TOMCAT_HOME PATH

#让修改生效
source /etc/profile

参考文档

宝塔部署java web项目完整教程

聊聊 Tomcat 的单机多实例