Tomcat

Java

  • Java

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

    • Java SE ( 标准版 )
    • Java EE ( 企业版 )
  • JDK 是整个 Java 的核心

    • JDK是 Java语言的软件开发工具包
    • JDK包括了整个Java运行环境
    • JDK是 Java工具
    • JDK是 Java基础的类库
  • JRE 是 JDK 的子集

  • JRE包括

    • Java虚拟机( jvm )

    • Java 核心类库和支持文件

    • 不包含开发工具(JDK)--编译器 , 调试器和其它工具

  • Java Servlet

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

Tomcat

  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
1. 部署Tomcat服务器软件

本案例要求部署Tomcat服务器,具体要求如下:

  • 安装部署JDK基础环境

  • 安装部署Tomcat服务器

  • 创建JSP测试页面

然后客户机访问此Web服务器验证效果:

  • 使用火狐浏览器访问Tomcat服务器的8080端口,浏览默认首页

  • 使用火狐浏览器访问Tomcat服务器的8080端口,浏览默认测试页面

1) 安装JDK环境并查看
yum -y install  java-1.8.0-openjdk             #安装JDK
java -version                                  #查看JAVA版本
2) 安装Tomcat
tar -xf  apache-tomcat-8.0.30.tar.gz
mv apache-tomcat-8.0.30  /usr/local/tomcat
ls /usr/local/tomcat
bin/                                            #主程序目录
webapps/                                        #页面目录
conf/                                        #配置文件目录
logs/                                          #日志目录  
temp/                                         #临时目录
work/                                        #自动编译目录
lib/                                            #库文件目录
3) 启动服务

/usr/local/tomcat/bin/startup.sh

4) 服务器端口信息
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   
    [root@web1 ~]# cd /usr/local/tomcat
    [root@web1 tomcat]# bin/startup.sh
    [root@web1 ~]# ss -nutlp |grep java

或者

    [root@web1 ~]# yum install rng-tools
    [root@web1 ~]# systemctl start rngd
    [root@web1 ~]# systemctl enable rngd
5) 客户端测试

http://192.168.99.100:8080

2. 修改Tomcat配置文件
1) 创建静态页面
 echo  "tomcat-test~~~~"  >  webapps/ROOT/test01.html
2) 测试 JSP 页面
vim  /usr/local/tomcat/webapps/ROOT/test02.jsp
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>

浏览器访问http://192.168.99.100:8080/test02.jsp

使用Tomcat部署虚拟主机

  • 使用Tomcat部署加密虚拟主机,实现以下要求:
    • 实现两个基于域名的虚拟主机,域名分别为:www.a.com和 www.b.com
    • 访问页面时支持SSL加密通讯
    • 每个虚拟主机都拥有独立的访问日志文件
  • 修改server.xml配置文件,创建www.b.com虚拟主机,顺便修改原有虚拟主机为www.a.com
1. 配置服务器虚拟主机
1) 修改server.xml配置文件,创建虚拟主机
    [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    ...
        <Host name="www.b.com" appBase="web_b">
        </Host>
        <Host name="www.a.com" appBase="webapps" unpackWARS="true" autoDeploy="true">
    ...
    ...
        </Host>
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

tomcat访问路径与页面位置

 vim /usr/local/tomcat/conf/server.xml
    ...
    <Host name="www.b.com" appBase="web_b">            
    <Context  path=""  docBase=""  />           
    </Host>
    # appBase 默认根目录
    # docBase 默认子目录/绝对路径目录
    # Context  path 访问名
    #
    ...
echo "web_b/ROOT/index.html" > web_b/ROOT/index.html   #默认页面路径
echo "web_b/index.html" > web_b/index.html   #创建素材,定义新路径

curl  www.b.com:8080   #测试可以看到的是默认的页面路径
    web_b/ROOT/index.html
    
    之后重启tomcat
    
curl  www.b.com:8080    #重启后测试可以看到新路径
    web_b/index.html
配置Tomcat支持SSL加密网站
1) 创建加密用 的私钥和证书文件
 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
im /usr/local/tomcat/conf/server.xml
...
<Connector port="8443"  \  protocol="org.apache.coyote.http11.Http11NioProtocol"

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
    [root@web1 ~]# /usr/local/tomcat/bin/startup.sh
4) 客户端host文件 , 命名
    [root@proxy ~]# vim /etc/hosts
    ... ...
    192.168.99.100      www.a.com  www.b.com

分别访问测试

curl -k https://www.a.com:8443/

curl -k https://www.b.com:8443/

配置Tomcat日志
1) 为www.b.com虚拟主机开启日志
    [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    .. ..
    <Host name="www.b.com" appBase="web_b" >
    ...
    #从默认localhost虚拟主机中把Valve这段复制过来,适当修改下即可
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="www-b-com" suffix=".log"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>
2) 重启 Tomcat服务器
3) 查看服务器日志文件
ls /usr/local/tomcat/logs/

使用Maven 部署网站系统

  • 目的 :
    • 配置镜像地址
    • 打包并上线网站项目
  • 方案 :
    • tar 安装 Maven
    • 释放 tar包 , 拷贝到/usr/local目录
    • 安装并运行数据库
    • 打包网站项目 , 之后利用tomcat上线该网站
1. 安装 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 行下添加
vim /usr/local/maven/conf/settings.xml  
<mirror>
          <id>nexus-aliyun</id>
          <mirrorOf>*</mirrorOf>
          <name>Nexus aliyun</name>
          <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
</mirror>
2. 配置数据库并打包
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

如果数据库密码忘记

    systemctl stop mariadb    #停服务
    yum -y remove mariadb-server   #删除
    rm -rf /var/lib/mysql/    #删除数据库文件,这样密码就没了
    yum -y install mariadb-server   #重装
    systemctl start mariadb   #启动数据库
2) 打包项目
/usr/local/maven/bin/mvn clean package 
3. 上线测试
    cp  ~/lnmp_soft/apache-tomcat-8.0.30/conf/server.xml  /usr/local/tomcat/conf/
    cp: 是否覆盖 "/usr/local/tomcat/conf/server.xml"?  y      #把tomcat的配置
    文件恢复默认
    重启tomcat 
    rm  -rf  /usr/local/tomcat/webapps/ROOT   #删除原有默认页面目录
    cp  target/shishuocms-2.0.1.war  /usr/local/tomcat/webapps/ROOT.war  
    #将新项目移动到tomcat中,然后会自动解包,然后真机打开浏览器访问
    192.168.99.100:8080看到"师说"页面则成功
相关推荐
AskHarries1 分钟前
Java字节码增强库ByteBuddy
java·后端
海阔天空_201313 分钟前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
小灰灰__21 分钟前
IDEA加载通义灵码插件及使用指南
java·ide·intellij-idea
零意@22 分钟前
ubuntu切换不同版本的python
windows·python·ubuntu
夜雨翦春韭24 分钟前
Java中的动态代理
java·开发语言·aop·动态代理
思忖小下33 分钟前
Python基础学习_01
python
程序媛小果1 小时前
基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
java·vue.js·spring boot
追风林1 小时前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
芒果披萨1 小时前
El表达式和JSTL
java·el
q567315231 小时前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash