写在前面
这则笔记整理tomcat的相关知识,主要包括:
tomcat介绍
tomcat安装
tomcat配置
什么是tomcat?
目前,有很多的大型网站都是用java编写的,所以,解析java程序也需要由相关的程序来完成,tomcat就是其中之一。
Tomcat 类似与一个apache的扩展型,属于apache软件基金会的核心项目,属于开源的轻量级Web应用服务器,是开发和调试JSP程序的首选,主要针对Jave语言开发的网页代码进行解析,具有技术先进、性能稳定、免费开源的特点,是目前比较流行的web服务器。
Tomcat虽然具有处理HTML页面的功能,然而由于其处理静态HTML的能力远不及Apache或者Nginx,所以Tomcat通常做为一个Servlet和JSP容器单独运行在后端,运行JSP 页面和Servlet。
Tomcat 支持:
使用 Apache Axis servlet 的 Web 服务;
开发框架,如 Apache Struts;
模板引擎,如 Apache Jakarta Velocity;
对象关系映射技术,如 Hibernate;
Tomcat 安装
想要安装tomcat,必须先安装JDK,即java development kit
,这是Sun Microsystems 针对java开发做的一个开发者软件包,包括java运行环境、java工具和java基础库,是目前java开发的核心。
安装jdk
第一步:下载安装包
jdk官网下载地址在这里,由于这里不能使用wget命令,因此只能通过浏览器下载,之后通过ftp程序上传到虚拟机当中,进行相关的安装配置。
这里选择了linux64位的版本来下载。
第二步:上传安装包到虚拟机
因为之前已经配置好了ftp服务,所以这里刚好用上。
笔者在mac端使用的ftp软件是yummy ftp pro
,打开之后,依次选取传输协议、客户端ip、登陆用户名、密码,点击connect即可连接。
之后,选择文件,右键uoload即可。
第三步:移动安装包
1 | // 进入ftp目录 |
第四步:配置系统环境变量
系统环境变量的配置文件为 /etc/profile
,下面要更改系统配置文件。
1 | vi /etc/profile |
校验配置是否正常
安装Tomcat
第一步:下载二进位制安装包
tomcat的官网网址为:https://tomcat.apache.org/
这里下载的镜像站点的二进位制安装包,版本号是8.5.31。同样还是采用在mac下用chrome浏览器下载,之后再通过ftp上传到虚拟机的方式。因为在虚拟机使用wget命令下载实在是太慢了。
第二步:移动文件夹
1 | //此处设置了alias ftp='cd /data/ftp/' |
第三步:安装
由于下载的是二进位制安装包,因此就省去了编译环节。
- 移动文件夹到自定义安装目录
1 | [root@local-linux02 src]# mv apache-tomcat-8.5.31 /usr/local/tomcat |
- 运行启动脚本
1 | [root@local-linux02 bin]# /usr/local/tomcat/bin/startup.sh |
- 校验是否成功
ps -aux |grep java
- 检查端口情况
netstat -lntp |grep java
说明:正常会有三个以下端口开放
8080提供wed服务的端口;
8005为管理端口;
8009为第三方服务调用端口(如httpd和Tomcat结合时会用到);
第四步:设置开机启动
1 | echo "/usr/local/tomcat/bin/startup.sh" >> /etc/rc.d/rc.local |
第五步:配置iptables端口
1 | [root@local-linux02 bin]# vi /etc/sysconfig/iptables |
校验成功
浏览器登录
最后,如需关闭tomcat执行如下脚本
1 | /usr/local/tomcat/bin/shutdown.sh |
tomcat的目录结构
tomcat的目录结构说明
1 | [root@local-linux02 conf]# tree -L 1 /usr/local/tomcat |
bin目录主要文件包括:
catalina.sh
用于启动和关闭tomcat服务器;configtest.sh
用于检查配置文件;startup.sh
启动Tomcat脚本;shutdown.sh
关闭Tomcat脚本;
conf目录主要的配置文件:
server.xml
Tomcat 的全局配置文件;web.xml
为不同的Tomcat配置的web应用设置缺省值的文件;tomcat-users.xml
Tomcat用户认证的配置文件;
logs目录主要文件包括:
localhost_access_log.2018-06-26.txt
访问日志localhost.2018-06-26.log
错误和其它日志manager.2018-06-26.log
管理日志catalina.2018-06-26.log
Tomcat启动或关闭日志文件
Tomcat 配置文件
tomcat配置文件目录为 /usr/local/tomcat/conf/
, 主要包括以下文件:
server.xml
omcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts
主组件的相关配置信息;web.xml
每个webapp只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;tomcat-user.xml
用户认证的账号和密码文件,在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;catalina.policy
java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力;当使用-security选项启动tomcat时,用于为tomcat设置安全策略;catalina.properties
Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数,Tomcat在启动时会事先读取此文件的相关设置;logging.properties
Tomcat日志记录器相关的配置信息,可以用来定义日志记录的组件级别以及日志文件的存在位置等;context.xml
每个web专用的配置文件,包括所有host的默认配置信息,其存放位置为WEB-INF/目录中;
tomcat的核心组件
Server
组件
元素是整个配置文件的根元素,在所有元素最顶层,代表整个Tomcat容器,类似于标签
className
: 用于实现此Server容器的完全限定类的名称,默认为org.apache.catalina.core.StandardServer
;port
接收shutdown指令的端口,默认仅允许通过本机访问,默认为8005;shutdown
指定向端口发送的命令字符串;
Service
组件
Service主要用于关联一个引擎和与此引擎相关的连接器,每个连接器通过一个特定的端口和协议接收入站请求交将其转发至关联的引擎进行处理。
Connector
组件
主要功能接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine来处理这个请求,并把产生的Request和Response对象传给Engine。
进入tomcat的请求可分为两类:
第一类:standalone,请求来自于客户端浏览器;
第二类:由其它的web server反代,来自前端的反代服务器;
nginx –> http connector –> tomcat
httpd(proxy_http_module) –> http connector –> tomcat
httpd(proxy_ajp_module) –> ajp connector –> tomcat
相关属性:
1 | port=”8080″ |
Engine
组件
servlet引擎,其内部可以一个或多个host组件来定义站点; 通常需要通过defaultHost
来定义默认的虚拟主机;
Host
组件
Engine的子容器。Engine组件中可以内嵌1个或多个Host组件,每个Host组件代表Engine中的一个虚拟主机。Host组件至少有一个,且其中一个的name必须与Engine组件的defaultHost属性相匹配。
name
指定主机名;appBase
应用程序基本目录,即存放应用程序的目录;unpackWARs
如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序;
tomcat
常用配置
配置Tomcat监听80端口
第一步:修改server.xml配置文件
1 | [root@local-linux02 conf]# vi /usr/local/tomcat/conf/server.xml |
第二步:重启tomcat
1 | //关闭tomcat |
校验成果
- 检查端口情况
1 | [root@local-linux02 conf]# netstat -lntp | grep java |
- 浏览器测试
配置Tomcat虚拟主机
同样还是修改配置文件server.xml,其中<host></host>
字段就是关于虚拟主机的配置,包括以下选项:
name
定义域名;
appBase
定义应用的目录,Java的应用通常是一个war的压缩包,你只需要将war的压缩包放到appBase目录下面即可;
docBase
,这个参数用来定义网站的文件存放路径,默认为appBase/ROOT
;
应用示例:利用zrlog部署一个java的应用
第一步:修改配置文件
1 | vi /usr/local/tomcat/conf/server.xml |
第二步:下载zrlog
1 | //下载zrlog |
第三步:数据库配置
- 登陆数据库
1 | [root@local-linux02 webapps]# mysql -u root -p |
创建数据库
1 | MariaDB [(none)]> create database zrlog; |
- 授权用户
1 | MariaDB [(none)]> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'steve-123'; |
- 测试是否数据库是否能正常登陆
第四步:浏览器访问 ip:8080/zrlog ,运行安装程序
- 依次填写服务器地址、数据库名、用户名、密码、端口、系统邮箱
- 下一步,随便填了,反正是实验环境
- 完成
- 效果预览
第五步:去掉浏览器访问时输入的目录名
第六步:重启tomcat
1 | [root@local-linux02 webapps]# /usr/local/tomcat/bin/shutdown.sh |
浏览器测试
- 修改本地host文件
- 浏览器测试
Tomcat日志
其中,
catalina
开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。catalina.2018-xx-xx.log
和catalina.out
内容相同,前者会每天生成一个新的日志;host-manager
和manager
为管理相关的日志,其中host-manager为虚拟主机的管理日志;localhost
和localhost_access
为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。
日志文件同样是在/usr/local/tomcat/conf/server.xml 中虚拟主机配置的位置
prefix
定义访问日志的前缀;suffix
定义日志的后缀;pattern
定义日志格式;
示例:
1 | <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" |
tomcat 连接 mysql
tomcat连接mysql是通过自带的JDBC驱动实现的,具体步骤如下:
第一步:配置mysql,创建数据库、表、用户
1 | mysql -u root -p |
第二步:修改tomcat配置文件
1 | vi content.xml |
第三步:修改 web.xml配置文件
1 |
|
第四步:编辑测试内容
1 | vi /usr/local/tomcat/webapps/ROOT/t.jsp |
第五步:重启tomcat
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh