Tomcat服务器、Tomcat虚拟主机、添加日志功能、SSL加密网站、Maven应用案例

1 案例1:安装部署Tomcat服务器

1.1 问题

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

  • 安装部署JDK基础环境
  • 安装部署Tomcat服务器
  • 创建JSP测试页面

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

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

1.2 方案

使用2台虚拟机,其中一台作为Tomcat服务器(192.168.99.100)、另外一台作为测试用的Linux客户机(192.168.99.5),如图-1所示。

使用RPM安装JDK基础环境

使用源码安装部署Tomcat服务器

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:部署Tomcat服务器软件

1)使用RPM安装JDK环境

    [root@web1 ~]# yum -y install  java-1.8.0-openjdk                #安装JDK
    [root@web1 ~]# java -version                                    #查看JAVA版本

2)安装Tomcat

    [root@web1 lnmp_soft]# tar -xf  apache-tomcat-8.0.30.tar.gz
    [root@web1 lnmp_soft]# mv apache-tomcat-8.0.30  /usr/local/tomcat
    [root@web1 lnmp_soft]# ls /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   
    [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

步骤二:修改Tomcat配置文件

1)创建静态页面

    [root@web1 tomcat]# echo  "tomcat-test~~~~"  >  webapps/ROOT/test01.html

浏览器访问http://192.168.99.100:8080/test01.html

2)测试JSP页面

    [root@web1 ~]# vim  /usr/local/tomcat/webapps/ROOT/test02.jsp
    <html>
    <body>
    <center>
    Now time is: <%=new java.util.Date()%>
    </center>
    </body>
    </html>

2 案例2:使用Tomcat部署虚拟主机

2.1 问题

沿用练习二,使用Tomcat部署加密虚拟主机,实现以下要求:

  • 实现两个基于域名的虚拟主机,域名分别为:www.a.com和 www.b.com
  • 访问页面时支持SSL加密通讯
  • 每个虚拟主机都拥有独立的访问日志文件

2.2 方案

修改server.xml配置文件,创建www.b.com虚拟主机,顺便修改原有虚拟主机为www.a.com

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:配置服务器虚拟主机

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

3 tomcat访问路径与页面位置

1)测试1

    [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    ...
    <Host name="www.b.com" appBase="web_b">            
    <Context  path=""  docBase=""  />           
    </Host>
    ...
    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

2)测试2

    [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    ...
    <Host name="www.b.com" appBase="web_b">
    <Context  path=""  docBase="abc"  />   #修改成abc
    </Host>
    ...
    mkdir  web_b/abc    #创建测试目录
    echo "web_b/abc/index.html"  >  web_b/abc/index.html  #测试页面
    重启tomcat
    [root@proxy tomcat]# curl www.b.com:8080    #查看,见到新路径
    web_b/abc/index.html

3)测试3

    [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    ...
    <Host name="www.b.com" appBase="web_b">
    <Context  path=""  docBase="/abc"  />        #修改成/abc
    </Host>
    ...
    mkdir  /abc  #创建测试目录
    echo  "/abc/index.html"  > /abc/index.html    #创建测试文件
    重启tomcat
    [root@proxy tomcat]# curl www.b.com:8080    #得到新路径
    /abc/index.html

4)测试4

    [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    ...
    <Host name="www.b.com" appBase="web_b>
    <Context  path="/test"  docBase="/abc"  />   #path后面添加内容可以匹配用户访问路径,当用户访问www.b.com:8080/test/时,看到的是/abc的内容,如果访问www.b.com:8080就看到web_b/ROOT的内容
    </Host>
    重启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)测试5

    [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    ...
    <Host name="www.b.com" appBase="web_b">
    <Context  path="/test"  docBase="abc"  />     #将/abc改成abc当用户访问www.b.com:8080/test/时,可以看到web_b/abc里的内容当用户访问www.b.com:8080时就看到web_b/ROOT的内容
    重启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
    ...
    <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文件,并浏览测试页面进行测试(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
    .. ..
    <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服务器

    [root@web1 ~]# /usr/local/tomcat/bin/shutdown.sh
    [root@web1 ~]# /usr/local/tomcat/bin/startup.sh

3)查看服务器日志文件

    [root@web1 ~]# ls /usr/local/tomcat/logs/

4 案例3:使用Maven部署网站系统

4.1 问题

通过安装配置Maven,实现如下目标:

  • 配置镜像地址
  • 打包并上线网站项目

4.2 方案

通过tar包安装Maven

  • 释放tar包,拷贝到/usr/local目录
  • 安装并运行数据库
  • 打包网站项目,之后利用tomcat上线该网站

4.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  
    <mirror>
              <id>nexus-aliyun</id>
              <mirrorOf>*</mirrorOf>
              <name>Nexus aliyun</name>
              <url>http://maven.aliyun.com/nexus/content/groups/public</url> 
    </mirror>

步骤二:配置数据库并打包项目

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

如果数据库密码输入错误

    mysqladmin password -uroot -p        #改密码,先输入旧密码,然后输入两次新密码

如果数据库密码忘记

    systemctl stop mariadb    #停服务
    yum -y remove mariadb-server   #删除
    rm -rf /var/lib/mysql/    #删除数据库文件,这样密码就没了
    yum -y install mariadb-server   #重装
    systemctl start mariadb   #启动数据库

2)打包项目

    [root@web1 CMS]# /usr/local/maven/bin/mvn clean package     #按照之前定义的
    公网服务器地址、数据库配置等内容打包项目,注意该命令要在CMS目录进行

步骤三:上线测试

    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看到"师说"页面则成功
相关推荐
sun0077001 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
oi772 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
学Linux的语莫3 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
Onlooker1293 小时前
云服务器部署WebSocket项目
服务器
学Linux的语莫3 小时前
搭建服务器VPN,Linux客户端连接WireGuard,Windows客户端连接WireGuard
linux·运维·服务器
legend_jz4 小时前
【Linux】线程控制
linux·服务器·开发语言·c++·笔记·学习·学习方法
黑牛先生4 小时前
【Linux】进程-PCB
linux·运维·服务器
Karoku0664 小时前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
安迁岚5 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql