资源下载
Tomcat 8.5
apache官网点击下载
云盘下载
(请多多支持官方下载):Tomcat 8.5
云盘下载:Openjdk-8u191
Tomcat基础简述
Tomcat内部组成
Tomcat配置文件
文件名 | 说明 |
---|---|
server.xml | 主配置文件 |
web.xml | 每个webapp只有“部署”后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置 |
context.xml | 每个webapp都可以专用的配置文件,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认配置 |
tomcat-users.xml | 用户认证的账号和密码文件 |
catalina.policy | 当使用-security选项启动tomcat时,用于为tomcat设置安全策略 |
catalina.properties | Java属性的定义文件,用于设定类加载器路径,以及一些与JVM调优相关参数 |
logging.properties | 日志系统相关的配置。log4j |
目录结构
目录 | 说明 |
---|---|
bin | 服务启动、停止等相关 |
conf | 配置文件 |
lib | 库目录 |
logs | 日志目录 |
webapps | 应用程序,应用部署目录 |
work | jsp编译后的结果文件 |
实验内容
#下载jdk
[root@C7-4: ~]# ll /data/jdk-8u191-linux-x64.rpm
-rw-r--r-- 1 root root 168M Jan 13 20:49 /data/jdk-8u191-linux-x64.rpm
#安装下载的rpm包
[root@C7-4: ~]# yum -y install /data/jdk-8u191-linux-x64.rpm
#查看java版本
[root@C7-4: ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
#查看java相关配置文件
[root@C7-4: ~]# cd /usr/java/
[root@C7-4: /usr/java]# ll
total 0
lrwxrwxrwx 1 root root 16 Jan 14 09:48 default -> /usr/java/latest/
drwxr-xr-x 8 root root 258 Jan 14 09:48 jdk1.8.0_191-amd64/
lrwxrwxrwx 1 root root 28 Jan 14 09:48 latest -> /usr/java/jdk1.8.0_191-amd64/
#添加PATH变量
[root@C7-4: /usr/java]# vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
#重启jdk.sh文件
[root@C7-4: /usr/java]# source /etc/profile.d/jdk.sh
#下载Tomcat
[root@C7-4: /usr/java]# ll /usr/local/src/
total 9.9M
-rw-r--r-- 1 root root 9.9M Dec 8 03:42 apache-tomcat-8.5.50.tar.gz
#解压Tomcat压缩包
[root@C7-4: ~]# tar xf /usr/local/src/apache-tomcat-8.5.50.tar.gz -C /usr/local
#创建软连接
[root@C7-4: ~]# cd /usr/local/
[root@C7-4: /usr/local]# ln -sv apache-tomcat-8.5.50/ tomcat
[root@C7-4: /usr/local]# ll
total 0
drwxr-xr-x 9 root root 220 Jan 14 10:02 apache-tomcat-8.5.50/
……….
lrwxrwxrwx 1 root root 20 Jan 14 19:09 tomcat -> apache-tomcat-8.5.50/
#创建java用户
[root@C7-4: ~]# useradd -u 77 -r java
#修改目录属主属组
[root@C7-4: /usr/local]# chown -R java:java tomcat/
[root@C7-4: /usr/local]# cd tomcat/bin/
#查看启动脚本和关闭脚本
[root@C7-4: /usr/local/tomcat/bin]# ll
.........
-rwxr-x--- 1 java java 1.9K Dec 8 03:21 shutdown.sh*
-rwxr-x--- 1 java java 1.9K Dec 8 03:21 startup.sh*
.........
#编写一个html页面
[root@C7-4: ~]# echo "This is dushansao" >> /usr/local/tomcat/webapps/ROOT/index.html
#修改配置文件
#页面尾部添加如下几行
[root@C7-4: ~]# vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
#运行启动脚本
[root@C7-4: ~]# /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/default
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
#查看当前是以谁的身份运行tomcat
#显示结果为 root 身份运行
[root@C7-4: ~]# ps -aux | grep tomcat
root 5194 189 4.7 2996000 88036 pts/0
………………..
#如何使用普通用户运行 tomcat ?
[root@C7-4: ~]# /usr/local/tomcat/bin/shutdown.sh
[root@C7-4: ~]# su - java -c '/usr/local/tomcat/bin/catalina.sh start'
su: warning: cannot change directory to /home/java: No such file or directory
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/default
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
#重新查看当前是以谁的身份运行tomcat
#显示结果为 java 身份运行
[root@C7-4: ~]# ps -aux | grep tomcat
java 5498 37.1 4.7 2996000 87736 ?
……………………..
#访问Tomcat自定义页面
[root@C7-4: ~]# curl 192.168.124.14:8080/index.html
This is dushansao
#访问Tomcat默认页面
核心组件
Tomcat启动一个Server进程。可以启动多个Server,但一般只启动一个
创建一个Service提供服务。可以创建多个Service,但一般也只创建一个
每个Service中,是Engine和其连接器Connector的关联配置
可以为这个Server提供多个连接器Connector,这些Connector使用了不同的协议,绑定了不同的端口。其作用就是处理来自客户端的不同的连接请求或响应
Service内部还定义了Engine,引擎才是真正的处理请求的入口,其内部定义多个虚拟主机Host
Engine对请求头做了分析,将请求发送给相应的虚拟主机
如果没有匹配,数据就发往Engine上的defaultHost缺省虚拟主机
Engine上的缺省虚拟主机可以修改
Host定义虚拟主机,虚拟主机有name名称,通过名称匹配
Context定义应用程序单独的路径映射和配置
#备份配置文件
[root@C7-4: /usr/local/tomcat/conf]# pwd
/usr/local/tomcat/conf
[root@C7-4: /usr/local/tomcat/conf]# cp server.xml server.xml.backup
[root@C7-4: /usr/local/tomcat/conf]# vim server.xml
跳至文章中心
server.xml 内部有一个 server 的定义,每个 server 中可以定义多个 service, 每个 service 中可以定义多 个 connector 供自己的 engine 使用,每个 engine 中可以定义多个 host, host 为虚拟主机, 可以指定项目 在文件系统同的路径和其他配置信息
配置文件中的 <Server port="8005" shutdown="SHUTDOWN">
这是 tomcat 的管理端口,此条配置会让 tomcat 监听在本地的 127.0.0.1:8005 端口,使用 telnet 发送 SHUTDOWN 字符串后,tomcat 会关机。为了安全和规范,建议更改端口,更改 SHUTDOWN 字符串为无规律复杂字符串
#安装相关命令
[root@C7-4: /usr/local/tomcat/conf]# yum -y install telnet
#运行启动脚本
[root@C7-4: /usr/local/tomcat/conf]# su - java -c '/usr/local/tomcat/bin/startup.sh'
su: warning: cannot change directory to /home/java: No such file or directory
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/default
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
#查看端口
[root@C7-4: /usr/local/tomcat/conf]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 [::]:*
LISTEN 0 100 [::]:8009 [::]:*
LISTEN 0 100 [::]:8080 [::]:*
LISTEN 0 128 [::]:22 [::]:*
[root@C7-4: /usr/local/tomcat/conf]# telnet 127.0.0.1 8005
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN
Connection closed by foreign host.
[root@C7-4: /usr/local/tomcat/conf]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 128 [::]:22 [::]:*
<GlobalNamingResources>
该配置段可以指定一些全局配置
[root@C7-4: /usr/local/tomcat/conf]# cp tomcat-users.xml tomcat-users.xml.backup
[root@C7-4: /usr/local/tomcat/conf]# vim tomcat-users.xml
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<user username="dushansao" password="123456" roles="manager-gui"/>
</tomcat-users>
#添加192.168 网段
[root@C7-4: ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192\.168\.\d+\.\d+" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
[root@C7-4: ~]# su - java -c '/usr/local/tomcat/bin/startup.sh'
su: warning: cannot change directory to /home/java: No such file or directory
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/default
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
#访问测试,用户名 dushansao 密码 123456
[root@C7-4: ~]# curl -u dushansao 127.0.0.1:8080/manager/html
Enter host password for user 'dushansao':
<html>
<head>
<style>
……………………
#手动创建一个 java web 项目部署到 tomcat 中
[root@C7-4: ~]# mkdir -pv /usr/local/tomcat/webapps/myapp/{WEB-INF,classes,lib}
mkdir: created directory ‘/usr/local/tomcat/webapps/myapp’
mkdir: created directory ‘/usr/local/tomcat/webapps/myapp/WEB-INF’
mkdir: created directory ‘/usr/local/tomcat/webapps/myapp/classes’
mkdir: created directory ‘/usr/local/tomcat/webapps/myapp/lib’
[root@C7-4: ~]# echo '<h1>myapp for dushansao</h1>' > /usr/local/tomcat/webapps/myapp/index.html
[root@C7-4: ~]# vim /usr/local/tomcat/webapps/myapp/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>myapp for dushansao</title>
</head>
<body>
<h1> myapp web project in /usr/local/tomcat/webapps/myapp </h1>
<%
out.println("hello jsp");
%>
</body>
</html>
[root@C7-4: ~]# vim /usr/local/tomcat/webapps/myapp/WEB-INF/web.xml
[root@C7-4: ~]# cp -av /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml /usr/local/tomcat/webapps/myapp/WEB-INF
[root@C7-4: ~]# chown -R java:java /usr/local/tomcat
[root@C7-4: ~]# su - java -c '/usr/local/tomcat/bin/startup.sh'
su: warning: cannot change directory to /home/java: No such file or directory
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/default
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@C7-4: ~]# curl 127.0.0.1:8080/myapp
[root@C7-4: ~]# curl 127.0.0.1:8080/myapp/index.html
<h1>myapp for dushansao</h1>
[root@C7-4: ~]# curl 127.0.0.1:8080/myapp/index.jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>myapp for dushansao</title>
</head>
<body>
<h1> myapp web project in /usr/local/tomcat/webapps/myapp </h1>
hello jsp
</body>
</html>
#配置中还可以使用 context 选项
[root@C7-4: ~]# cp -av /usr/local/tomcat/webapps/myapp /data/myappv1
‘/usr/local/tomcat/webapps/myapp’ -> ‘/data/myapp’
……………………
‘/usr/local/tomcat/webapps/myapp/index.jsp’ -> ‘/data/myapp/index.jsp’
[root@C7-4: ~]# ll /data/
total 168M
-rw-r--r-- 1 root root 168M Jan 13 20:49 jdk-8u191-linux-x64.rpm
drwxr-xr-x 5 root root 82 Jan 17 21:29 myappv1/
[root@C7-4: ~]# vim /data/myappv1/index.html
<h1>myapp of dushansao page under data-myappv1</h1>
[root@C7-4: ~]# vim /data/myappv1/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>myapp of dushansao page under data-myappv1</title>
</head>
<body>
<h1> myapp web project in /data/myappv1 </h1>
<%
out.println("hello jsp");
%>
</body>
</html>
[root@C7-4: ~]# vim /etc/hosts
#添加最后一行
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 www.dushan.com
[root@C7-4: ~]# cd /data/
[root@C7-4: ~]# ln -s myappv1 test
[root@C7-4: ~]# chown -R java:java /data
[root@C7-4: ~]# cp -a /usr/local/tomcat/webapps /data/
[root@C7-4: ~]# ll /data/
total 168M
-rw-r--r-- 1 java java 1.4K Jan 14 15:34 ag-install.sh
-rw-r--r-- 1 java java 168M Jan 13 20:49 jdk-8u191-linux-x64.rpm
drwxr-xr-x 5 java java 82 Jan 18 08:44 myappv1/
lrwxrwxrwx 1 java java 13 Jan 18 08:50 test -> myappv1/
drwxr-x--- 8 java java 94 Jan 17 21:25 webapps/
[root@C7-4: ~]# vim /usr/local/tomcat/conf/server.xml
#添加一下内容
</Host>
<Host name="www.dushan.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="true" >
<Context path="/test" docBase="/data/test" reloadable="" />
</Host>
图示
[root@C7-4: ~]# su - java -c '/usr/local/tomcat/bin/shutdown.sh'
[root@C7-4: ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 128 [::]:22 [::]:*
[root@C7-4: ~]# su - java -c '/usr/local/tomcat/bin/startup.sh'
su: warning: cannot change directory to /home/java: No such file or directory
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/default
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@C7-4: ~]# ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 [::1]:25 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 [::]:*
LISTEN 0 100 [::]:8009 [::]:*
LISTEN 0 100 [::]:8080 [::]:*
LISTEN 0 128 [::]:22 [::]:*
[root@C7-4: ~]# curl www.dushan.com:8080/test/
<h1>myapp of dushansao page under data-myappv1 </h1>
[root@C7-4: ~]# curl www.dushan.com:8080/test/index.jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>myapp of dushansao</title>
</head>
<body>
<h1> myapp web project in /data/myappv1 </h1>
hello jsp
</body>
</html>
#查看 work 路径,证实真实的项目是以虚拟主机名和访问名进行区分的
[root@C7-4: ~]# ll /usr/local/tomcat/work/Catalina/
total 0
drwxr-x--- 8 java java 94 Jan 17 21:25 localhost/
drwxr-x--- 9 java java 106 Feb 2 10:58 www.dushan.com/
[root@C7-4: ~]# ll /usr/local/tomcat/work/Catalina/www.dushan.com/
total 0
drwxr-x--- 2 java java 6 Feb 2 10:58 docs/
drwxr-x--- 2 java java 6 Feb 2 10:58 examples/
drwxr-x--- 2 java java 6 Feb 2 10:58 host-manager/
drwxr-x--- 2 java java 6 Feb 2 10:58 manager/
drwxr-x--- 2 java java 6 Feb 2 10:58 myapp/
drwxr-x--- 2 java java 6 Feb 2 10:58 ROOT/
drwxr-x--- 3 java java 17 Feb 2 11:37 test/
Tomcat的web.xml配置
[root@C7-4: ~]# vim /usr/local/tomcat/conf/web.xml
…...…………..#由下方的序列号得知该文件超过四千行,省略不写
4722 <welcome-file>index.htm</welcome-file>
4723 <welcome-file>index.jsp</welcome-file>
4724 </welcome-file-list>
4725
4726 </web-app>
通过上面的 web.xml 配置文件可以得知,有 servlet 和 servlet-mapping, session-config, mime-mapping, welcome-file-list 配置端。 其中 servlet 和 servlet-mapping 定了以 java 后台请求的入口, session-config 定义了 session 会话的配置, welcome-file-list 定义了 默认主页的访问顺序,根据默认配置,index.html 高于 index.htm 高于 index.jsp