• Nginx 学习(五)Tomcat 服务器


    一  Tomcat 服务器

    1  概述

    (1)Java 简介

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

    (2)Java体系

    Java SE (标准版)

    Java EE (企业版)

    (3)JDK (Java Development Kit)

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

    JDK是整个Java的核心,包括了Java运行环境和Java工具(如编译、排错、打包等工具)以及Java基础的类库

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

    JRE是JDK的子集,包括

    • Java虚拟机 (jvm)
    • Java核心类库和支持文件
    • 不包含开发工具(JDK)--编译器、调试器和其它工具

    (5)Java Servlet  

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

    常见Servlet容器

    • IBM            websphere
    • 0racle         weblogic
    • Apache       tomcat
    • RedHat      Jboss

    2  安装

    -  问题

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

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

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

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

    - 方案

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

    使用RPM安装JDK基础环境

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

    - 步骤

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

    1)使用RPM安装JDK环境

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

    2)安装Tomcat

    1. [root@web1 lnmp_soft]# tar -xf apache-tomcat-8.0.30.tar.gz
    2. [root@web1 lnmp_soft]# mv apache-tomcat-8.0.30 /usr/local/tomcat
    3. [root@web1 lnmp_soft]# ls /usr/local/tomcat
    4. bin/ #主程序目录
    5. webapps/ #页面目录
    6. conf/ #配置文件目录
    7. logs/ #日志目录
    8. temp/ #临时目录
    9. work/ #自动编译目录
    10. lib/ #库文件目录

    3)启动服务

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

    4)服务器验证端口信息

    1. [root@web1 ~]# ss -nutlp |grep java #查看java监听的端口
    2. tcp 0 0 :::8080 :::* LISTEN 2778/java
    3. tcp 0 0 :::8009 :::* LISTEN 2778/java
    4. tcp 0 0 ::ffff:127.0.0.1:8005 :::* LISTEN 2778/java

    提示:如果检查端口时,8005端口启动非常慢,默认tomcat启动需要从/dev/random读取大量的随机数据,默认该设备生成随机数据的速度很慢,可用使用下面的命令用urandom替换random。

    1. [root@web1 ~]# mv /dev/random /dev/random.bak
    2. [root@web1 ~]# ln -s /dev/urandom /dev/random
    3. [root@web1 ~]# killall java
    4. [root@web1 ~]# cd /usr/local/tomcat
    5. [root@web1 tomcat]# bin/startup.sh
    6. [root@web1 ~]# ss -nutlp |grep java

    另外,还可以使用方案二解决:

    1. [root@web1 ~]# yum install rng-tools
    2. [root@web1 ~]# systemctl start rngd
    3. [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页面

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

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

    二  使用Tomcat部署虚拟主机

    1  问题

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

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

    2  方案

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

    3  步骤

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

    1)修改server.xml配置文件,创建虚拟主机

    1. [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    2. ...
    3. <Host name="www.b.com" appBase="web_b">
    4. </Host>
    5. <Host name="www.a.com" appBase="webapps" unpackWARS="true" autoDeploy="true">
    6. ...
    7. ...
    8. </Host>

    2)创建虚拟主机对应的页面根路径并测试

    1. [root@web1 tomcat]# mkdir -p web_b/ROOT #之后创建b网站的目录
    2. [root@web1 tomcat]# echo "tomcat-A~~~" > webapps/ROOT/index.html
    3. [root@web1 tomcat]# echo "tomcat-B~~~" > web_b/ROOT/index.html
    4. tail -1 /etc/hosts #查看域名解析
    5. 192.168.99.100 www.a.com www.b.com
    6. [root@web1 tomcat]# bin/shutdown.sh #关闭tomcat
    7. [root@web1 tomcat]# bin/startup.sh #开启
    8. [root@web1 tomcat]# curl www.a.com:8080 #测试
    9. tomcat-A~~~
    10. [root@web1 tomcat]# curl www.b.com:8080
    11. tomcat-B~~~

    3)查看虚拟主机www.a.com的配置

    unpackWARs="true"     # 自动解war包

    autoDeploy="true"        # 自动更新开发工程师编写的网站功能

    1. [root@proxy tomcat]# yum -y install java-1.8.0-openjdk-devel # 安装可以制作war包的工具
    2. [root@proxy tomcat]# jar -cf a.war /var/log # 之后可以使用jar命令打war包
    3. [root@proxy tomcat]# cp a.war webapps # 将war包放入虚拟主机的网页目录
    4. [root@proxy tomcat]# ls webapps #检查,可以看到已经自动解开,如果无效可以尝试重启tomcat

    步骤二:tomcat访问路径与页面位置

    1)测试1

    1. [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    2. ...
    3. <Host name="www.b.com" appBase="web_b">
    4. <Context path="" docBase="" />
    5. </Host>
    6. ...
    7. echo "web_b/ROOT/index.html" > web_b/ROOT/index.html #默认页面路径
    8. echo "web_b/index.html" > web_b/index.html #创建素材,定义新路径
    9. curl www.b.com:8080 #测试可以看到的是默认的页面路径
    10. web_b/ROOT/index.html
    11. 之后重启tomcat
    12. curl www.b.com:8080 #重启后测试可以看到新路径
    13. web_b/index.html

    2)测试2

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

    3)测试3

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

    4)测试4

    1. [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    2. ...
    3. <Host name="www.b.com" appBase="web_b>
    4. /test" docBase="/abc" /> #path后面添加内容可以匹配用户访问路径,当用户访问www.b.com:8080/test/时,看到的是/abc的内容,如果访问www.b.com:8080就看到web_b/ROOT的内容
    5. 重启tomcat
    6. [root@proxy tomcat]# curl www.b.com:8080/test/
    7. /abc/index.html
    8. [root@proxy tomcat]# curl www.b.com:8080
    9. web_b/ROOT/index.html

    5)测试5

    1. [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    2. ...
    3. <Host name="www.b.com" appBase="web_b">
    4. <Context path="/test" docBase="abc" /> #将/abc改成abc当用户访问www.b.com:8080/test/时,可以看到web_b/abc里的内容当用户访问www.b.com:8080时就看到web_b/ROOT的内容
    5. 重启tomcat
    6. [root@proxy tomcat]# curl www.b.com:8080/test/
    7. web_b/abc/index.html
    8. [root@proxy tomcat]# curl www.b.com:8080
    9. web_b/ROOT/index.html

    Tomcat 工作原理

     

    步骤三:配置Tomcat支持SSL加密网站

    1)创建加密用的私钥和证书文件

    1. [root@web1 ~]# keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore #提示输入密码为:123456
    2. #-genkeypair 生成密钥对
    3. #-alias tomcat 密钥别名
    4. #-keyalg RSA 定义密钥算法为RSA算法
    5. #-keystore 定义密钥文件存储在:/usr/local/tomcat/keystore

    2)再次修改server.xml配置文件,创建支持加密连接的Connector

    1. [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    2. ...
    3. <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
    4. maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
    5. clientAuth="false" sslProtocol="TLS"
    6. keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456"/>
    7. ...
    8. #备注,默认这段Connector被注释掉了,打开注释,添加密钥信息即可

    3)重启Tomcat服务器

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

    4)客户端设置host文件,并浏览测试页面进行测试(proxy可以充当客户端角色)

    1. [root@proxy ~]# vim /etc/hosts
    2. … …
    3. 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虚拟主机开启日志

    1. [root@web1 ~]# vim /usr/local/tomcat/conf/server.xml
    2. .. ..
    3. <Host name="www.b.com" appBase="web_b" >
    4. ...
    5. #从默认localhost虚拟主机中把Valve这段复制过来,适当修改下即可
    6. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    7. prefix="www-b-com" suffix=".log"
    8. pattern="%h %l %u %t "%r" %s %b" />
    9. </Host>

    2)重启Tomcat服务器

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

    3)查看服务器日志文件

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

    四  Maven

    1  概述

    Maven是一个软件项目管理工具,可以基于项目对象模型(POM),管理项目的构建、报告和文档。

    POM (project Object Model) 项目对象模型,它是一个XML文件,包含了Maven创建项目的基本信息、构建过程项目依赖等

    程序员编写项目时,需要使用各种依赖程序,之后还需要打包、测试之后才能发布到生产环境,这复杂的过程利用Maven可以极大的提高开发效率

    可以配合Maven来提高开发效率的还有工具SpringBoot

    可以创建独立应用,简化Maven配置 

    五  使用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包,并拷贝到指定目录

    1. [root@web1 ~]# tar -xf apache-maven-3.6.3-bin.tar.gz
    2. [root@web1 ~]# mv apache-maven-3.6.3 /usr/local/maven

    2)安装java依赖包

    1. [root@web1 ~]# yum -y install java-1.8.0-openjdk
    2. [root@web1 ~]# yum -y install java-devel

    3)修改镜像地址,在第158行下添加

    1. [root@web1 ~]# vim /usr/local/maven/conf/settings.xml
    2. <mirror>
    3. <id>nexus-aliyun</id>
    4. <mirrorOf>*</mirrorOf>
    5. <name>Nexus aliyun</name>
    6. <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    7. </mirror>

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

    1)配置数据库

    1. [root@web1 ~]# yum install -y mariadb-server
    2. [root@web1 ~]# systemctl start mariadb
    3. [root@web1 ~]# cd CMS/
    4. [root@web1 CMS]# cp src/main/resources/shishuocms.properties . #拷贝网站数据库配置文件到当前目录,该文件定义了数据的用户名和密码等信息
    5. [root@web1 CMS]# mysql -uroot < sql/install.sql #导入网站相关数据库文件
    6. Enter password: 直接回车
    7. [root@web1 CMS]# mysqladmin password #修改数据库密码
    8. New password: #接下来输入12345678
    9. Confirm new password: #在输入一次12345678

    如果数据库密码输入错误

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

    如果数据库密码忘记

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

    2)打包项目

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

    步骤三:上线测试

    1. cp ~/lnmp_soft/apache-tomcat-8.0.30/conf/server.xml /usr/local/tomcat/conf/
    2. cp: 是否覆盖 "/usr/local/tomcat/conf/server.xml"? y #把tomcat的配置文件恢复默认
    3. 重启tomcat
    4. rm -rf /usr/local/tomcat/webapps/ROOT #删除原有默认页面目录
    5. #将新项目移动到tomcat中,然后会自动解包,然后真机打开浏览器访问192.168.99.100:8080看到“师说”页面则成功
    6. cp target/shishuocms-2.0.1.war /usr/local/tomcat/webapps/ROOT.war

  • 相关阅读:
    MySQL系列-语法说明以及基本操作(二)
    计算机毕业设计Python+Django的闲置物品交易系统+二手商城网站(源码+系统+mysql数据库+Lw文档)
    TypeScript- 对于对象键名(包括函数键值)不确定的接口,可以使用字符串索引的形式
    mybatis-generator新版本代码生成器
    Android 项目Gradle文件讲解(Groovy和Kotlin)
    electron打包ffi-napi报错 npm ERR! gyp reason: read ECONNRESET
    数据结构:树形数据结构
    [AIGC] 图论在LeetCode算法题中的应用
    flutter系列之:构建Widget的上下文环境BuildContext详解
    针对icon报错
  • 原文地址:https://blog.csdn.net/2301_79227925/article/details/132630623