①.tomcat介绍 安装

介绍 编程语言

  • 编程语言的分类
    1. 系统级 c c++ golang
    2. 应用级 java python php perl c#
  • 应用级别的编程语言的亮点不是它们的执行效率 而是它们的可移植性
  • 对于java而言 我们将底层的运行环境称为虚拟机 JVM

什么是JVM

  • jvm全程 java virtual machine 简称未java虚拟机
    1. 首先虚拟机可以通过软件模拟出一台完整的计算机硬件功能
    2. 其次能够在该模拟的计算机硬件上安装相应的操作系统
  • 但jvm并不是提供一个能安装操作系统级的虚拟机,它仅提供java程序的独立运行环境(程序级别的虚拟机)

为何需要JVM

c语言编写的程序不支持跨平台运行 在linux和windows运行需要从新编译 确保能适应不同的平台
java编写的程序则不同 one build run any where 前提必须安装一个虚拟机

java程序的容器

1 tomcat
2 resin
3 weblogic (oracle 配置oracle数据库)

java程序的环境

1 jdk (java development kit) java开发环境
JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。
2 jre (java runtimeenvironment) java运行环境
JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
3 jvm (java virtual machine) java虚拟机
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

jdk的区别

1 oracle 官方版本
2 openjdk 开源版本

二进制安装jdk

1.下载jdk
cp /data/software/java/linux_jdk/jdk-8u261-linux-x64.tar.gz  ./

2.解压
tar xf jdk-8u261-linux-x64.tar.gz

3.做软链接
mv jdk1.8.0_261/ jdk8
ln -s jdk8/ jdk

4.配置环境变量
cat >>/etc/profile<<'EOF'    #追加到底部  ''不解析变量
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib
EOF

. /etc/profile   #激活环境变量

5.验证java环境是否生效
java -version

6.代码测试java环境
]# cat Hello.java
class Hello{
    public static void main(String[] args)
    {
	  System.out.println("hello, java");
    }
}
]# javac Hello.java
]# ls
Hello.class  hello.java
]# java -cp . Hello
hello, java

安装tomcat

1 down tomcat
wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.65/bin/apache-tomcat-8.5.65.tar.gz

2 解压
tar xf apache-tomcat-8.5.65.tar.gz 

3 软链接
mv apache-tomcat-8.5.65 tomcat8
ln -s tomcat8 tomcat

4 验证
./tomcat/bin/version.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Server version: Apache Tomcat/8.5.65
Server built:   Mar 30 2021 12:28:40 UTC
Server number:  8.5.65.0
OS Name:        Linux
OS Version:     3.10.0-862.2.3.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_261-b12
JVM Vendor:     Oracle Corporation

5 开机自启动
vim /etc/rc.local
. /etc/profile
/usr/local/tomcat/bin/startup.sh

6.systemd管理
cat /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
Environment=JAVA_HOME=/usr/local/jdk
Environment=CATALINA_HOME=/usr/local/tomcat
Environment=CATALINA_BASE=/usr/local/tomcat

ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh

[Install]
WantedBy=graphical.target  

systemctl daemon--reload     #加载启动项
systemctl enable tomcat      #设置开机自启命令
systemctl start tomcat       #启动tomcat

tomcat目录介绍

tomcat目录结构

  • bin : 二进制可执行(脚本文件 windwos版bat、linux版sh)
  • conf : 配置文件,主配置是 server.xml
  • lib : 都是一些java语言编写的jar包,这些都需要被调用,才能执行; module (jar、war)
  • logs : tomcat的日志存放位置,可修改;
  • temp : tomcat的临时目录;
  • webapps : 相当于nginx中 root /soft/tomcat/webapps/ /soft/tomcat/webapps/ROOT
  • work : tomcat的一个缓存目录;(java代码,编译为class字节码对外提供;)

tomcat/bin/ 命令存放路径

文件 作用
startup.sh 启动tomcat
shutdown.sh 关闭tomcat
catalina.sh #1 tomcat的核心脚本 启动和关闭tomcat都会调用这个脚本 #2 配置java启动参数 tomcat远程管理 配置jvm参数
version.sh 部署完成后 验证jdk 和tomcat的连接
tomcat/conf/
文件 作用
--- ---
server.xml 相当于nginx.conf的主配置文件
web.xml 补充额外功能
tomcat-user.xml 管理端配置文件 用户名和密码
tomcat/log/
文件 作用
--- ---
catalina.out tomcat最全日志核心日志
localhost_access_log.2021-4-23.txt tomcat access.log访问日志

tomcat/webapps/ 站点目录

cat /usr/local/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>

<!--关闭tomcat的端口-->
<Server port="8005" shutdown="SHUTDOWN">

  <!--监听器 -->
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!--全局资源限制-->
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>


  <!--连接器-->
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />


    <!--引擎-->
    <Engine name="Catalina" defaultHost="localhost">

	<!--调用限制-->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

	<!--虚拟主机-->
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>
  • server: 表示一个tomcat实例;
  • Listener: 监听器;
  • connector: 连接器,支持http、https、ajp等协议请求;
  • service: 将connector与engine关联的组件;
  • engine: 具体http、https的请求与响应; (Nginx中 http {})
  • host: 与用户请求的Host字段进行比对;哪个Host匹配则哪个处理,如没有符合的则交给默认的defaultHost处理

控制虚拟主机

虚拟主机:
        <!--tom1.oldxu.net-->
      <Host name="tom1"  appBase="/code/tom1"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="tom1_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>


[root@web03 soft]# mkdir /code/tom1/ROOT -p
[root@web03 soft]# echo "Tomcat Test Page" > /code/tom1/ROOT/index.html

[root@web03 ~]# systemctl stop tomcat
[root@web03 ~]# systemctl start tomcat



tomcat Context:
        <!--tom1.yangtao.com-->
      <Host name="tom1.oldxu.net"  appBase="/code/tom1"
            unpackWARs="true" autoDeploy="true">
        <Context docBase="/code/zh" path="/zh" reloadable="true"/>

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="tomcat_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
posted @ 2021-04-26 16:39  老夫聊发少年狂88  阅读(66)  评论(0编辑  收藏  举报