一、介绍环境的基础介绍
1、什么是JDK?JDK的作用?
JDK是java语言的软件开发工具包,能解释java程序,编译java语言,没有jdk的话无法编译Java程序。
包含了各种类库和工具,机器不是直接识别语言的,会借助工具的编译器,可以理解为翻译官,将一门语言翻译为机器可以识别的语言,Jdk能对Java进行编译,我们的工具才能识别Java语言 ,
jdk就是一款语言编译工具,Tomcat 是基于Java语言编写的
jdk分为:linux中的jdk,windows中的jdk
2、apache-tomcat java应用服务器的目录
(1)bin目录:
bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令)
(2)conf目录:
conf目录主要是用来存放tomcat的一些配置文件
server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码
web.xml可以设置tomcat支持的文件类型
context.xml可以用来配置数据源之类的
tomcat-users.xml用来配置管理tomcat的用户与权限
(3)
lib目录:
lib目录主要用来存放tomcat运行需要加载的jar包。
例如,像连接数据库的jdbc的包我们可以加入到lib目录中来。
(4)
logs目录:
logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出的日志。(清空不会对tomcat运行带来影响)
在linux环境中,控制台的输出日志在catalina.out文件中(重点)
查看日志 cat catalina.out
(5)
temp目录:
temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行
带来影响)
(6)
webapps目录:(在项目部署中非常重要)
webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程
序。以文件夹、war包、jar包的形式发布应用。
也可以把应用程序放置在磁盘的任意位置,在配置文件中进行映射
(7)
work目录:
work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。
清空work目录,然后重启tomcat,可以达到清除缓存的作用。
4、其他知识点:
查看tomcat服务器进程和启动情况 ps -ef |grep tomcat
在bin目录下启动tomcat命令: sh startup.sh或者./startup.sh
在bin目录下关闭tomcat命令: sh shutdown.sh
在浏览器输入如下网址
http://192.168.XX.XX:8080
http代表的是:采用的是超文本传输协议
192.168.XX.XX是:Linux系统的IP地址(因为测试环境是在Linux上面搭建的)
8080是:tomcat的默认端口号(因为项目是用tomcat服务器部署的)
5、linux服务器中日志的错误级别?(日志级别)
日志级别
日志一共分成5个等级,从低到高分别是:
DEBUG
INFO
WARNING
ERROR
CRITICAL
说明:
DEBUG:详细的信息,通常只出现在诊断问题上
INFO:确认一切按预期运行
WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
ERROR:更严重的问题,软件没能执行一些功能
CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行
这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪。
6、tomcat、nginx和apache服务器的定义和区别
Apache是应用服务器:对于静态网页的支持是Apache的强项,但像php,cgi,jsp等
动态网页一般就需要Tomcat来处理;由于Tomcat本身也内含了一个HTTP服务器,
它也可以被视作一个单独的Web服务器,但是,不能将 Tomcat 和 Apache Web 服务器混淆,
Apache Web Server 是一个用 C 语言实现的 HTTP web server;
Apache,nginx,tomcat并称为网页服务三剑客。
Tomcat是Java应用服务器:它只是一个Servlet(JSP也翻译成Servlet)容器,可以认为是Apache的扩展,但是可以独立于Apache运行。
Nginx是轻量级的HTTP服务器:它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器
7、
(1)apache和tomcat的对比
相同点:
两者都是Apache组织开发的
两者都有HTTP服务的功能
两者都是免费的
(2)不同点:
Apache是Web服务器,Tomcat是应用(
Java)服务器
如果客户端请求的是静态页面,一般需要Apache服务器响应请求
如果客户端请求动态页面,则是Tomcat服务器响应请求。
可以理解Tomcat为Apache的一种扩展。
(3)apache、nginx和tomcat的优势比较
(一)Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。
Apache是静态解析,适合静态HTML、图片等
(二)
Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache和tomcat。Nginx有动态分离机制,静态请求直接就可以通过Nginx处
理,动态请求才转发请求到后台交由Tomcat进行处理
(三)
Tomcat:动态解析容器,处理动态请求,tomcat处理动态请求的速度高于apache和nginx,是编译JSPServlet的容器
(四)
在日常工作中:
nginx一般用来做前端应用服务器
tomcat会用来做后端的java应用服务器
8、
什么是静态请求?(请求的是静态资源)
静态资源:指存储在本地硬盘内的数据,固定的数据,不需要计算的数据。
如:图片、字体、js文件、css文件等等。在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内
9、什么是动态请求?(请求的是动态资源)
动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据。动态请求一般都需要去请求数据库。
如:请求明天的天气信息数据、请求查看账户余额
10、Nginx服务器相关的功能如下:
Nginx的动静态分离机制功能:将一个请求中动态请求和静态请求分离出来
Nginx的正向代理服务器的功能
Nginx的反向代理服务器的功能
Nginx的负载均衡功能
(一)动静态分离
nginx服务器动静态分离机制原理解释:
nginx是一个服务器,所有的请求都先请求到nginx,然后再由nginx对内网进行请求的分发到tomcat,然后tomcat处理完请求后将数据发送给nginx,然后
由nginx发送给用户,整个过程对用户的感觉就是nginx在处理用户请求。nginx请求分离需要进行配置,配置文件是conf文件夹下的nginx.conf文件中,
进行静态请求与动态请求的分离。
Tomcat应用服务器是用来处理Servlet容器和JSP的,虽然它也可以处理HTML等等一系列静态资源,但是效率不如Nginx,当用户访问静态资源时,让Nginx
将静态资源返回给用户;当用户访问动态资源时,将访问转到Tomcat应用服务器上,Tomcat将数据返回给Nginx,Nginx再返回给用户。
11、
Nginx的正向代理服务器
Nginx的正向代理服务器
1、正向代理代理的是客户端
正向代理(Forward Proxy)是一种代理服务器,它位于客户端和服务端之间,代表客户端向其他服务器发送请求。
一般使用的场景就是,当客户端无法直接访问某些资源时,可以通过正向代理来访问。正向代理服务器会将客户端的请求转发给目标服务器,并将响应返回给客户端。正向代理服务器可以缓存请求的响应,从而提高访问速度,并且可以对客户端进行身份验证和授权。
那么正向代理一般用在哪里,以下为常见的几种正向代理场景:
a、V/P/N
代表“虚拟专用网络”,这是一项保护互联网连接和在线隐私的服务。比如我们为了保护公司的隐私安全,设置公司的网络只有通过 VPN 登录后才能进行接入。
b、动态 IP 代理
动态 IP 代理最常用的场景就是网络爬虫,因为大多数网站为了避免被频繁的访问和抓取,会限制访问 IP,如果使用同一个 IP 进行访问,那么很快就会不限制无法访问。因为我们需要 动态 IP 服务器帮我们转发请求,从而避免被目标服务器检测出是在频繁抓取。
c、隐藏客户端 IP
隐藏客户端 IP 就是我们经常电影中看到的,黑客通过代理手段,隐藏自己的真实 IP,避免被其它发现自己的实际 IP,从而查到黑客实际所在地址。
2、服务器并不知道用户的存在
12、
Nginx的反向代理服务器
Nginx的反向代理服务器
1、反向代理代理的是服务器(千万用户访问百度,由服务器A分发请求)
2、用户向服务器A发起请求,然后由服务器A去分发请求给到服务器B和服务器
C进行处理,用户并不知道是IP地址为多少的哪台服务器在处理自己的请求
反向代理定义;
反向代理是一种代理服务器,在客户端向服务器发送请求时,代理服务器从一组或多组后端服务器中获取资源并返回给客户端,客户端只知道反向代理的IP地址,不知道代理服务器后面的服务器簇的存在。与正向代理相反,反向代理是作为服务器端的代理,而不是作为客户端的代理,用于隐藏真实服务端。
四、反向代理的使用场景
a、堡垒机
堡垒机是一种安全审计系统,它管控着各种想登录服务器的权限或者是操作,能够监督员工们的操作,对员工们的行为起到约束监控作用。通过堡垒机我们可以管控员工对服务器的访问,保护真实服务器的安全。
b、nginx 负载均衡
负载均衡服务器(Load Balancer)是一种用于分配网络请求和流量的设备或软件。它的主要目的是在多个服务器(或计算资源)之间平均分配负载,以确保这些服务器能够高效地共同处理请求,提高系统的性能、可用性和稳定性。比如我们常见的使用 nginx 作为负载均衡服务器。
总结,正向代理和反向代理主要的区别在于代理的对象不一样,正向代理的客户端,对于服务端来说,访问的就是真实的客户端;反向代理代理的是服务端,对客户端来说,访问的就是真实服务服务端。
13、
Nginx的负载均衡
什么是负载均衡呢?就是我的项目部署在不同的服务器上,但是通过统一的域名进
入,nginx则对请求进行分发,减轻了服务器的压力。
Nginx的负载均衡
优点就是:可以减少服务器的压力,将原本一台服务器所要承受的访问量分给了多台,并提高了项目的可用性,当一台服务器挂掉的时候也不会导致整个项目瘫痪。
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。
=====================================
多有米项目相关面试题
1、请简述多有米环境的搭建、用到了哪些工具和流程介绍
Jdk 1.8以上
服务器 ( tomcat ,apache)
代码包 ( root前端,manage后端)
数据库 mysql
虚拟机 centos
数据包
简单流程:安装jdk》安装服务器》将代码包部署到服务器中》修改配置:ip,数据库等》安装数据库> 还原项目数据》
在启动服务,启动数据库,开启对应开启的端口==》在浏览器中输入ip+端口
详细流程:
将下载的包上传到虚拟机上—安装jdk —解压tomcat 服务器—启动服务器—在浏览器中输入:ip+端口号,出现tomcat界面:表示服务器tomcat 是可以启动的—关闭服务器—删除webapps 下代码包;将自己的前后端代码包移动webapps下—在bin目录下:sh startup.sh 启动服务—配置前后端—启动数据库—创建新的数据库,(数据库名要和前后端的jdbc配置文件中的库名一致)—还原数据—再验证是否还原成功—编辑etc里的my.cnf—关闭防火墙,重启数据库,启动tomcat 服务器—在浏览器中输入网址+端口
2、查看当前端口被哪个应用程序占用了
lsof -i:端口号 查看占用端口
netstat -nltp|grep 端口号
3、Tomcat和Nginx的区别,nginx有哪些优点?
(1)Tomcat和Nginx的区别:tomcat是处理动态资源,nginx是处理静态子资源
(2)nginx 优点:a、动静态分离、b、负载均衡 c、正向代理、d、反向代理
4、日志的级别有几种?
(1)日志级别5种
(2)debug、info、warning、error(找bug)、critical
5、怎么查看实时日志? 在哪个目录下面?用的什么命令查看?如果报错的日志太多你是怎么去定位的?怎么去找到报错日志的?
(1)tail -f
(2)logs 下catalina.out
(3) tail -f 或者 cat 日志文件 或者 vim 日志文件
(4)cat 日志文件|grep error 或vim 日志文件 用/或?搜索
(5)查看有error 报错显示
6、Tomcat的启动命令和Tomcat的端口号在哪里修改?
(1)Tomcat的启动命令:sh startup.sh 或者./ startup.sh
(2) tomcat 端口 在conf 中server .xml 文件中找到conner开头的代码,修改端口号 (69号)
7、jdbc你怎么了解的? 全称是什么?
(1) jdbc是java数据库连接(jDBC(Java DataBase Connectivity)是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。各种不同类型的数据库都有相应的实现)
(2)java databases connecttivity 是全称
8、数据库当中怎么不区分大小写?
(1)vim /etc/my.cnf 中添加一条语句:lower_case_table_names = 1 (1是不区分大小写,0是区分大小写)
9、你们公司的测试环境是由谁搭建的?
(1)运维或者测试经理,或者你
10、搭建测试环境的工具有哪些?(和第一题一样)
(1)jdk、服务器(云服务器,容器云)、数据库、代码包
11、jdk是什么,有什么作用?
(1)jdk是编译代码,提供java运行环境
12、你们公司的测试环境是基于什么系统搭建的?
系统:centos
dym: linux+tomcat+mysql+java
13、帮我解释一下webapps是什么?webapps目录下面存放的东西是什么?
(1)webapps是存放应用程序,当tomcat启动会自动加载代码包发布应用
(2)存放代码包(war、jar形式)
14、http和HTTPS是什么?各自的端口号是什么?
(1)
HTTP定义:HTTP 是超文本传输协议
HTTPS定义:HTTPS 是超文本 安全传输协议 http+ssl证书
(2)
HTTP端口:80
HTTPS端口:443
15、nginx的端口号在哪个文件里面修改?为什么访问多有米前后台的服务器ip地址和访问mysql数据库的服务器ip地址是一致的?
(1) NGINX/conf/inx.conf 打开,修改listen后面的端口
(2)数据库和服务器都在同一台服务器
16、Tomcat的默认端口号是多少?nginx的默认端口号是什么?mysql的默认端口号是多少?假如端口号80、8080、3306被占用了怎么办?用什么命令进行查看?怎么去结束这进程?
(1)Tomcat的默认端口号:8080
(2)nginx的默认端口号是:80
(3)mysql的默认端口号是:3306
(4)修改端口或者关闭服务,释放端口
(5)lsof -i:端口 或netstat -nltp|grep 端口号
(6)kill -9 进程号
17、mysql数据库的配置文件存放在哪里?
cat /etc/my.cnf
18、什么叫动态资源?什么叫静态资源?
动态:运行的资源(计算,运行后的结果)
静态:未运行的资源(图片,字体,格式),不需要经过处理文件
动态资源:动态资源是指需要经过服务器端处理后才能返回给客户端的文件。通常,这些文件包含动态生成的内容,例如动态网页、数据库查询结果等。服务器端会根据客户端请求的参数和逻辑进行处理,然后生成相应的内容返回给客户端。动态资源的处理通常需要通过后端的应用程序(如PHP、Python、Java等)来实现。
静态资源:静态资源是指可以直接从服务器端返回给客户端的文件,不需要经过服务器端处理的文件。这些文件在服务器上存储为静态文件,例如HTML、CSS、JavaScript、图像、字体等。服务器在接收到客户端请求时,直接将对应的静态文件发送给客户端,无需额外的处理。
19、nginx web应用服务器有哪些优点?
(1)负载均衡
(2)动静态分离
(3)正向代理
(4)反向代理
20、对nginx的正向代理和反向代理有了解过吗?
正向代理:客户端通过代理服务器来访问目标目标服务器 ;比如:访问github 网络限制,
反向代理:客户端通过代理服务器来访问多个目标服务器中的一个。比如:堡垒机、
21、你们公司的服务器一般是怎么进行配置的?(根据项目来衡量)
一个项目: 1个服务器前端,3个-5个服务器后端,数据库 服务器 4台(一主三从,三主三从,mgr集群) 10台服务器
22、假如你在前端页面点击一个搜索按钮的时候,有弹框提示:系统异常,这个时候你应该怎么去定位和分析这个问题?看日志怎么去看?
一、
(1·)页面错误提示:系统提示 404或502
(2)查看接口:请求参数正确,返回数据错误,后端bug;如果请求参数正确,返回参数正确,页面是显示错误就是前端bug
(3)查看后台日志logs (具体报错)
二、tail -f 日志文件 查看日志
根据日志等级:查看报错
23、你们公司有多少张表?能说出常用的几张表的名字吗?和表里面的具体的一些字段的名字?
(1)203表 根据项目大小,参考
(2)
(3)