> 文章列表 > tomcat

tomcat

tomcat

一、介绍

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

        JRE是JDK的子集:JRE包括java虚拟机(jvm)和java核心类库和支持文件,不包括开发工具(JDK)--编译器、调试器和其它工具。

  • servlet是java扩展web服务器功能的组件规范,java的动态页面软件有(常见Servler容器):

—IBM    websphere

—Oracle   weblogic    # 甲骨文

—Apache   tomcat      # 阿帕齐(免费)

—RedHat   Jboss       # 红帽

主程序目录:bin/

库文件目录:lib/

日志目录:logs/

临时目录:temp/

自动编译目录:work/

配置文件目录:conf/

页面目录:webapps/

二、部署

1、下载网站

  • tomcat:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/
  • jdk:https://www.oracle.com/java/technologies/javase-downloads.html
  •    
  • 2、部署服务

  • 2.1、tomcat服务安装

  • 解压tomcat的tar包
  • tar -xf apache-tomcat-8.0.30.tar.gz 
    mv apache-tomcat-8.0.30 /usr/local/tomcat
    

安装依赖

yum -y install java-1.8.0-openjdk

启动服务

bin/startup.sh

浏览器预览:IP:8080

注意:tomcat启动需要大量的随机字符,依赖/dev/random文件,但是该文件不稳定。

  • 解决办法1:将原有的random更改名称,为urandom制作软连接并命名为random
mv /dev/random /dev/random.bak
ln -s /dev/urandom /dev/random
ls -l /dev/random 
  • 解决办法2:默认生成大量随机字符串,用rngd命令生成大量随机字符填充在random文件中
yum -y install rng-tools
systemctl start rngd

验证服务,端口号分别为8005、8009、8080缺一不可,8005是关闭程序,8009是连接其他网站,8080是访问端口

netstat -ntulp | grep  java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      58927/java          
tcp6       0      0 :::8009                 :::*                    LISTEN      58927/java          
tcp6       0      0 :::8080                 :::*                    LISTEN      58927/java 

2.2、服务验证

配置页面,静态是html,动态是jsp

echo "Tomcat-test" > /usr/local/tomcat/webapps/ROOT/test01.html

浏览验证

2.3、搭建tomcat虚拟主机

  • http、nginx、tomcat虚拟主机的语句
web服务器 虚拟主机格式 备      注
http

<virtualhost  *:80>

servername  www.a.com

documentroot  /var/www/html

</virtualhost>

virtualhost:配置虚拟主机

servername:域名

documentroot:网页

nginx

http {

server {

listen 80;

server_name www.a.com;

root html;

index index.html;

}

}

server语块定义一台虚拟主机

server:配置虚拟主机

listen:监听端口

server_name:域名

root:网页根目录

index:默认网页

tomcat

<Engine>

<Host name="" appBase="">

</Host>

</Engine>

<Host>:定义一台虚拟机

name:网络域名

appBase:页面目录

unpackWARs="true":自动解WAR包

autoDeploy="true":自动更新代码

更改主配置文件

vim /usr/local/tomcat/conf/server.xml<Host name="www.b.com"  appBase="web_b"></Host><Host name="www.a.com"  appBase="webapps"></Host>

创建B网站存储网页的目录

mkdir -p /usr/local/tomcat/web_b/ROOT

创建网页

echo "tomcat AAAA" > /usr/local/tomcat/webapps/ROOT/index.html
echo "tomcat BBBB" > /usr/local/tomcat/web_b/ROOT/index.html

重启服务,修改后的配置文件生效需要先关闭tomcat,再启动

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

配置hosts

vim /etc/hosts
192.168.65.21 www.a.com www.b.com

验证

curl www.a.com:8080
curl www.b.com:8080

3、配置文件

3.1、自动解压、自动更新配置

        unpackWARs自动解压,autoDeploy自动更新

配置文件

