失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > tomcat详细介绍

tomcat详细介绍

时间:2020-05-06 16:30:30

相关推荐

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目录下

链接:/s/1tm1sxTO7bo40S_vcLuZZnw

提取码:ctk7

链接:/s/1n4g2C2wLlfahFoSFo0GPqA

提取码:opru

jdk的下载去Oracle官网下载

/cn/java/technologies/javase/javase-downloads.html

tomcat去清华源可以下载或者去tomcat官网

/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启动慢解决方案

查看没优化之前的启动时间

[root@tomcat02 opt]# grep 'Server startup' /app/apache-tomcat-8.0.27/logs/catalina.out 22-Jun- 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.security117 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 byUserDatabaseRealm 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="" appBase="/code"130 unpackWARs="true" autoDeploy="true">131 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/var/log"132prefix="zrlog_access_log" suffix=".txt"133pattern="%h %l %u %t &quot;%r&quot; %s %b" />134 </Host>

配置文件解释

129 <Host name="域名" appBase="站点目录"130 unpackWARs="是否自动解压war包" autoDeploy="true">131 <Valve className="日志级别格式" directory="日志目录"132prefix="日志名字" suffix=".txt"133pattern="%h %l %u %t &quot;%r&quot; %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文件,添加域名解析

访问

:8080

安装数据库 并创库授权

mysql_secure_installationmysql -uroot -p000000create 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.xml28 <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.xml39 <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.sqlscp zrlog.sql 10.0.0.3:/rootsystemctl stop mariad

3、导入数据

nginx负载节点上 导入数据

mysql -uroot -p000000 <zrlog.sqlMariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || zrlog |+--------------------+授权允许网段访问grant all on *.* to root@'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:/appscp -r /code/* 10.0.0.12:/code/

修改站点目录信息 作为区分tomcat01 和tomcat02的标识

vim /code/ROOT/include/templates/default/header.jsp61 <span class="slogan">tomcat02</span>vim /code/ROOT/include/templates/default/header.jsp61 <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 ;root html;index index.html index.htm;location / {proxy_pass http://java;proxy_set_header Host $http_host;}}systemctl start nginxsystemctl enable nginx

nginx+tomcat架构实现https

1、上传证书

创建目录 存放证书

mkdir /opt/cert/

2、修改nginx的zrlog.conf的配置文件

[root@lb01 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/_bundle.crt;ssl_certificate_key /opt/cert/Nginx/.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 ;location / { location / {return 302 $request_uri;}}}

3、修改win本地host解析

10.0.0.3

4、修改tomcat配置文件中的域名信息和nginx中一致

vim /app/apache-tomcat-8.0.27/conf/server.xml129 <Host name="" 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.rpmwget https://mirrors.tuna./apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gztar xf apache-maven-3.6.0-bin.tar.gzmv apache-maven-3.6.0 /usr/local/ln -s /usr/local/apache-maven-3.6.0 /usr/local/mavenvim /etc/profileexport M2_HOME=/usr/local/mavenexport PATH=${M2_HOME}/bin:$PATHsource /etc/profile[root@tomcat01 ~]# mvn -vApache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)Maven home: /usr/local/mavenJava version: 1.8.0_102, vendor: Oracle Corporation, runtime: /usr/java/jdk1.8.0_102/jreDefault locale: en_US, platform encoding: UTF-8OS 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.xml160 <mirror>161 <id>alimaven</id>162 <name>aliyun maven</name>163 <url>/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>/nexus/content/repositories/central/</url>171 </mirror>

不需要重启 再次进行编译即可

mvn package

会在目录下生成一个target目录 在这个目录下会有war包

将war包放入tomcat的站点目录下即可部署完成

如果觉得《tomcat详细介绍》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。