Tomcat基础

Java简介

  • java

    是一种跨平台的、面向对象的程序语言设计,java技术具有卓越的通用性、高效性、平台移植性和安全性

  • java体系

    Java SE(标准版)

    Java EE(企业版)

JDK简介

  • JDK(Java Development Kit)

    是Sun针对Java开发者推出的Java语言的软件开发工具包

  • JDK是Java的核心

    包括了Java的运行环境

    Java工具(如编译、排除、打包等工具)

    Java基础的类库

  • JRE(Java Runtime Environment, Java运行环境)

    JRE是JDK的子集

  • JRE包括

    Java虚拟机(jvm)

    Java核心类库和支持文件

    不包含开发工具(JDK)–编译器、调试器和其它工具

Java Servlet

  • Servlet是java扩展Web服务器功能的组件规范

  • 常见Servlet容器

    IBM websphere

    Oracle weblogic

    Apache tomcat

    RedHat Jboss

部署Tomcat

安装JDK

  • 在web1安装JDK软件包
1
[root@web1 ~]# yum install java-11-openjdk -y

安装Tomcat

1
2
3
4
5
6
7
8
9
10
[root@web1 ~]# tar xf apache-tomcat-10.1.7.tar.gz 
[root@web1 ~]# mv apache-tomcat-10.1.7/ /usr/local/tomcat
[root@web1 ~]# ls /usr/local/tomcat
bin/ #主程序目录
lib/ #库文件目录
logs/ #日志目录
temp/ #临时目录
work/ #自动编译目录jsp代码转换servlet
conf/ #配置文件目录
webapps/ #页面目录
  • 每次tomcat启动,都需要从/dev/random中读取大量随机数据

  • 如果没有足够的随机数据,则tomcat无法启动

    查看端口会发现8005没有启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@web1 ~]# /usr/local/tomcat/bin/startup.sh 
[root@web1 ~]# ss -nutlp |grep java
[root@web1 ~]# mv /dev/random /dev/random.bak
[root@web1 ~]# ln -s /dev/urandom /dev/random

#启动
[root@web1 ~]# /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
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@web1 ~]# ss -nutlp |grep java
tcp LISTEN 0 1 ::ffff:127.0.0.1:8005 :::* users:(("java",pid=18649,fd=53))
tcp LISTEN 0 100 :::8080 :::* users:(("java",pid=18649,fd=42))

客户端测试(tomcat默认端口是8080)

1
http://192.168.1.10:8080

Tomcat服务器配置

Tomcat虚拟主机

XML配置文件框架

  • 主配置文件/usr/local/tomcat/conf/server.xml
1
2
3
4
5
6
7
8
9
10
[root@web1 ~]# cat /usr/local/tomcat/conf/server.xml
<Server>
<Server>
<Connector port=8080/>
<Connector port=8009/>
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="a-webapps" unpackWARs="true" autoDeploy="true">
</Host>
<Host name="localhost" appBase="b-webapps" unpackWARs="true" autoDeploy="true">
</Host>
  • Host 虚拟主机

  • name 域名

  • appBase 网页存放目录

  • unpackWARS 自动解压war包(把war包放在webapps下会自动解压)

  • autoDeploy 代码改变自动部署

  • Enfine中defaultHost表示默认虚拟主机

基于域名的虚拟主机

  • 修改server.xml文档、创建网站目录、重启服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
······
<Host name="www.a.com" appBase="a"
unpackWARs="true" autoDeploy="true">

</Host>
<Host name="www.b.com" appBase="b"
unpackWARs="true" autoDeploy="true">
</Host>

[root@web1 ~]# mkdir -p /usr/local/tomcat/{a,b}/ROOT
[root@web1 ~]# echo "AAA" > /usr/local/tomcat/a/ROOT/index.html
[root@web1 ~]# echo "BBB" > /usr/local/tomcat/b/ROOT/index.html
[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@web1 ~]# /usr/local/tomcat/bin/startup.sh

客户端测试

  • 修改hosts域名解析

    windows:C:\Windows\System32\drivers\etc\hosts

    [管理员身份打开记事本]

  • linux: /etc/hosts

1
2
http://www.a.com:8080
http://www.b.com:8080

修改虚拟主机配置

  • 修改docBase和path参数
1
2
3
4
5
6
7
8
9
10
11
12
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
······
<Host name="www.b.com" appBase="b"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="base"/>
<Context path="/test" docBase="/usr/local/nginx/html/"/>
</Host>

[root@web1 ~]# mkdir /usr/local/tomcat/b/base/
[root@web1 ~]# echo "BASE" > /usr/local/tomcat/b/base/index.html
[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@web1 ~]# /usr/local/tomcat/bin/startup.sh
  • docBase表示默认首页位置
  • path表示地址重写,打开docBase中的路径

客户端测试

1
2
http://www.b.com:8080
http://www.b.com:8080/test

SSL加密网站

生成公钥和证书

1
2
3
4
5
6
7
[root@web1 ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
Enter keystore password: 123456
Re-enter new password: 123456
#-genkeypair 生成密钥对
#-alias 密钥别名
#-keyalg 定义密钥算法
#-keystore 定义密钥文件存放路径

修改server.xml文件、重启tomcat

1
2
3
4
5
6
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
······· #修改
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456">
</Connector>
[root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh
[root@web1 ~]# /usr/local/tomcat/bin/startup.sh

客户端访问代理服务器测试效果

1
2
3
https://192.168.1.10
https://www.a.com
https://www.b.com