tomcat详细介绍
tomcat是java语言编写的软件
JVM是java虚拟机的缩写
java虚拟机本质就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。
java语言的可移植性正是建立在java虚拟机的基础上。任何平台只要装有针对该平台的java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是一次编译处处运行
关于不同语言的编译:
c语言(编译性语言):源码 不同的CPU架构 需要相同的代码根据不同的操作系统进行重新编译
java语言(一次编译处处运行):jdk包含java虚拟机;java代码运行在java虚拟机中;不同的操作系统可以使用相同的java代码 ,只是需要不同的jdk;java虚拟机提供了相同的环境;
tomcat基于java开发的web服务
tomcat和nginx的区别:
nginx仅支持静态资源,而tomcat则支持java开发的jsp动态资源和静态资源
nginx适合做前端负载均衡,而tomcat适合做后端应用服务处理
通常情况下,企业会使用nginx+tomcat结合使用,由nginx处理静态资源,tomcat处理动态资源
nginx+PHP处理动态资源
tomcat单独就可以处理动态资源
JVM JRE jdk三者的区别:
1、JVM是java虚拟机
2、JRE 是java的运行环境(包含java虚拟机)
3、jdk是java的开发工具(包含JRE(JRE包含java虚拟机))
tomcat快速安装
1、rpm方式安装jdk
上传软件包到/opt目录下
链接:https://pan.baidu.com/s/1tm1sxTO7bo40S_vcLuZZnw
提取码:ctk7
链接:https://pan.baidu.com/s/1n4g2C2wLlfahFoSFo0GPqA
提取码:opru
jdk的下载去Oracle官网下载
https://www.oracle.com/cn/java/technologies/javase/javase-downloads.html
tomcat去清华源可以下载或者去tomcat官网
http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.53/bin/
rpm -ivh jdk-8u102-linux-x64.rpm
mkdir /app/
tar xf apache-tomcat-8.0.27.tar.gz -C /app/
/app/apache-tomcat-8.0.27/bin/startup.sh
2、tomcat启动慢解决方案
查看没优化之前的启动时间
[aaa@qq.com opt]# grep 'Server startup' /app/apache-tomcat-8.0.27/logs/catalina.out
22-Jun-2020 06:38:39.904 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 558 ms
优化方案
解决tomcat启动时产生session随机数作为id导致启动慢的问题
vi /usr/java/jdk1.8.0_102/jre/lib/security/java.security
117 securerandom.source=file:/dev/urandom
tomcat目录结构
bin 主要包含启动关闭tomcat的脚本和依赖文件
conf tomcat配置文件目录
lib tomcat运行需要加载的jar包 类似于PHP的模块概念
LICENSE 通知信息
logs 在运行过程中产生的日志文件
NOTICE 通知版本信息
RELEASE-NOTES 版本特性
RUNNING.txt 帮助文件
temp 存放临时文件 上传的代码包解压时会临时存放在temp目录下
webapps 站点目录
work tomcat运行时产生的缓存文件
核心配置文件
/app/apache-tomcat-8.0.27/conf/server.xml
原理图解释:
1、整个tomcat就是一个server
2、connector连接器:支持HTTP https ajp三种协议 不同的协议不同的端口
3、连接器将请求转发给 engine引擎 引擎处理请求,默认引擎是catalina,匹配host区域站点
用户访问tomcat代理(proxy),代理通过请求头将访问连接抛给后端连接器,连接器通过service的配置将请求抛给后端引擎,引擎匹配host站点
一个tomcat实例一个server
一个server中包含多个connector,connector的主要功能是接受、响应用户请求
service的作用:将connector关联到engine(Catalina引擎中)
<Server port="8005" shutdown="SHUTDOWN"> 区域
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
资源区域
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<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>
连接器区域
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
host区域 类似于nginx中的站点区域
tomcat部署zrlog博客项目
配置文件修改
129 <Host name="zrlog.oldboyedu.com" appBase="/code"
130 unpackWARs="true" autoDeploy="true">
131 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/log"
132 prefix="zrlog_access_log" suffix=".txt"
133 pattern="%h %l %u %t "%r" %s %b" />
134 </Host>
配置文件解释
129 <Host name="域名" appBase="站点目录"
130 unpackWARs="是否自动解压war包" autoDeploy="true">
131 <Valve className="日志级别格式" directory="日志目录"
132 prefix="日志名字" suffix=".txt"
133 pattern="%h %l %u %t "%r" %s %b" />
134 </Host>
创建站点目录
mkdir /code
放入war包
scp 10.0.0.12:/root/ROOT.war .
重启tomcat服务
/app/apache-tomcat-8.0.27/bin/shutdown.sh
/app/apache-tomcat-8.0.27/bin/startup.sh
修改本地win的host文件,添加域名解析
访问
zrlog.oldboyedu.com:8080
安装数据库 并创库授权
mysql_secure_installation
mysql -uroot -p000000
create database zrlog;
界面操作:
tomcat配置basic认证
效果图如下:当然了 这个是tomcat默认自带的
访问的是http://10.0.0.11:8080/host-manager
点击取消 获得设置用户名和密码的信息
编辑文件 设置密码
vim /app/apache-tomcat-8.0.27/conf/tomcat-users.xml
39 <role rolename="admin-gui"/>
40 <user username="tomcat" password="123456" roles="admin-gui"/>
重启tomcat服务
/app/apache-tomcat-8.0.27/bin/shutdown.sh
/app/apache-tomcat-8.0.27/bin/startup.sh
输入用户名tomcat 密码123456
设置zrlog的basic认证
vim /code/ROOT/WEB-INF/web.xml
28 <security-constraint>
29 <web-resource-collection>
30 <web-resource-name>test</web-resource-name>
31 <!--匹配所有请求-->
32 <url-pattern>/admin/login/*</url-pattern>
33 </web-resource-collection>
34 <auth-constraint>
35 <!-- 只允许basicrole角色的用户访问 -->
36 <role-name>test100</role-name>
37 </auth-constraint>
38 </security-constraint>
39 <login-config>
40 <!--值可以是BASIC/DIGEST/CLIENT_CERT/FORM-->
41 <auth-method>BASIC</auth-method>
42 <!--认证提示信息-->
43 <realm-name>Default</realm-name>
44 </login-config>
配置test100的角色
vim /app/apache-tomcat-8.0.27/conf/tomcat-users.xml
39 <role rolename="admin-gui"/>
40 <role rolename="test100"/>
41 <user username="tomcat" password="123456" roles="admin-gui,test100"/>
42 </tomcat-users>
重启tomcat服务
167 /app/apache-tomcat-8.0.27/bin/shutdown.sh
168 /app/apache-tomcat-8.0.27/bin/startup.sh
nginx+tomcat架构
数据库迁移
1、nginx负载安装数据库
yum install -y mariadb-server
2、迁移数据库
tomcat01节点上 关闭tomcat并备份数据
173 /app/apache-tomcat-8.0.27/bin/shutdown.sh
174 mysqldump -uroot -p000000 -B zrlog >zrlog.sql
scp zrlog.sql 10.0.0.3:/root
systemctl stop mariad
3、导入数据
nginx负载节点上 导入数据
mysql -uroot -p000000 <zrlog.sql
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| zrlog |
+--------------------+
授权允许网段访问
grant all on *.* to aaa@qq.com'10.0.0.%' identified by "000000";
4、tomcat01节点 启动tomcat并访问测试
/app/apache-tomcat-8.0.27/bin/startup.sh
tomcat02部署
tomcat02删除站点数据
rm -rf /app/apache-tomcat-8.0.27/
rm -rf /code/*
启动tomcat
/app/apache-tomcat-8.0.27/bin/startup.sh
tomcat01数据复制到tomcat02
scp -r /app/apache-tomcat-8.0.27 10.0.0.12:/app
scp -r /code/* 10.0.0.12:/code/
修改站点目录信息 作为区分tomcat01 和tomcat02的标识
vim /code/ROOT/include/templates/default/header.jsp
61 <span class="slogan">tomcat02</span>
vim /code/ROOT/include/templates/default/header.jsp
61 <span class="slogan">tomcat01</span>
nginx节点安装nginx 配置负载均衡
vim zrlog.conf
upstream java {
server 10.0.0.11:8080;
server 10.0.0.12:8080;
}
server {
listen 80;
server_name zrlog.oldboyedu.com;
root html;
index index.html index.htm;
location / {
proxy_pass http://java;
proxy_set_header Host $http_host;
}
}
systemctl start nginx
systemctl enable nginx
nginx+tomcat架构实现https
1、上传证书
创建目录 存放证书
mkdir /opt/cert/
2、修改nginx的zrlog.conf的配置文件
[aaa@qq.com cert]# cat /etc/nginx/conf.d/zrlog.conf
upstream java {
server 10.0.0.11:8080;
server 10.0.0.12:8080;
}
server {
listen 443 ssl;
ssl_certificate /opt/cert/Nginx/1_blog.oldqiang.com_bundle.crt;
ssl_certificate_key /opt/cert/Nginx/2_blog.oldqiang.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
root html;
index index.html index.htm;
location / {
proxy_pass http://java/;
proxy_set_header Host $http_host;
}
}
server {
listen 80;
server_name blog.oldqiang.com;
location / {
location / {
return 302 https://blog.oldqiang.com$request_uri;
}
}
}
3、修改win本地host解析
10.0.0.3 blog.oldqiang.com
4、修改tomcat配置文件中的域名信息和nginx中一致
vim /app/apache-tomcat-8.0.27/conf/server.xml
129 <Host name="blog.oldqiang.com" appBase="/code"
211 /app/apache-tomcat-8.0.27/bin/shutdown.sh
212 /app/apache-tomcat-8.0.27/bin/startup.sh
使用maven编译java项目
1、安装maven
rpm -ivh jdk-8u102-linux-x64.rpm
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar xf apache-maven-3.6.0-bin.tar.gz
mv apache-maven-3.6.0 /usr/local/
ln -s /usr/local/apache-maven-3.6.0 /usr/local/maven
vim /etc/profile
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:$PATH
source /etc/profile
[aaa@qq.com ~]# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven
Java version: 1.8.0_102, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_102/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
2、上传java源码 进行编译
java代码使用maven编译:jar包 war包 可能会是两种包之中的一个
注意:maven进行编译的时候,一定要在源码目录下 其他目录下找不到pom文件 会报错
mvn package
执行编译后 会下载一些依赖 这些下载源是在国外
3、修改maven为国内源
vim /usr/local/maven/conf/settings.xml
160 <mirror>
161 <id>alimaven</id>
162 <name>aliyun maven</name>
163 <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
164 <mirrorOf>central</mirrorOf>165 </mirror>
166 <mirror>167 <id>alimaven</id>
168 <mirrorOf>central</mirrorOf>169 <name>aliyun maven</name>
170 <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
171 </mirror>
不需要重启 再次进行编译即可
mvn package
会在目录下生成一个target目录 在这个目录下会有war包
将war包放入tomcat的站点目录下即可部署完成
上一篇: tomcat目录介绍
下一篇: Tomcat8源码编译
推荐阅读
-
万兴优转如何转换VR视频?VR视频格式转换的方法介绍
-
Win10系统安装教程: 最靠谱Win10重置与重装系统详细图文教程
-
CKEditor4配置与开发详细中文说明文档
-
Linux命令- echo、grep 、重定向、1>&2、2>&1的介绍
-
SystemVue 2017安装破解详细图文教程(附破解文件下载)
-
tomcat启动war包原理(tomcat部署war包步骤)
-
cad图层不能关闭该怎么办? cad关闭图层的详细教程
-
Autodesk Maya 2019中文破解版详细图文安装教程(附序列号注册机)
-
Cadence SPB OrCAD Allegro 17.2安装破解详细图文教程(附破解文件下载)
-
Autocad Mechanical 2015安装+破解详细图文教程