一、Tomcat简介
1、简介
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的诀窍是。
当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。
2、web技术
1.http协议和 B/S (Browser/Server)结构
操作系统有进程子系统,使用多进程就可以充分利用硬件资源。进程中可以多个线程,每一个线程可以被CPU调度执行,这样就可以让程序并行的执行。这样一台主机就可以作为—个服务器为多个客户端提供计算服务。
客户端和服务端往往处在不同的物理主机上,它们分属不同的进程,这些进程间需要通信。跨主机的进程间通信需要使用网络编程。最常见的网络编程接口是socket。
Socket称为套接字,本意是插座。也就是说网络通讯需要两端,如果一端被动的接收另一端请求并提供计算和数据的称为服务器端,另一端往往只是发起计算或数据请求,称为客户端。
网页是存储在WEB服务器端的文本文件,浏览器发起HTTP请求后,到达WNEB服务程序后,服务程序根据URL读取对应的HTML文件,并封装成HTP响应报文返回给浏览器端。
起初网页开发主要指的是HTML、CSS等文件制作,目的就是显示文字或图片,通过超级链接跳转到另一个HTML并显示其内容。
后来,网景公司意识到让网页动起来很重要,傍着SUN的ava的名气发布了JavaScript语言,可以在浏览器中使用5引攀执行的脚本语言,可以让网页元素动态变化。网页动起来了。
为了让网页动起来,微软使用ActiveX技术、SUN的Applet都可以在浏览器中执行代码,但都有安全性问题。能不能直接把内容直接在WEB服务器端组织成HTML,然后把HTML返回给浏览器渲染呢?
2.前端三大核心技术
1.HTML
2.CSS
3.javascripts
Javascript简称S,是一种动态的弱类型脚本解释性语言,和HTML、CSS并称三大WEB核心技术,得到了几乎主流浏览器支持。
4.同步和异步
同步:
交互式网页,用户提交了请求,就是想看到查询的结果。服务器响应到来后是一个全新的页面内容,哪怕URL不变,整个网页都需要重新渲染。例如,用户填写注册信息,只是2次密码不一致,提交后,整个注册页面重新刷新,所有填写项目重新填写(当然有办法让用户减少重填)。这种交互非常不友好。从代价的角度看,就是为了注册的一点点信息,结果返回了整个网页内容,不但浪费了网络带宽,还需要浏览器重新渲染网页,太浪费资源了,影响了用户体验和感受。上面这些请求的过程,就是同步过程,用户发起请求,页面整个刷新,直到服务器端响应的数据到来并重新渲染。
异步:
1996年微软实现了iframe标签,可以在一个网页使用iframe标签局部异步加载内容。
1999年微软推出异步数据传输的ActiveX插件技术,太笨重了,但是也火了很多年。有一个组件XMLHttpRequest被大多数浏览器支持。
传统的网页如果需要更新内容,必需重数整个网页面。Ajax的出现,改变这一切,同时极大的促进了Javascript的发展。Ajax即"Asynchronous Javascript AndXML”(异步JavaScript和XML),是指一种创建交互式、快速动态网页应用的网页开发技术,最早起源于1998年微软的Outook Web Access开发团队。Ajax通过在后台与服务器进行少量数据交换,可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。Javascript通过调用浏览器内置的WEB API中的XMLHttpRequest对象实现Ajax技术。早期Aijax结合数据格式XML,目前更多的使用)SON。利用AAX可实现前后端开发的彻底分离,改变了传统的开发模式。
二、java基础
1、web架构
1.web资源和访问
PC端或移动端浏览器访问
从静态服务器请求HTML、CSS、JS等文件发送到浏览器端,浏览器端接收后渲染在浏览器上从图片服务器请求图片资源显示 ,从业务服务器访问动态内容,动态内容是请求后有后台服务访问数据库后得到的,最终返回到浏览器端。
手机 App访问
内置了HTML和]S文件,不需要从静态WEB服务器下载JS或HTML。为的就是减少文件的发送,现代前端开发使用的文件太多或太大了有必要就从图片服务器请求图片,从业务服务器请求动态数据。
客户需求多样,更多的内容还是需要由业务服务器提供,业务服务器往往都是由一组服务器组成。
2.后台应用架构
1.单体应用架构
传统架构(单机系统)。一个项目一个工程:比如商品、订单、支付、库存、登录、注册等等,统一部署,一个进程
- all in one的架构方式,把所有的功能单元放在一 个应用里。然后把整个应用部署到一台服务器上。如果负载能力不行,将整个应用进行水平复制,进行扩展,然后通过负载均衡实现访问。
- Java实现: JSP、 Servlet, 打包成-个jar. war部署
- 好处:易于开发和测试:也十分方便部署:当需要扩展时,只需要将war复制多份,然后放到多个服务器上,再做个负载均衡就可以了。
- 坏处:如果某个功能模块出问题,有可能全站不可访问,修改Bug后、某模块功能修改或升级后,需要停掉整个服务,重新整体重新打包、部署这个应用war包,功能模块相互之间耦合度高,相互影响,不适合当今互联网业务功能的快速迭代。特别是对于-一个大型应用,我们不可能吧所有内容都放在一 个应用里面,我们如何维护、如何分工合作都是问题。如果项目庞大,管理难度大。
- web应用服务器:开源的tomcat. jetty. glassfish。 商用的有weblogic、websphere. Jboss
2.微服务
https://www.martinfowler.com/microservices/
属于SOA (Service Oriented Architecture)的子集面 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底去掉耦合,每一个微服务提供单个业务功能,一个服务只做一件事。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
- 从技术角度讲就是一种小而独立的处理过程,类似与进程的概念,能够自行单独启动或销毁 微服务架构(分布式系统),各个模块/服务,各自独立出来,"让专业的人干专业的事”,独立部署。分布式系统中,不同的服务可以使用各自独立的数据库。·服务之间采用轻量级的通信机制(通常是基于HTTP的RESTful API)。
- 微服务设计的思想改变了原有的企业研发团队组织架构。传统的研发组织架构是水平架构,前端、后端、DBA、测试分别有自己对应的团队,属于水平团队组织架构。而微服务的设计思想对团队的划分有着一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负责,支付业务是一个团队来负责。但实际上在企业中并不会把团队组织架构拆分得这么绝对,垂直架构只是一种理想的架构
- 微服务的实现框架有多种,不同的应用架构,部署方式也有不同
1.单体架构和微服务比较
2.微服务的优缺点微服务优点与缺点:
优点:
- 每个服务足够内聚,足够小,代码容易理解。这样能聚焦一个只当的业务功能或业务需求。
- 开发简单、开发效率提高,一个服务可能就是专业的只干一件事,微服务能够被小团队单独开发,这个小团队可以是2到5人的开发人员组成
- 开发简单、开发效率提高,一个服务可能就是专业的只干一件事,微服务能够被小团队单独开发,这个小团队可以是2到5人的开发人员组成
- 微服务能使用不同的语言开发
- 易于和第三方集成,微服务运行容易且灵活的方式集成自动部署,通过持续集成工具,如: Jenkins、Hudson、Bamboo·微服务易于被一个开发人员理解、修改和维护,这样小团队能够更关注自己的工作成果,无需通过合作才能体现价值。微服务允许你利用融合最新技术。微服务只是业务逻辑的代码,不会和HTML/CSS或其他界面组件混合,即前后端分离·每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一数据库
缺点:
- 微服务把原有的一个项目拆分成多个独立工程,增加了开发、测试、运维、监控等的复杂度
- 微服务架构需要保证不同服务之间的数据一致性,引入了分布式事务和异步补偿机制,为设计和开发带来一定挑战·开发人员和运维需要处理分布式系统的复杂性,需要更强的技术能力
- 微服务适用于复杂的大系统,对于小型应用使用微服务,进行盲目的拆分只会增加其维护和开发成本
2、Java
1.java介绍
Java创始人之一的 James Gosling
2.java组成
-
语言、语法规范。关键字,如: if、for、class 等
-
源代码 source code
-
依赖库,标准库(基础)第三方库(针对某些应用)。底层代码太难使用且开发效率低,封装成现成的库
-
JVM虚拟机。将源代码编译为中间码即字节码后,再运行在JVM之上
由于各种操作系统ABl不一样,采用编译方式,需要为不同操作系统编译成相应格式的二进制程序才能运行。
3.java实现动态网页功能
①servlet
是Java Servlet 的简称,可以理解为是一个服务连接器,是用 Java 编写的服务器端程序,具有独立于平台和协议的特性, 简单的理解:servlet 就是一个中间件,包含了接口和方法,将客户端和数据库连接,从而实现动态网页的创建。
② jsp
用于将 JSP 动态网页翻译成 Servlet 代码。
全称 Java Server Pages,是一种动态网页开发技术。它使用 JSP 标签在HTML网页中插入 Java 代码。标签通常以 <% 开头,以 %> 结束。也是一种 Java servlet,主要用于实现 Java web 应用程序的用户界面部分。
JSP 通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
- 优点:架构简单,比较适合小型项目开发
- 缺点:JSP 职责不单一,职责过重,不便于维护
4.jdk
①JDK和JRE
1.JDK和JRE关系
-
Java SE APl: Java 基础类库开发接口
-
JRE: Java Runtime Environment 缩写,指Java运行时环境,包含JVM +Java 核心类库
-
JDK: Java Development Kit,即Java语言的软件开发工具包JDK协议基于JRL(JavaResearch License)协议
②JVM的各种版本
JVM市场份额
③Oracle JDK版本
JDK也就是常说的J2SE,在1999年,正式发布了Java第二代平台,发布了三个版本:
-
J2SE:标准版,适用于桌面平台
-
J2EE:企业版,java在企业级开发所有规范的总和,共有13个大的规范,Servlet、Jsp都包含在JavaEE规范中
-
J2ME:微型版,适用于移动、无线、机顶盒等设备环境
JDK7 JDK8、JDK11是LTS(Long Term Support)
⑤OpenJDK
OpenJDK是Sun公司采用GPL v2协议发布的JDK开源版本,于2009年正式发布。
OpenJDK使用GPL v2可以用于商业用途。目前由红帽维护。OpenJDK也有在其基础上的众多发行版,比如阿里的Dragonwell。
相对来说,Oracle jDK具有更好的响应能力和JVM性能,更加稳定
在Centos 中,默认的是openjdk
5.安装Oracle官方JDK
使用rpm包安装
修改环境变量
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
6.使用二进制文件安装
三、Tomcat基础功能
1、Tomcat介绍
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,Tomcat具有处理HTML页面的功能,它还是一个Servlet和JSP容器
起始于SUN公司的一个Servlet的参考实现项目Java Web Senver,开发者是James Duncan Davidson,在19年,将项目贡献给了apache软件基金会(ASF),和ASF现有的项目JServ合并,并开源成为顶级项目 Tomcat仅仅实现了Java EE规范中与Servlet、JSP相关的类库,是JavaEE不完整实现。
官网: http://tomcat.apache.org/
官网文档: https://tomcat.apache.org/tomcat-8.5-doc/index.html
帮助文档:
https://cwiki.apache.org/confluence/display/tomcat/
https://cwiki.apache.org/confluence/display/tomcat/FAQ
1.Tomcat个版本区别
官方文档:https://tomcat.apache.org/whichversion.html
2、安装Tomcat
开机
浏览器访问页面
关机
新建用户tomcat 并修改其属主和属组,权限
systemed管理
过滤不到tomcat进程,因为tomcat是运行在Java虚拟机里面,它只能检测到java程序
但是tomcat实际上是存在的
浏览器访问
Tomcat和catalina关系
Tomcat的servlet容器在4.X版本中被Craig McClanahan(Apache Struts项目的创始人,也是Tomcat
的 Catalina 的架构师)重新设计为Catalina.即Catalina就是servlet容器。
Tomcat的核心分为3个部分:
(1)Web容器:处理静态页面;
(2)JSP容器:把jsp页面翻译成一般的 servlet
(3)catalina: 是一个servlet容器,用于处理servlet
3、配置文件介绍及核心组件
1.配置文件
安装目录下 文件介绍
目录名字 | 功能 |
---|---|
bin | 存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件 |
conf | 存放 Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。 |
lib | 存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的 jar 包 |
logs | 存放 Tomcat 日志 catalina.out |
temp | 存放 Tomcat 运行时产生的文件 |
webapps | 存放项目资源的目录 |
work | Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存) |
conf子目录
文件名 | 说明 |
---|---|
server.xml | 主配置文件 全局生效 |
web.xml | 每个webapp只有“部署"后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置,每个web应用也可以使用专用配置文件,来覆盖全局文件 |
context.xml | 用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,每个web应用也可以使用自已专用的配置,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,覆盖全局的文件 |
tomcat-users.xml | 用户认证的账号和密码文件 |
catalina.policy | 当使用security选项启动omcat时,用于为tomcat设置安全策略 |
catalina.properties | Tomcat环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数 |
logging.properties | Tomcat日志系统相关的配置,可以修改日志级别和日志路径等 |
注意配置文件对于大小写敏感 |
注意:配置文件对于大小写敏感
解释:
主配置文件 server.html 在
Tomcat子配置文件是针对项目而言的web.xml特有的
work 目录 一般清楚 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存)
故障案例:
版本升级升不上去,什么导致的?
原因:可能是因为之前缓存没有删
软件升级
如果不清缓存,他就会一直访问缓存,也就是旧版本,导致升级升不上去!
1.日志文件
参考文档: https://cwiki.apache.org/confluence/display/TOMCAT/Logging
日志格式: https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Access_Logging
[root@centos7 ~]#ls /usr/local/tomcat/logs/ -1
catalina.2020-07-14.log #tomcat服务日志
catalina.out #tomcat服务日志
host-manager.2020-07-14.log #host manager管理日志
localhost.2020-07-14.log #默认主机日志
localhost_access_log.2020-07-14.txt ##默认主机访问日志
manager.2020-07-14.log #manager 管理日志
catalina.out 错误日志
tomcat错误日志例子:
日志格式
%a - Remote IP address
%A - Local IP address
%b - Bytes sent, excluding HTTP headers, or '-' if zero
%B - Bytes sent, excluding HTTP headers
%h - Remote host name (or IP address if enableLookups for the connector is
false)
%H - Request protocol
%l - Remote logical username from identd (always returns '-')
%m - Request method (GET, POST, etc.)
%p - Local port on which this request was received. See also %{xxx}p below.
%q - Query string (prepended with a '?' if it exists)
%r - First line of the request (method and request URI)
%s - HTTP status code of the response
%S - User session ID
%t - Date and time, in Common Log Format
%u - Remote user that was authenticated (if any), else '-'
%U - Requested URL path
%v - Local server name
%D - Time taken to process the request in millis. Note: In httpd %D is
microseconds. Behaviour will be aligned to httpd in Tomcat 10 onwards.
%T - Time taken to process the request, in seconds. Note: This value has
millisecond resolution whereas in httpd it has second resolution. Behaviour will
be align to httpd in Tomcat 10 onwards.
%F - Time taken to commit the response, in millis
%I - Current request thread name (can compare later with stacktraces)
%X - Connection status when response is completed:
X = Connection aborted before the response completed.
+ = Connection may be kept alive after the response is sent.
- = Connection will be closed after the response is sent.
There is also support to write information incoming or outgoing headers, cookies,
session or request attributes and special timestamp formats. It is modeled after
the Apache HTTP Server log configuration syntax. Each of them can be used
multiple times with different xxx keys:
%{xxx}i write value of incoming header with name xxx
%{xxx}o write value of outgoing header with name xxx
%{xxx}c write value of cookie with name xxx
%{xxx}r write value of ServletRequest attribute with name xxx
%{xxx}s write value of HttpSession attribute with name xxx
%{xxx}p write local (server) port (xxx==local) or remote (client) port
(xxx=remote)
%{xxx}t write timestamp at the end of the request formatted using the enhanced
SimpleDateFormat pattern xxx
2.核心组件
1.组件分层和分类
顶级组件
Server,代表整个Tomcat 容器,一台主机可以启动多 tomcat 实例 ,需要确保端口不要产生冲突
服务类组件
Service,实现组织 Engine 和 Connector,建立两者之间关联关系, service 里面只能包含一个Engine
连接器组件
Connector,有 HTTP(默认端口8080/tcp)、HTTPS(默认端口8443/tcp)、AJP(默认端口8009/tcp)协议的连接器,AJP(Apache Jserv protocol)是一种基于TCP的二进制通讯协议。
容器类
Engine、Host(虚拟主机)、Context (上下文件,解决路径映射)都是容器类组件,可以嵌入其它组件,内部配置如何运行应用程序。
内嵌类
可以内嵌到其他组件内,valve、logger、realm、loader、manager等。以 logger 举例,在不同容器组件内分别定义。
集群类组件
listener、cluster
过程:
首先开启 tomcat 进程, 会有 server 产生 ,
然后产生 一个 service 管理组件,管理所有其他组件的
用户发送请求httpd 请求过来
connector 连接器(默认监听)接收到此请求, 会转交给 engine (引擎)
engine (引擎) 会处理请求, 遍历 host (虚拟主机) 会交给 客户访问的 host, 如果找不到交给默认的 host 会根据 上下文 context (上下文) 映射关系 去找相对应的文件
找到文件后, 交给 JSP 生成代码, 再交给 servlet 生成 html
原路返回 反馈给用户
解释:
名称 | 说明 |
---|---|
server | 服务器,Tomcat运行的进程实例,一个Server中可以有多个service,但通常就一个 |
service | 服务,用来组织Engine(引擎)和Connector(连接器,端口)的对应关系,一个service中只有一个Engine |
connector | 连接器,负责客户端的HTTP、HTTPS、AJP等协议连接。一个Connector只属于某一个Engine |
Engine | 即引擎,用来响应并处理用户请求。一个Engine上可以绑定多个Connector |
Host | 即虚拟主机,可以实现多虚拟主机,例如使用不同的主机头区分 |
Context | 应用的上下文,配置特定url路径映射和目录的映射关系: url => directory |
2.核心组件
在conf/server.xml 有以下内容:
-
Tomcat 启动一个 Server 进程。可以启动多个 Server,即 tomcat的多实例, 但一般只启动一个
-
创建一个Service 提供服务。可以创建多个 Service,但一般也只创建一个
-
每个Service中,是Engine和其连接器Connector的关联配置
-
-
可以为这个Service提供多个连接器Connector,这些Connector使用了不同的协议,绑定了不同的端口。其作用就是处理来自客户端的不同的连接请求或响应
-
Service 内部还定义了Engine,引擎才是真正的处理请求的入口,其内部定义多个虚拟主机Host
-
Engine对请求头做了分析,将请求发送给相应的虚拟主机
-
如果没有匹配,数据就发往Engine上的defaultHost缺省虚拟主机
-
Engine上的缺省虚拟主机可以修改
-
-
Host 定义虚拟主机,虚拟主机有name名称,通过名称匹配
-
Context 定义应用程序单独的路径映射和配置
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
</Server>
3.tomcat 处理请求过程
-
假设来自客户的请求为: http://localhost:8080/test/index.jsp 浏览器端的请求被发送到服务端端口 8080,Tomcat 进程监听在此端口上。通过侦听的 HTTP/1.1Connector 获得此请求。
-
Connector 把该请求交给它所在的 Service 的Engine来处理,并等待 Engine 的响应
-
Engine 获得请求 192.168.44.50:8080/test/index.jsp,遍历它所有虚拟主机 Host
-
Engine 匹配到名为 localhost 的 Host。如果匹配不到,就把请求交给该 Engine 中的defaultHost 处理. localhost Host 获得请求 /test/index.jsp,匹配它所拥有的所有Context
-
Host匹配到路径为/test的 Contex
-
path=/test的Context 获得请求 index.jsp,在它的 mapping table 中寻找对应的 servlet
-
Context 匹配到URLPATTERN为*.jsp的Sservlet,对应于 jspServlet 类构造 HtpServletRequest 对象和 HttpServletResponse 对象,作为参数调用) spSer let的doGet或doPost方法。
-
Context 把执行完了之后的 HttpServletResponse 对象返回给 Host
-
Host把HttpServletResponse对象返回给Engine
-
Engine把HttpServletResponse对象返回给Connector
-
Connector把HttpServletResponse对象返回给浏览器端
tomcat 页面访问特别之处:
但是如果你访问 192.168.10.100/index.html 事实上,他的页面在
/usr/local/tomcat/webapps/ROOT/index.html
直接访问: 默认站点去找:
写上test才能找到:
以项目为站点,ROOT为默认项目的默认站点
主页文件的优先级
如果想特定页面的优先级
访问之前依旧是之前的
需要修改权限
再次刷新后
4、实现java项目
1.打包jar包实际操作
-
.war:WebApp打包,类zip格式文件,通常包括一个应用的所有资源,比如 jsp,html,配置文件等
-
.jar:EJB类文件的打包压缩类zip格式文件,,包括很多的class文件, 网景公司发明
-
.rar:资源适配器类打包文件,目前已不常用
-
.ear:企业级WebApp打包,目前已不常用
传统应用开发测试后,通常打包为war格式,这种文件部署到Tomcat的webapps目录下,并默认会自动
操作:
将包拷到webapps下,过来之后会自动解压
下线的话要删除app1和app1.war包。否则会再次生成
2.搭建Jpress博客
先将包放到规定目录下
更换自带数据库,安装自己的
[root@centos7 ~]#cat >/etc/yum.repos.d/mysql.repo <<EOF
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
enabled=1
gpgcheck=0
EOF
找到数据库登录临时密码,修改它
set global validate_password_policy=0;
set global validate_password_length=1;
#修改密码策略
mysql> alter user root@'localhost' identified by 'abc123';
#重新设定密码
CREATE DATABASE blog;
GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
创建数据库名用户和密码
访问:
3.破解密码
当我们忘记数据库密码时,可以破解密码
skip-grant-tables
在配置文件添加这行
#然后清空密码
update mysql.user set authentication_string='' where user='root' and host='localhost';
#注意刷新后生效
flush privileges;
再将那行命令删除
仍然可以登录
如果又想设置密码
set global validate_password_policy=0;
set global validate_password_length=1;
#修改密码策略
mysql> alter user root@'localhost' identified by 'abc123';
5、状态页
1. server status 和 manger app 访问
1. 默认的管理页面被禁用:
-
server status 状态页
-
manger app 管理项目
-
host manger 配置虚拟主机的设置
2.开启状态页,但是只能本地访问
修改conf/conf/tomcat-users.xml
用户认证,配置文件是conf/tomcat-users.xml。打开tomcat-users.xml,我们需要一个角色manager-gui
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>
现在主机可以登录访问了
3.开启允许远程状态页
修改webapps/manager/META-INF/context.xml
浏览器访问
2.host manger
配置虚拟主机的配置
添加用户和组
允许远程登录
浏览器访问
6、常见的配置详解
1.端口 8005/tcp 安全配置管理
/usr/local/tomcat/conf/server.conf 下有以下内容:
8005是Tomcat的管理端口,默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串,tomcat接收到后就会关闭此Server。
[root@centos7 ~]#telnet 127.0.0.1 8005 #优雅的关闭
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SHUTDOWN #执行命令关闭tomcat
Connection closed by foreign host.
此管理功能建议禁用,可将 SHUTDOWN 改为一串猜不出的字符串实现或者 port修改成 0,会使用随机端口如:36913
port 设为-1等无效端口,将关闭此功能此行不能被注释,否则无法启动 tomcat 服务。
举例:
<Server port="8005" shutdown="xxxxxxxx">
7、tomcat端口号
8080: 默认接收 http 请求的端口
8005: 安全端口,可以关闭 tomcat
8009: apache 和 tomcat 联动 AJP 协议
8、 虚拟主机配置
可能有时候公司会有多个项目需要运行,那么肯定不可能是一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时,就需要使用到 Tomcat 虚拟主机。
<Host name="www.a.com" appBase="/data/web1"
unpackWARs="true" autoDeploy="true">
</Host>
<Host name="www.b.com" appBase="/data/web2"
unpackWARs="true" autoDeploy="true">
</Host>
<Host name="www.c.com" appBase="/data/web3"
unpackWARs="true" autoDeploy="true">
</Host>
测试:
9、Context配置
Context作用:
-
路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能
-
应用独立配置,例如单独配置应用日志、单独配置应用访问控制
#映射指定路径
<Context path="/test" docBase="/data/test" reloadable="true" />
#映射站点的根目录
<Context path="/" docBase="/data/website" reloadable="true" />
#还可以添加日志等独立的配置
<Context path="/test" docBase="/data/test" reloadable="true" >
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_test_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Context>
说明:
-
path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先更高
-
docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)
-
reloadable:true表示如果WEB-INF/classes或META-INF/lib目录下.class文件有改动,就会将WEB应用重新加载。生产环境中,建议使用false来禁用。
相当于别名。