①.tomcat介绍 安装
介绍 编程语言
- 编程语言的分类
- 系统级 c c++ golang
- 应用级 java python php perl c#
- 应用级别的编程语言的亮点不是它们的执行效率 而是它们的可移植性
- 对于java而言 我们将底层的运行环境称为虚拟机 JVM
什么是JVM
- jvm全程 java virtual machine 简称未java虚拟机
- 首先虚拟机可以通过软件模拟出一台完整的计算机硬件功能
- 其次能够在该模拟的计算机硬件上安装相应的操作系统
- 但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 "%r" %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 "%r" %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 "%r" %s %b" />
</Host>