tomcat是一个免费的,开放源代码的Web应用服务器,也是一个Servlet/JSP容器。Tomcat作为 Servlet容器,负责处理客户请求,把请求传送给servlet,并将servlet的响应传送回给客户。
Tomcat由一系列的组件构成,其中核心的组件有三个:
(1) web容器:完成web服务器的功能。
(2) servlet容器:名字为catalina,用于处理Servlet代码。
(3) JSP容器:用于将JSP动态网页翻译成Servlet代码。
servlet
Servlet 可以理解为是一个服务连接器,是用Java编写的服务器端程序,具有独立于平台和协议的特性,简单的理解: servlet就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。
JSP
JSP 是一种动态网页开发技术。它使用JSP 标签在HTML,网页中插入Java代码。标签通常以 <% 开头,以 %> 结束。
JSP是一种Java servlet,主要用于实现Java web 应用程序的用户界面部分。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
Java简介
java是一种跨平台、面向对象的程序设计语言,java技术具有卓越的通用性、高效性、平台移植性和安全性。
Java体系
java SE (标准版)
java EE (企业版)
JDK简介
JDK(Java Dveve | opement Kit)是Sun针对Java开发者推出的Java语言的软件开发工具包
JDK是整个Java的核心
包括Java运行环境
Java工具(编译、排错、打包等工具)
Java基础的类库
JDK简介
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服务器
部署Tomcat服务器软件
1)使用RPM安装JDK环境
[root@web1 ~]# yum -y install java-1.8.0-openjdk #安装java-JDK软件包
[root@web1 ~]# java -version #查看JAVA版本号
2)安装Tomcat
[root@web1 ~]# ls ~/lnmp_soft/apache-tomcat-8.0.30.tar.gz #查看软件包
/root/lnmp_soft/apache-tomcat-8.0.30.tar.gz
[root@web1 ~]# cd lnmp_soft/ #进入lnmp_soft
[root@web1 lnmp_soft]# tar -xf apache-tomcat-8.0.30.tar.gz #原地释放解压包
[root@web1 lnmp_soft]# cp -r apache-tomcat-8.0.30 /usr/local/tomcat #复制一份源文件(模板)到/usr/local/tomcat目录,后续可用来还原。
[root@web1 lnmp_soft]# ls /usr/local/tomcat #查看/usr/local/tomcat
bin/ #主程序目录
webapps/ #页面目录
conf/ #配置文件目录
logs/ #日志目录
temp/ #临时目录
work/ #自动编译目录
lib/ #库文件目录
3)启动服务
[root@web1 ~]# /usr/local/tomcat/bin/startup.sh #启动服务
4)服务器验证端口信息
[root@web1 ~]# ss -nutlp |grep java #查看java监听的端口
tcp 0 0 :::8080 :::* LISTEN 2778/java
tcp 0 0 :::8009 :::* LISTEN 2778/java
tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 2778/java
提示:如果检查端口时,8005端口启动非常慢,默认tomcat启动需要从/dev/random读取大量的随机数据,默认该设备生成随机数据的速度很慢,可用使用下面的命令用urandom替换random。
[root@web1 ~]# mv /dev/random /dev/random.bak
[root@web1 ~]# ln -s /dev/urandom /dev/random #创建软连接
[root@web1 ~]# killall java #杀死java进程
[root@web1 ~]# cd /usr/local/tomcat #进入tomcat
[root@web1 tomcat]# bin/startup.sh #启动服务
[root@web1 ~]# ss -nutlp |grep java #查看java端口
另外,还可以使用方案二解决:
[root@web1 ~]# yum install rng-tools #安装rng-tools软件包
[root@web1 ~]# systemctl start rngd #开启rngd
[root@web1 ~]# systemctl enable rngd #开机自启rngd
5)客户端浏览测试页面
http://192.168.99.100:8080
案例2:使用Tomcat部署虚拟主机
问题
沿用练习二,使用Tomcat部署加密虚拟主机,实现以下要求:
实现两个基于域名的虚拟主机,域名分别为:www.a.com和 www.b.com访问页面时支持SSL加密通讯每个虚拟主机都拥有独立的访问日志文件方案
修改server.xml配置文件,创建www.b.com虚拟主机,顺便修改原有虚拟主机为www.a.com
步骤
实现此案例需要按照如下步骤进行。
步骤一:配置服务器虚拟主机
1)修改server.xml配置文件,创建虚拟主机
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml #修改server.xml配置文件
...
...
...
2)创建虚拟主机对应的页面根路径并测试
[root@web1 tomcat]# mkdir -p web_b/ROOT #之后创建b网站的目录
[root@web1 tomcat]# echo "tomcat-A~~~" > webapps/ROOT/index.html
[root@web1 tomcat]# echo "tomcat-B~~~" > web_b/ROOT/index.html
tail -1 /etc/hosts #查看域名解析
192.168.99.100 www.a.com www.b.com
[root@web1 tomcat]# bin/shutdown.sh #关闭tomcat
[root@web1 tomcat]# bin/startup.sh #开启
[root@web1 tomcat]# curl www.a.com:8080 #测试
tomcat-A~~~
[root@web1 tomcat]# curl www.b.com:8080
tomcat-B~~~
3)查看虚拟主机www.a.com的配置
unpackWARs="true" #自动解war包
autoDeploy="true" #自动更新开发工程师编写的网站功能
[root@proxy tomcat]# yum -y install java-1.8.0-openjdk-devel #安装可以制作war包的工具
[root@proxy tomcat]# jar -cf a.war /var/log #之后可以使用jar命令打war包
[root@proxy tomcat]# cp a.war webapps #将war包放入虚拟主机的网页目录
[root@proxy tomcat]# ls webapps #检查,可以看到已经自动解开,如果无效可以尝试重启tomcat
3 tomcat访问路径与页面位置
1)测试1
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
...
...
[root@web1 ~]# echo "web_b/ROOT/index.html" > web_b/ROOT/index.html #默认页面路径
[root@web1 ~]# echo "web_b/index.html" > web_b/index.html #创建素材,定义新路径
[root@web1 ~]# curl www.b.com:8080 #测试可以看到的是默认的页面路径
web_b/ROOT/index.html
[root@web1 ~]# bin/shutdown.sh #关闭Tomcat
[root@web1 ~]# bin/stattup.sh #开启Tomcat
[root@web1 ~]# curl www.b.com:8080 #重启后测试可以看到新路径
web_b/index.html
2)测试
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
...
...
[root@web1 ~]# mkdir web_b/abc #创建测试目录
[root@web1 ~]# echo "web_b/abc/index.html" > web_b/abc/index.html #测试页面
[root@web1 ~]# bin/shutdown.sh #关闭Tomcat
[root@web1 ~]# bin/stattup.sh #开启Tomcat
[root@proxy tomcat]# curl www.b.com:8080 #查看,见到新路径
web_b/abc/index.html
3)测试
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
...
...
[root@web1 ~]# mkdir /abc #创建测试目录
[root@web1 ~]# echo "/abc/index.html" > /abc/index.html #创建测试文件
[root@web1 ~]# bin/shutdown.sh #关闭Tomcat
[root@web1 ~]# bin/stattup.sh #开启Tomcat
[root@proxy tomcat]# curl www.b.com:8080 #得到新路径
/abc/index.html
4)测试
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
...
[root@web1 ~]# bin/shutdown.sh #关闭Tomcat
[root@web1 ~]# bin/stattup.sh #开启Tomcat
[root@proxy tomcat]# curl www.b.com:8080/test/
/abc/index.html
[root@proxy tomcat]# curl www.b.com:8080
web_b/ROOT/index.html
5)测试
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
...
[root@web1 ~]# bin/shutdown.sh #关闭Tomcat
[root@web1 ~]# bin/stattup.sh #开启Tomcat
[root@proxy tomcat]# curl www.b.com:8080/test/
web_b/abc/index.html
[root@proxy tomcat]# curl www.b.com:8080
web_b/ROOT/index.html
步骤四:配置Tomcat支持SSL加密网站
1)创建加密用的私钥和证书文件
[root@web1 ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
#提示输入密码为:123456
#-genkeypair 生成密钥对
#-alias tomcat 密钥别名
#-keyalg RSA 定义密钥算法为RSA算法
#-keystore 定义密钥文件存储在:/usr/local/tomcat/keystore
2)再次修改server.xml配置文件,创建支持加密连接的Connector
[root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
...
maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456"/> ... #备注,默认这段Connector被注释掉了,打开注释,添加密钥信息即可 3)重启Tomcat服务器 [root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh #关闭Tomcat [root@web1 ~]# /usr/local/tomcat/bin/startup.sh #打开Tomcat 4)客户端设置host文件,并浏览测试页面进行测试(proxy可以充当客户端角色) [root@proxy ~]# vim /etc/hosts … … 192.168.99.100 www.a.com www.b.com 分别访问测试 https://www.a.com:8443/ https://www.b.com:8443/ 步骤五:配置Tomcat日志 1)为www.b.com虚拟主机开启日志 [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml .. .. ... #从默认localhost虚拟主机中把Valve这段复制过来,适当修改下即可 prefix="www-b-com" suffix=".log" pattern="%h %l %u %t "%r" %s %b" /> 2)重启Tomcat服务器 [root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh #关闭Tomcat [root@web1 ~]# /usr/local/tomcat/bin/startup.sh #打开Tomcat 3)查看服务器日志文件 [root@web1 ~]# ls /usr/local/tomcat/logs/ 案例3:使用Maven部署网站系统 1 问题 通过安装配置Maven,实现如下目标: 配置镜像地址打包并上线网站项目2 方案 通过tar包安装Maven 释放tar包,拷贝到/usr/local目录安装并运行数据库打包网站项目,之后利用tomcat上线该网站3 步骤 实现此案例需要按照如下步骤进行。 步骤一:安装maven工具,以及java环境 将三个文件传入虚拟机root的家目录,原地释放 apache-maven-3.6.3-bin.tar.gz #maven工具包 cms.tar.gz #网站项目 m2.tar.gz #依赖程序,释放之后是隐藏目录.m2 1)释放tar包,并拷贝到指定目录 [root@web1 ~]# tar -xf apache-maven-3.6.3-bin.tar.gz [root@web1 ~]# mv apache-maven-3.6.3 /usr/local/maven 2)安装java依赖包 [root@web1 ~]# yum -y install java-1.8.0-openjdk [root@web1 ~]# yum -y install java-devel 3)修改镜像地址,在第158行下添加 [root@web1 ~]# vim /usr/local/maven/conf/settings.xml 步骤二:配置数据库并打包项目 1)配置数据库 [root@web1 ~]# yum install -y mariadb-server [root@web1 ~]# systemctl start mariadb [root@web1 ~]# cd CMS/ [root@web1 CMS]# cp src/main/resources/shishuocms.properties . #拷贝网站数据库配置文件到当前目录,该文件定义了数据的用户名和密码等信息 [root@web1 CMS]# mysql -uroot < sql/install.sql #导入网站相关数据库文件 Enter password: 直接回车 [root@web1 CMS]# mysqladmin password #修改数据库密码 New password: #接下来输入12345678 Confirm new password: #在输入一次12345678 如果数据库密码输入错误 [root@web1 CMS]# mysqladmin password -uroot -p #改密码,先输入旧密码,然后输入两次新密码 如果数据库密码忘记 [root@web1 CMS]# systemctl stop mariadb #停服务 [root@web1 CMS]# yum -y remove mariadb-server #删除 [root@web1 CMS]# rm -rf /var/lib/mysql/ #删除数据库文件,这样密码就没了 [root@web1 CMS]# yum -y install mariadb-server #重装 [root@web1 CMS]# systemctl start mariadb #启动数据库 2)打包项目 [root@web1 CMS]# /usr/local/maven/bin/mvn clean package #按照之前定义的 公网服务器地址、数据库配置等内容打包项目,注意该命令要在CMS目录进行 步骤三:上线测试 [root@web1 CMS]# cp ~/lnmp_soft/apache-tomcat-8.0.30/conf/server.xml /usr/local/tomcat/conf/ [root@web1 CMS]# cp: 是否覆盖 "/usr/local/tomcat/conf/server.xml"? y #把tomcat的配置文件恢复默认 [root@web1 CMS]# bin/shutdown.sh #关闭Tomcat [root@web1 CMS]# bin/stattup.sh #开启Tomcat [root@web1 CMS]# rm -rf /usr/local/tomcat/webapps/ROOT #删除原有默认页面目录 [root@web1 CMS]# cp target/shishuocms-2.0.1.war /usr/local/tomcat/webapps /ROOT.war #将新项目移动到tomcat中,然后会自动解包,然后真机打开浏览器访问192.168.99.100:8080看到“师说”页面则成功