任务1 Tomcat介绍

1、简介

Tomcat是Apache软件基金会( Apache Software Foundation )的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。受Java爱好者的喜爱,并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
Tomcat服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。目前有很多网站是用Java编写的,所以解析。
Java程序就必须有相关的软件来完成,Tomcat就是其中之一。
Java程序写的网站用Tomcat+JDK来运行。
Tomcat是一个中间件,真正起作用的,解析Java脚本的是JDK。
JDK(Java Development Kit)是整个Java的核心,它包含了Java运行环境和一堆Java相关的工具以及Java基础库。最主流的JDK为Sun公司发布的JDK,除此之外,其实IBM公司也有发布JDK,CentOS上也可以用yum安装OpenJDK。

2、 环境准备

规划节点,本次实验为单节点部署:

节点IP 主机名 节点
192.168.100.10 tomcat Tomcat
  1. 关闭防火墙并设置开机不自启
  2. [root@tomcat ~]# systemctl stop firewalld
  3. [root@tomcat ~]# systemctl disable firewalld
  4. Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
  5. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  6. [root@tomcat ~]# setenforce 0
  7. [root@tomcat ~]#

3、修改主机名

  1. //修改主机名,可修改为tomcat
  2. [root@localhost ~]# hostnamectl set-hostname tomcat
  3. [root@localhost ~]# su
  4. [root@tomcat ~]#

任务2 安装JDK

1、JDK的下载

使用浏览器访问这个地址下载
https://www.oracle.com/java/technologies/javase-downloads.html
下载需要注册账号,注册一个即可。
通过CRT上传JDK到/usr/local/src/目录下。
image.png

2、JDK安装

  1. 上传jdk
  2. [root@tomcat ~]# cd /usr/local/src/
  3. [root@tomcat src]# ls
  4. jdk-8u301-linux-x64.tar.gz
  5. [root@tomcat src]#
  6. 解压jdk
  7. [root@tomcat src]# tar -zxvf jdk-8u301-linux-x64.tar.gz
  8. 移动到/usr/local/目录下改名为jdk1.8
  9. [root@tomcat src]# mv jdk1.8.0_301/ /usr/local/jdk1.8
  10. [root@tomcat src]# ls /usr/local/
  11. bin etc games include jdk1.8 lib lib64 libexec mysql sbin share src
  12. [root@tomcat src]#

3、修改环境变量

  1. [root@tomcat src]# vim /etc/profile
  2. 将以下内容添加到文件底部
  3. JAVA_HOME=/usr/local/jdk1.8/
  4. JAVA_BIN=/usr/local/jdk1.8/bin
  5. JRE_HOME=/usr/local/jdk1.8/jre
  6. PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
  7. CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar
  8. 刷新环境变量
  9. [root@tomcat src]# source /etc/profile

4、检查JDK安装情况

  1. [root@tomcat src]# java -version
  2. java version "1.8.0_301"
  3. Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
  4. Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

任务3 安装Tomcat

1、安装Tomcat

官网下载地址:http://tomcat.apache.org/
image.png
CRT上传到虚拟机/usr/local/src/目录下

  1. [root@tomcat src]# ls
  2. apache-tomcat-8.5.70.tar.gz jdk-8u301-linux-x64.tar.gz
  3. 解压
  4. [root@tomcat src]# tar -zxvf apache-tomcat-8.5.70.tar.gz
  5. 移动文件到/usr/local目录下,并命名为tomcat
  6. [root@tomcat src]# mv apache-tomcat-8.5.70 /usr/local/tomcat
  7. [root@tomcat src]#

2、启动Tomcat

  1. 启动Tomcat
  2. [root@tomcat src]# /usr/local/tomcat/bin/startup.sh
  3. Using CATALINA_BASE: /usr/local/tomcat
  4. Using CATALINA_HOME: /usr/local/tomcat
  5. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  6. Using JRE_HOME: /usr/local/jdk1.8
  7. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  8. Using CATALINA_OPTS:
  9. Tomcat started.
  10. [root@tomcat src]#

3、测试

  1. [root@tomcat src]# netstat -lnpt | grep java
  2. tcp6 0 0 127.0.0.1:8005 :::* LISTEN 4870/java
  3. tcp6 0 0 :::8080 :::* LISTEN 4870/java
  4. [root@tomcat src]#

8080为提供Web服务的端口;
8005为管理端口;
默认有8080和8005端口即可。
8009端口为第三方服务调用的端口,比如httpd和Tomcat结合时会用到。
这时打开浏览器输入地址http://192.168.100.10:8080即可查看tomcat默认页面。
image.png

任务4 配置Tomcat监听80端口

1、修改配置文件