vim /usr/local/tomcat/conf/server.xml <Host name="www.b.com"  appBase="web_b" unpackWARs="true" autoDeploy="true"> </Host>

安装jar工具

yum -y install java-1.8.0-openjdk-devel

制作war包

jar -cf b.war /var/log

将war包放到网页目录下

mv b.war /usr/local/tomcat/web_b/

查看web_b目录,b.war已经自动解包

ls web_b/
b  b.war  ROOT

3.2、访问路径与页面位置配置

        Context表示一个web应用程序,通常为WAR文件;path匹配用户访问路径,表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/;docBase定义页面位置,应用程序的路径或者是WAR文件存放的路径

        <Context path="" docBase="" /> tomcat访问路径与页面的设置。

3.2.1、配置一:path为空,docBase为空

vim /usr/local/tomcat/conf/server.xml <Host name="www.b.com"  appBase="web_b" unpackWARs="true" autoDeploy="true"> <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/index.html

3.2.2、配置二:path为空,docBase="abc"

vim /usr/local/tomcat/conf/server.xml<Host name="www.b.com"  appBase="web_b" unpackWARs="true" autoDeploy="true"><Context path="" docBase="abc" /></Host>

创建测试页面

mkdir web_b/abc
echo "web_b/abc/index.html" > web_b/abc/index.html

重启后验证

curl www.b.com:8080
web_b/abc/index.html

3.2.3、配置二:path为空,docBase="/abc",加了/表示为linux的根

vim /usr/local/tomcat/conf/server.xml<Host name="www.b.com"  appBase="web_b" unpackWARs="true" autoDeploy="true"><Context path="" docBase="/abc" /></Host>

创建测试页面

mkdir /abc
echo "/abc/index.html" > /abc/index.html

 重启后验证

curl www.b.com:8080
/abc/index.html

3.2.4、配置二:path="/test",docBase="/abc"

vim /usr/local/tomcat/conf/server.xml<Host name="www.b.com"  appBase="web_b" unpackWARs="true" autoDeploy="true"><Context path="/test" docBase="/abc" /></Host>

重启后验证

curl www.b.com:8080/test/
/abc/index.htmlcurl www.b.com:8080
web_b/ROOT/index.html

3.2.4、配置二:path="/test",docBase="abc"

vim /usr/local/tomcat/conf/server.xml<Host name="www.b.com"  appBase="web_b" unpackWARs="true" autoDeploy="true"><Context path="/test" docBase="abc" /></Host>

重启后验证

curl www.b.com:8080/test/
web_b/abc/index.htmlcurl www.b.com:8080
web_b/ROOT/index.html

3.3、日志功能

配置文件:日志目录logs,日志文件b,文件格式.log

vim /usr/local/tomcat/conf/server.xml<Host name="www.b.com"  appBase="web_b" unpackWARs="true" autoDeploy="true"><Context path="test" docBase="abc" /><Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"prefix="b" suffix=".log"pattern="%h %l %u %t &quot;%r&quot; %s %b" /></Host>

备注:

className:指定logger的类名,此类必须实现org.apache.catalina.Logger 接口

directory:日志的目录

prefix:日志的名称

suffix:日志的后辍

重启后验证,查logs日志有了b日志文件,再访问网站后查看b日志文件,生存了访问记录

ls /usr/local/tomcat/logs/
b.2023-04-22.log curl www.b.com:8080
web_b/ROOT/index.htmlcat /usr/local/tomcat/logs/b.2023-04-22.log 
192.168.65.21 - - [22/Apr/2023:11:34:48 +0800] "GET / HTTP/1.1" 200 22

四、Maven