Tomcat 监听的是8080端口,如果想要直接访问,不加8080端口(默认输入一个IP或者域名,访问80端口时是可以省略IP后端口号的)就需要配置Tomcat监听80端口,Tomcat是支持端口自定义的。

  1. [root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml
  2. 直接搜索8080找到如下内容
  3. <Connector port="8080" protocol="HTTP/1.1"
  4. connectionTimeout="20000"
  5. redirectPort="8443" />
  6. 将这里的8080直接改成80
  7. <Connector port="80" protocol="HTTP/1.1"
  8. connectionTimeout="20000"
  9. redirectPort="8443" />

image.png

  1. 关闭服务
  2. [root@tomcat ~]# /usr/local/tomcat/bin/shutdown.sh
  3. Using CATALINA_BASE: /usr/local/tomcat
  4. Using CATALINA_HOME: /usr/local/tomcat
  5. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  6. Using JRE_HOME: /usr/local/jdk1.8
  7. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  8. Using CATALINA_OPTS:
  9. 启动服务
  10. [root@tomcat ~]# /usr/local/tomcat/bin/startup.sh
  11. Using CATALINA_BASE: /usr/local/tomcat
  12. Using CATALINA_HOME: /usr/local/tomcat
  13. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  14. Using JRE_HOME: /usr/local/jdk1.8
  15. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  16. Using CATALINA_OPTS:
  17. Tomcat started.
  18. [root@tomcat ~]#

2、测试

  1. [root@tomcat ~]# netstat -plnt | grep java
  2. tcp6 0 0 127.0.0.1:8005 :::* LISTEN 4963/java
  3. tcp6 0 0 :::80 :::* LISTEN 4963/java
  4. [root@xinshaohua ~]#

image.png

任务5 配置Tomcat虚拟主机

1、查看默认虚拟主机

  1. [root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml
  2. <Host name="localhost" appBase="webapps"
  3. unpackWARs="true" autoDeploy="true">
  4. <!-- SingleSignOn valve, share authentication between web applications
  5. Documentation at: /docs/config/valve.html -->
  6. <!--
  7. <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
  8. -->
  9. <!-- Access log processes all example.
  10. Documentation at: /docs/config/valve.html
  11. Note: The pattern used is equivalent to using pattern="common" -->
  12. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  13. prefix="localhost_access_log" suffix=".txt"
  14. pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  15. </Host>
  16. # 这是一个默认的虚拟主机
  17. # 其中<Host>和</Host>之间的配置为虚拟主机配置部分:
  18. # name定义域名;
  19. # appBase定义应用的目录;
  20. # unpackWARs为是否自动解压war包;
  21. # autoDeploy 如果此项设置为true,表示Tomcat服务处于运行状态,
  22. # 能够检测appbase下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用。
  23. # 自动解压war包
  24. [root@tomcat tomcat]# ls /usr/local/tomcat/webapps/
  25. docs examples host-manager manager ROOT
  26. [root@tomcat tomcat]#

Java的应用通常是一个JAR的压缩包,你只需要将JAR的压缩包放到appBase目录下面即可。
刚刚我访问的Tomcat默认页其实就是在appBase目录下面,不过是在它子目录ROOT里

  1. [root@tomcat tomcat]# ls /usr/local/tomcat/webapps/ROOT/
  2. asf-logo-wide.svg bg-middle.png bg-upper.png index.jsp tomcat.css WEB-INF
  3. bg-button.png bg-nav.png favicon.ico RELEASE-NOTES.txt tomcat.svg
  4. [root@tomcat tomcat]#

image.png

2、新增虚拟主机

  1. [root@tomcat ~]# vim /usr/local/tomcat/conf/server.xml
  2. 新增虚拟主机,编辑server.xml在</Host>下面增加以下内容
  3. <Host name="www.123.cn" appBase=""
  4. unpackWARs="true" autoDeploy="true"
  5. xmlValidation="false" xmlNamespaceAware="false">
  6. <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
  7. </Host>

image.png

3、appBase部署Java应用

下载一个zrlog(Java写的blog站点应用,轻量),zrlog实际就是一个war包。
(下载地址:http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war)
image.png

  1. [root@tomcat ~]# cd /usr/local/src/
  2. [root@tomcat src]# ls
  3. apache-tomcat-8.5.70.tar.gz jdk-8u301-linux-x64.tar.gz zrlog-1.7.1-baaecb9-release.war
  4. [root@tomcat src]#
  5. appBase支持自动解压,所以直接将war包移动到/usr/local/tomcat/webapps/目录下
  6. [root@tomcat src]# mv zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/
  7. [root@tomcat src]# cd /usr/local/tomcat/webapps/
  8. [root@tomcat webapps]# ls
  9. docs host-manager ROOT zrlog-1.7.1-baaecb9-release.war
  10. examples manager zrlog-1.7.1-baaecb9-release
  11. [root@tomcat webapps]#
  12. 重命名war包的文件名
  13. [root@tomcat webapps]# mv zrlog-1.7.1-baaecb9-release zrlog
  14. [root@tomcat webapps]# ls
  15. docs examples host-manager manager ROOT zrlog zrlog-1.7.1-baaecb9-release.war
  16. [root@tomcat webapps]#

用浏览器访问http://192.168.100.10/zrlog

image.png

  1. [root@tomcat webapps]# yum install -y mariadb-server
  2. [root@tomcat webapps]# systemctl start mariadb
  3. [root@tomcat webapps]# netstat -ntlp
  4. Active Internet connections (only servers)
  5. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  6. tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 11951/mysqld
  7. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 937/sshd
  8. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1091/master
  9. tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1507/java
  10. tcp6 0 0 :::80 :::* LISTEN 1507/java
  11. tcp6 0 0 :::22 :::* LISTEN 937/sshd
  12. tcp6 0 0 ::1:25 :::* LISTEN 1091/master
  13. [root@tomcat webapps]#
  14. 配置密码,一个回车 yynyy
  15. [root@tomcat webapps]# mysql_secure_installation
  16. NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
  17. SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
  18. In order to log into MariaDB to secure it, we'll need the current
  19. password for the root user. If you've just installed MariaDB, and
  20. you haven't set the root password yet, the password will be blank,
  21. so you should just press enter here.
  22. Enter current password for root (enter for none):
  23. OK, successfully used password, moving on...
  24. Setting the root password ensures that nobody can log into the MariaDB
  25. root user without the proper authorisation.
  26. Set root password? [Y/n] y
  27. New password:
  28. Re-enter new password:
  29. Password updated successfully!
  30. Reloading privilege tables..
  31. ... Success!
  32. By default, a MariaDB installation has an anonymous user, allowing anyone
  33. to log into MariaDB without having to have a user account created for
  34. them. This is intended only for testing, and to make the installation
  35. go a bit smoother. You should remove them before moving into a
  36. production environment.
  37. Remove anonymous users? [Y/n] y
  38. ... Success!
  39. Normally, root should only be allowed to connect from 'localhost'. This
  40. ensures that someone cannot guess at the root password from the network.
  41. Disallow root login remotely? [Y/n] n
  42. ... skipping.
  43. By default, MariaDB comes with a database named 'test' that anyone can
  44. access. This is also intended only for testing, and should be removed
  45. before moving into a production environment.
  46. Remove test database and access to it? [Y/n] y
  47. - Dropping test database...
  48. ... Success!
  49. - Removing privileges on test database...
  50. ... Success!
  51. Reloading the privilege tables will ensure that all changes made so far
  52. will take effect immediately.
  53. Reload privilege tables now? [Y/n] y
  54. ... Success!
  55. Cleaning up...
  56. All done! If you've completed all of the above steps, your MariaDB
  57. installation should now be secure.
  58. Thanks for using MariaDB!
  59. [root@tomcat webapps]#
  1. [root@tomcat webapps]# mysql -uroot -p123456
  2. Welcome to the MariaDB monitor. Commands end with ; or \g.
  3. Your MariaDB connection id is 12
  4. Server version: 5.5.68-MariaDB MariaDB Server
  5. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
  6. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  7. 创建数据库
  8. MariaDB [(none)]> create database zrlog;
  9. Query OK, 1 row affected (0.00 sec)
  10. 创建zrlog用户并授权
  11. MariaDB [(none)]> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by '123456';
  12. Query OK, 0 rows affected (0.00 sec)
  13. MariaDB [(none)]> exit
  14. Bye
  15. [root@tomcat webapps]# systemctl restart mariadb

image.png
image.png
image.png
点击管理
image.png
image.png

4. ocBase部署Java应用

  1. 创建docBase目录
  2. [root@tomcat webapps]# mkdir -p /data/wwwroot/123.cn
  3. 将/usr/local/tomcat/webapps/zrlog 中的所有文件移动到/data/wwwroot/123.cn/目录下
  4. [root@tomcat webapps]# mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/
  5. [root@tomcat webapps]# vim /usr/local/tomcat/conf/server.xml
  6. <Host name="www.123.cn" appBase=""
  7. unpackWARs="true" autoDeploy="true"
  8. xmlValidation="false" xmlNamespaceAware="false">
  9. <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>
  10. </Host>
  1. 接下来在Windows下绑定hosts文件
  2. hosts文件路径:C:\Windows\System32\drivers\etc
  3. 在文件下面添加
  4. 192.168.100.10 www.123.cn

docBase这个参数用来定义网站的文件存放路径。如果不定义,默认是在appBase/ROOT下面。定义了docBase就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多人会遇到过访问404的问题,其实就是docBase没有定义对。
appBase为应用存放目录(实际上是一个相对路径,相对于 /usr/local/tomcat/ 路径),通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录。
搭建了一个Tomcat,想要使用Tomcat去跑一个网站。首先应用不能是一个传统所谓的目录(Apache、Nginx访问网站,首先需要指定一个目录,目录里存放着PHP文件或者是Html的文件,然后去访问),Tomcat需要提供一个war的包,就是一个压缩包,这个压缩包里面包含着运行这个网站的一些文件,包括配置,js代码,数据库相关的等等,都需要打包成war这种文件,而这个文件需要放置到 webapps 里面。
测试

  1. 重启服务,然后等8005端口启动
  2. [root@tomcat webapps]# /usr/local/tomcat/bin/shutdown.sh
  3. Using CATALINA_BASE: /usr/local/tomcat
  4. Using CATALINA_HOME: /usr/local/tomcat
  5. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  6. Using JRE_HOME: /usr/local/jdk1.8
  7. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  8. Using CATALINA_OPTS:
  9. [root@tomcat webapps]# /usr/local/tomcat/bin/startup.sh
  10. Using CATALINA_BASE: /usr/local/tomcat
  11. Using CATALINA_HOME: /usr/local/tomcat
  12. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  13. Using JRE_HOME: /usr/local/jdk1.8
  14. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  15. Using CATALINA_OPTS:
  16. Tomcat started.
  17. [root@tomcat webapps]# netstat -ntlp |grep java
  18. tcp6 0 0 127.0.0.1:8005 :::* LISTEN 12536/java
  19. tcp6 0 0 127.0.0.1:47145 :::* LISTEN 12556/java
  20. tcp6 0 0 127.0.0.1:27145 :::* LISTEN 12556/java
  21. tcp6 0 0 :::80 :::* LISTEN 12536/java
  22. tcp6 0 0 127.0.0.1:57145 :::* LISTEN 12556/java
  23. [root@tomcat webapps]#

重启Tomcat服务完成后,打开浏览器在地址栏输入www.123.cn,就可以看到zrlog的首页。
image.png

任务6 Tomcat日志

1、查看日志

  1. [root@tomcat webapps]# ls /usr/local/tomcat/logs/
  2. catalina.2021-08-22.log localhost.2021-08-22.log zrlog
  3. catalina.out localhost_access_log.2021-08-22.txt
  4. host-manager.2021-08-22.log manager.2021-08-22.log
  5. [root@tomcat webapps]#

catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。
catalina.2021-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志。
host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。
localhost和localhost-access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为 默认虚拟主机的错误日志。

2、配置生成日志

由于日志默认不会生成,需要在server.xml中配置一下。
配置方法就是在对应虚拟主机的里面加入下面的配置

  1. [root@tomcat webapps]# vim /usr/local/tomcat/conf/server.xml
  2. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  3. prefix="www.123.cn_access_log" suffix=".txt"
  4. pattern="%h %l %u %t &quot;%r&quot; %s %b" />

image.png
valve为日志文件配置;
prefix定义访问日志的前缀;
suffix定义日志的后缀;
pattern定义日志格式。

  1. 重启服务
  2. [root@tomcat webapps]# /usr/local/tomcat/bin/shutdown.sh
  3. Using CATALINA_BASE: /usr/local/tomcat
  4. Using CATALINA_HOME: /usr/local/tomcat
  5. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  6. Using JRE_HOME: /usr/local/jdk1.8
  7. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  8. [root@tomcat webapps]# /usr/local/tomcat/bin/startup.sh
  9. Using CATALINA_BASE: /usr/local/tomcat
  10. Using CATALINA_HOME: /usr/local/tomcat
  11. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  12. Using JRE_HOME: /usr/local/jdk1.8
  13. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  14. Tomcat started.
  15. 查看是否有日志生成
  16. [root@tomcat webapps]# ls /usr/local/tomcat/logs/
  17. catalina.2021-08-22.log localhost_access_log.2021-08-22.txt
  18. catalina.out manager.2021-08-22.log
  19. host-manager.2021-08-22.log www.123.cn_access_log.2021-08-22.txt
  20. localhost.2021-08-22.log zrlog
  21. [root@tomcat webapps]#
  22. 查看日志多出来就是我们这个虚拟主机的访问日志