1、介绍

        Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理。maven是Apache的顶级项目,解释为“专家,内行”,它是一个项目管理的工具,maven自身是纯java开发的,可以使用maven对java项目进行构建、依赖管理。

        基于项目对象模型(POM),是一个项目管理工具软件,可以通过简短的信息描述来管理项目的构造,报告和文档。maven项目需要设备联网,或将其他的成品程序从网上下载下来保存到一个文件中。POM项目对象模型,它是一个XML文件,包含了Maven创建项目的基本信息、构建过程、项目依赖等。        

  •         阿里云仓库地址:https://developer.aliyun.com/mvn/guide

1.1、Maven的作用

  • 依赖管理

        依赖指的就是是我们项目中需要使用的第三方Jar包, 一个大一点的工程往往需要几十上百个Jar包,按照我们之前的方式,每使用一种Jar,就需要导入到工程中,还要解决各种Jar冲突的问题。Maven可以对Jar包进行统一的管理,包括快速引入Jar包,以及对使用的 Jar包进行统一的版本控制。

  • 一键构建项目

        之前我们创建项目,需要确定项目的目录结构,比如src 存放Java源码, resources存放配置文件,还要配置环境比如JDK的版本等等,如果有多个项目 那么就需要每次自己搞一套配置,十分麻烦Maven为我们提供了一个标准化的Java项目结构,我们可以通过Maven快速创建一个标准的Java项目。

2、部署

         Maven软件地址:​​​​​​Maven – Download Apache Maven

2.1、Maven软件下载

安装依赖工具

yum -y install bzip2
yum -y install jave-1.8.0-openjdk
yum -y install java-devel

maven软件的安装

wget https://dlcdn.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

解压maven包:maven不需要安装软件,可以直接解压

tar -xf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 /usr/local/maven

备注:

  1. bin:存放了 maven 的命令
  2. boot:存放了一些 maven 本身的引导程序,如类加载器等
  3. conf:存放了 maven 的一些配置文件,如 setting.xml 文件
  4. lib:存放了 maven 本身运行所需的一些 jar 包

配置文件,修改镜像仓库,在<mirror>语块内添加以下内容

vim /usr/local/maven/conf/settings.xml<mirror><id>alimaven</id><name>aliyun maven</name><url> http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>

2.2、配置数据库

安装数据库,在实验中网页文件有数据库

yum -y install mariadb mariadb-server
systemctl restart mariadb.service

准备一个网站项目,代码已经编写完成

ls
cms.tar.gz tar -xf cms.tar.gz

创建好的工程,Maven目录说明:

  • src/main/java               —— 源代码目录,存放项目的.java 文件,
  • src/main/resources      —— 资源目录,存放项目资源文件,如数据库的配置文件 
  • src/test/java                 —— test测试目录,存放所有单元测试.java 文件,如 JUnit 测试类 
  • target                           —— 项目输出位置,编译后的class 文件会输出到此目录 
  • pom.xml                      ——maven 项目核心配置文件 

拷贝网站数据库配置文件到当前目录,该文件定义了数据库的用户和密码等信息

cd CMS/
cp src/main/resources/shishuocms.properties .

导入网站相关数据库文件

mysql -uroot -p < sql/install.sql 

配置数据库密码

mysqladmin password

2.3、打包项目

在项目CMS目录下,构建项目

/usr/local/maven/bin/mvn clean package

输出以下信息,构建成功

 查看构建的war包

ls target/shishuocms-2.0.1.war 
target/shishuocms-2.0.1.war

删除tomcat默认页面目录

rm -rf /usr/local/tomcat/webapps/ROOT

将构建的war包拷贝到webapps目录下,war包会自动解包

cp target/shishuocms-2.0.1.war /usr/local/tomcat/webapps/ROOT.war

打开浏览器访问www.a.com:8080看到“师说”页面则成功

2.4、SSL加密站点

创建公钥私钥

keytool -genkeypair -alias tomcat -keyalg RSA -keystore  /usr/local/tomcat/keystore

配置文件

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" />

创建测试页面

echo "tomcat https" > /usr/local/tomcat/webapps/ROOT/index.html

验证

curl -k https://192.168.65.21:8443
tomcat https