测试环境搭建及理论
一.环境介绍
(1)测试环境分类;
a、开发环境 , 开发
b、测试环境 ,(也叫sit环境 ,uat环境) 测试人员
c、线上环境(也叫生成环境) 运营
(2)测试环境作用:
a、用于功能测试
b、寻找bug
c、编写测试用例等
(3)环境的结构:
开头首字母=系统+服务器+数据库+编程语言
例:lampj=linux+apache+mysql+java
二.tomcat环境
搭建准备
1、jdk 1.8以上 按需求更换
什么是JDK?JDK的作用?
JDK是java语言的软件开发工具包,能解释java程序,编译java语言,没有jdk的话无法编译Java程序。
包含了各种类库和工具,机器不是直接识别语言的,会借助工具的编译器,可以理解为翻译官,将一门语言翻译为机器可以识别的语言,Jdk能对Java进行编译,我们的工具才能识别Java语言 ,
jdk就是一款语言编译工具,Tomcat 是基于Java语言编写的
2、服务器 ( tomcat ,apache)按需求更换
3、代码包 ( root后端,manage前端)按需求更换
4、数据库 msyql 按需求更换
5、虚拟机 centos按需求更换
6、数据包 按需求更换

tomcat安装步骤
1.通过传输工具将下载的包传到虚拟机上

2.在虚拟机上安装jdk文件
jdk需要区分版本(区分64 位或32位)
Linux安装命令:rpm -ivh 文件名

3.查看jdk是否安装成功
Linux命令:java -version 查看jdk版本

4.解压需要的服务器包
Linux命令:tar -zxvf 文件包名

解压后出现一个新文件

5.进入刚才解压的服务器文件

- bin目录(bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命 令),另一类是以.bat结尾的(windows命令)

- conf目录: conf目录主要是用来存放tomcat的一些配置文件 server.xml可以设置端口号、设置域名或IP、默认加载的项目、请求编码 web.xml可以设置tomcat支持的文件类型 context.xml可以用来配置数据源之类的 tomcat-users.xml用来配置管理tomcat的用户与权限

- lib目录: lib目录主要用来存放tomcat运行需要加载的jar包。 例如,像连接数据库的jdbc的包我们可以加入到lib目录中来。

- logs目录: logs目录用来存放tomcat在运行过程中产生的日志文件,非常重要的是在控制台输出 的日志。(清空不会对tomcat运行带来影响) 在linux环境中,控制台的输出日志在catalina.out文件中(重点)

- temp目录: temp目录用户存放tomcat在运行过程中产生的临时文件。(清空不会对tomcat运行 带来影响)

- webapps目录:(在项目部署中非常重要) webapps目录用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程 序。以文件夹、war包、jar包的形式发布应用。 也可以把应用程序放置在磁盘的任意位置,在配置文件中进行映射。

- work目录: work目录用来存放tomcat在运行时的编译后文件,例如JSP编译后的文件。 清空work目录,然后重启tomcat,可以达到清除缓存的作用。

6.启动服务器进入bin目录并使用命令启动服务器

启动服务器Linux命令:(sh startup.sh) 或者( ./ start.sh)

7.关闭防火墙ll
Linux命令:service iptables stop

8.打开浏览器
输入虚拟机的IP:8080(8080根据产品需求修改)
出现如下界面:表示服务器tomcat 是可以启动的。

9.查看服务进程并杀死进程
Linux命令:ps -ef|grep 服务名称 (查看进程)
Linux命令:kill -9 进程号 (杀死进程)

10.返回服务器文件根目录,进入webapps

11.删除原有文件,将自己的前后端代码包移动webapps下

12.返回bin目录,启动服务器
sh startup.sh

13.返回webapps查看

如果没有解压如上两个包,就在关闭服务,在开启服务,直到两个包出现。
14.查看服务进程并杀死进程
Linux命令:ps -ef|grep 服务名称 (查看进程)
Linux命令:kill -9 进程号 (杀死进程)
15.配置后端
1.进入webapps目录下的前端文件

在进入WEB-INF文件,显示有jdbc连接配置文件

2.vim编辑jdbc文件配置

将IP地址修改为虚拟机IP和设置数据库名称

Ctrl+c shift+:wq! 保存退出
16.配置前端
1.进入webapps目录下的后端文件

在进入WEB-INF文件,显示有jdbc连接配置文件

2.vim编辑jdbc文件配置

将IP地址修改为虚拟机IP和设置和前端一样的数据库名称

Ctrl+c shift+:wq! 保存退出
17.数据库
1.先虚拟机上重启数据库,关闭防火墙
service mysqld restart (重启数据库)
service iptables stop (关闭防火墙)

2.连接数据库
Linux命令:mysql -uroot -p 连接数据库

3.创建新的数据库,(数据库名要和前后端的jdbc配置文件中的库名一致)
SQL语句:create database 数据库名称; (新建数据库)
show databases;(查看所有数据库)

4.授权加刷新权限
grant all privileges on *.* to 用户名@'%' identified by '密码';
grant all privileges on *.* to root@'%' identified by '123456'; 授权
flush privileges 刷新权限

5.还原数据
退出mysql界面,回到linux界面,进行还原数据,
还原数据前要,准备好数据包
命令:mysql -u root -p 数据库名<数据包名 ;

6.验证是否成功
在进入数据库 mysql -u root -p
use 库名
show tables 显示所有的表

18.启动服务器
sh startup.sh
service iptables stop (关闭防火墙)

19,查看日志ll
返回进入loge 查看日志文件

20.在Linux界面设置mysql不区分大小写
设置数据库中不区分大小写:( vim /etc/my.cnf )
lower_case_table_names=1 不区分大小写
lower_case_table_names=0 区分大小写


21.在浏览器中输入网址+端口
前端url:

后端url:

后端登录密码:
账号:admin
密码:123456

三.nginx环境
搭建准备
LNMP :linux+nginx+mysql+php
LAMP:apache
nginx: web服务器
mysql:数据库
php:语言
php-fpm: 进程管理器
php-mysql: php连接数据库的工具
1. 什么是php-fpm
php-fpm(FastCGI Process Manager:FastCGI进程管理器)。在php5.3.3之前,php-fpm对于php来说,是它的一个补丁包,在5.3.3版本后,php-fpm已经集成在php中了。
作用:php-fpm提供更好的php进程管理方式,有效控制内存,进程,平滑重载php配置,控制php-cgi的fastcgi进程。
2. 什么是fastcgi
fastcgi:快速的通用网关接口。
需要的东西有 LNMP Cenos6.5 nginx php php-fpm mysql php-mysql
LAMP 是指(linux apache mysql php)
tomcat安装步骤
1.在线安装PHP
yum install 要安装的程序
Linux安装命令:yum install php

安装后检测一下有没有安装成功
Linux命令:php -v (查看当前php版本)

2.安装nginx
nginx在线安装 wget 地址:
Linux命令:wget http://mirrors.sohu.com/nginx/nginx-1.8.1.tar.gz

有安装包可以不用下载直接导入
3.解压nginx安装包
tar -zxvf 压缩包名
Linux解压命令:tar -zxvf nginx-1.8.1.tar.gz

4.安装依赖包
缺少依赖包会在下一步报错,提前安装好,一共有两个,直接在线安装缺少的依赖包
依赖包1
Linux命令:yum install -y pcre-devel

依赖包2
Linux命令:yum install -y zlib-devel

5.执行configure
在解压后的目录nginx-1.8.1中执行命令
Linux命令:./configure (作用检查nginx配置文件)

6.执行make(编译)
Linux命令:make

7.执行make install(编译后安装)
Linux命令:make install

查看有没有安装成功
Linux命令:cd /usr/local/nginx/sbin
有下面的文件表示安装成功

8.查看端口有没有被占用
netstat -ntlp|grep 端口号
Linux命令:netstat -ntlp|grep 80

9.配置启动文件
先将启动文件nginx移动到/etc/init.d
mv 文件名 要移动存放的路径
Linux移动文件命令:mv nginx /etc/init.d

在进入到刚才存放文件的路径
cd 路径

在给刚才的文件进行授权,添加可执行权限
chmod +执行权限 文件名
Linux修改权限命令:chmod +x nginx

10.启动nginx
service 启动文件名 start
linux启动命令:service nginx start

在查看有没有启动成功
netstat -ntlp|grep 端口号
Linux命令:netstat -ntlp|grep 80

11.nginx配置文件修改
vim 文件路径加文件名
linux编辑命令:vim /usr/local/nginx/conf/nginx.conf

linux显示行号命令:set nu

共3处修改re
1. 在配置文件第45行 添加index.php

2.在配置文件第65~71行 取消已经注释的这块代码(删除代码前面的#就行)

3.在配置文件69行修改scripts 为$document_root ($fastcgi_script_name前面)

保存退出 Ctrl+c shift+:wq! 保存退出
4.在重启一下nginx
service nginx restart

12.安装php-fpm
yum install 按程序名
Linux命令:yum install php-fpm

13.修改php-fpm配置文件
vim 路径加目标文件
linux命令:vim /etc/php-fpm.d/www.conf

修改php-fpm 用户和用户组为nginx(39到41行之间)

保存退出 Ctrl+c shift+:wq! 保存退出
14.添加nginx用户
useradd 用户名
Linux添加用户命令:useradd nginx

15.安装mysql
1.rpm -qa |grep mysql 查看已经安装的mysql
2.删除所有mysql
3.yum install -y mysql mysql-server mysql-devel 在线安装
4.service mysqld start 重启服务
5.mysql -uroot -p 回车进入mysql
6.set password=password("123456");
已经安装直接下一步
16.安装php-mysql
yum install 按程序名
Linux命令:yum install php-mysql

17安装Discu
有discuz的安装包,所以可以直接使用,如果没有这个安装包,可以在线下载
wget http://download.comsenz.com/DiscuzX/3.2/Discuz_X3.2_SC_UTF8.zip
1. 先进入cd /usr/local/nginx/html

2. 可以借助传输工具把discuz包丢到这个html目录下,进行

解压
unzip 包名

3.重命名upload
mv 原文件名 新文件名
Linux重命名命令:mv upload bbs

4.添加权限
chown -R nginx.nginx bbs (给bbs目录赋nginx用户,nginx用户组权限)

18.discuz安装
安装discuz之前,先进行以下操作。
1 service iptables stop 关闭防火墙
2 service nginx restart 重启nginx服务
3 service mysqld restart 重启mysqld服务
4 service php-fpm restart 重启php-fpm 服务(2次)

1.通过浏览器访问 discuz论坛地址
Ip地址/bbs/install

2全新安装
4.数据库名:bbs
5.数据库用户名:root
6.数据库密码:123456
7.管理员密码:123456
8.重复管理员密码:123456

其他知识点:
服务进程
查看tomcat服务器进程和启动情况 ps -ef |grep tomcat
在bin目录下启动tomcat命令: sh startup.sh或者./startup.sh
在bin目录下关闭tomcat命令: sh shutdown.sh
在浏览器输入如下网址
http代表的是:采用的是超文本传输协议
192.168.XX.XX是:Linux系统的IP地址(因为测试环境是在Linux上面搭建的)
8080是:tomcat的默认端口号(因为项目是用tomcat服务器部署的)
日志级别
查看日志Linux命令:tail -f 日志文件名
日志一共分成5个等级,从低到高分别是:
DEBUG
INFO
WARNING
ERROR
CRITICAL
说明:
DEBUG:详细的信息,通常只出现在诊断问题上
INFO:确认一切按预期运行
WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
ERROR:更严重的问题,软件没能执行一些功能
CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行
这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪。
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代理服务器
apache和tomcat的对比
相同点:
两者都是Apache组织开发的
两者都有HTTP服务的功能
两者都是免费的
不同点:
Apache是Web服务器,Tomcat是应用(
Java)服务器
如果客户端请求的是静态页面,一般需要Apache服务器响应请求
如果客户端请求动态页面,则是Tomcat服务器响应请求。
可以理解Tomcat为Apache的一种扩展。
apache、nginx和tomcat的优势比较
- Apache优点:相对于Tomcat服务器来说处理静态文件是它的优势,速度快。
Apache是静态解析,适合静态HTML、图片等
- Nginx优点:负载均衡、反向代理、处理静态文件优势。nginx处理静态请求的速度高于apache和tomcat。Nginx有动态分离机制,静态请求直接就可以通过Nginx处理,动态请求才转发请求到后台交由Tomcat进行处理
- Tomcat:动态解析容器,处理动态请求,tomcat处理动态请求的速度高于apache和nginx,是编译JSP\Servlet的容器
- 在日常工作中:
nginx一般用来做前端应用服务器
tomcat会用来做后端的java应用服务器
Nginx动静态分离

nginx服务器动静态分离机制原理解释:
nginx是一个服务器,所有的请求都先请求到nginx,然后再由nginx对内网进行请求的分发到tomcat,然后tomcat处理完请求后将数据发送给nginx,然后
由nginx发送给用户,整个过程对用户的感觉就是nginx在处理用户请求。nginx请求分离需要进行配置,配置文件是conf文件夹下的nginx.conf文件中,
进行静态请求与动态请求的分离。
Tomcat应用服务器是用来处理Servlet容器和JSP的,虽然它也可以处理HTML等等一系列静态资源,但是效率不如Nginx,当用户访问静态资源时,让Nginx
将静态资源返回给用户;当用户访问动态资源时,将访问转到Tomcat应用服务器上,Tomcat将数据返回给Nginx,Nginx再返回给用户。
Nginx的正向代理服务器

1、正向代理代理的是客户端正向代理(Forward Proxy)是一种代理服务器,它位于客户端和服务端之间,代表客户端向其他服务器发送请求。
一般使用的场景就是,当客户端无法直接访问某些资源时,可以通过正向代理来访问。正向代理服务器会将客户端的请求转发给目标服务器,并将响应返回给客户端。正向代理服务器可以缓存请求的响应,从而提高访问速度,并且可以对客户端进行身份验证和授权。

那么正向代理一般用在哪里,以下为常见的几种正向代理场景:
a、V/P/N
代表“虚拟专用网络”,这是一项保护互联网连接和在线隐私的服务。比如我们为了保护公司的隐私安全,设置公司的网络只有通过 VPN 登录后才能进行接入。
b、动态 IP 代理
动态 IP 代理最常用的场景就是网络爬虫,因为大多数网站为了避免被频繁的访问和抓取,会限制访问 IP,如果使用同一个 IP 进行访问,那么很快就会不限制无法访问。因为我们需要 动态 IP 服务器帮我们转发请求,从而避免被目标服务器检测出是在频繁抓取。
c、隐藏客户端 IP
隐藏客户端 IP 就是我们经常电影中看到的,黑客通过代理手段,隐藏自己的真实 IP,避免被其它发现自己的实际 IP,从而查到黑客实际所在地址。
Nginx的反向代理服务器

1、反向代理代理的是服务器(千万用户访问百度,由服务器A分发请求)
2、用户向服务器A发起请求,然后由服务器A去分发请求给到服务器B和服务器
C进行处理,用户并不知道是IP地址为多少的哪台服务器在处理自己的请求
反向代理定义;
反向代理是一种代理服务器,在客户端向服务器发送请求时,代理服务器从一组或多组后端服务器中获取资源并返回给客户端,客户端只知道反向代理的IP地址,不知道代理服务器后面的服务器簇的存在。与正向代理相反,反向代理是作为服务器端的代理,而不是作为客户端的代理,用于隐藏真实服务端。 四、反向代理的使用场景
a、堡垒机
堡垒机是一种安全审计系统,它管控着各种想登录服务器的权限或者是操作,能够监督员工们的操作,对员工们的行为起到约束监控作用。通过堡垒机我们可以管控员工对服务器的访问,保护真实服务器的安全。
b、nginx 负载均衡
负载均衡服务器(Load Balancer)是一种用于分配网络请求和流量的设备或软件。它的主要目的是在多个服务器(或计算资源)之间平均分配负载,以确保这些服务器能够高效地共同处理请求,提高系统的性能、可用性和稳定性。比如我们常见的使用 nginx 作为负载均衡服务器。
总结,正向代理和反向代理主要的区别在于代理的对象不一样,正向代理的客户端,对于服务端来说,访问的就是真实的客户端;反向代理代理的是服务端,对客户端来说,访问的就是真实服务服务端。
Nginx的负载均衡
什么是负载均衡呢?就是我的项目部署在不同的服务器上,但是通过统一的域名进
入,nginx则对请求进行分发,减轻了服务器的压力。
优点就是:可以减少服务器的压力,将原本一台服务器所要承受的访问量分给了多台,并提高了项目的可用性,当一台服务器挂掉的时候也不会导致整个项目瘫痪。
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。
面试题
1-请简述多有米环境的搭建、用到了哪些工具和流程介绍
jdk 服务器 contos mysql 前后端代码包 数据包
简单流程:安装jdk==》安装服务器==》将代码包部署到服务器中==》修改配置:ip,数据库等==》安装数据库==> 还原项目数据==》在启动服务,启动数据库,开启对应开启的端口==》在浏览器中输入ip+端口
详细流程:
将下载的包上传到虚拟机上---安装jdk ---解压tomcat 服务器---启动服务器---在浏览器中输入:ip+端口号,出现tomcat界面:表示服务器tomcat 是可以启动的---关闭服务器---删除webapps 下代码包;将自己的前后端代码包移动webapps下---在bin目录下:sh startup.sh 启动服务---配置前后端---启动数据库---创建新的数据库,(数据库名要和前后端的jdbc配置文件中的库名一致)---还原数据---再验证是否还原成功---编辑etc里的my.cnf---关闭防火墙,重启数据库,启动tomcat 服务器---在浏览器中输入网址+端口
2-查看当前端口被哪个应用程序占用了
netstat -nltp|grep 端口号
3-Tomcat和Nginx的区别,nginx有哪些优点?
tomcat处理动态资源
nginx处理静态资源
优点:动静态分离,正向代理,反向代理,负载均衡
4-日志的级别有几种?
debug,info,warining,error, criticat
5-怎么查看实时日志? 在哪个目录下面?用的什么命令查看?如果报错的日
志太多你是怎么去定位的?怎么去找到报错日志的?
tail -f 日志文件名
在lojs目录下catalina.out
cat 日志文件名/tail -f 日志文件名
cat 日志文件名|grep error
查看error报错显示
6-Tomcat的启动命令和Tomcat的端口号在哪里修改?
tomcat启动命令在bin目录输入sh startup.sh
在conf目录下vim server.xml 找到connector开的代码修改端口号
7-jdbc你怎么了解的? 全称是什么?
JDBC,全称是Java Database Connectivity,它是一套统一的、基于Java语言的关系数据库编程接口规范,该规范允许你把SQL语句作为参数通过JDBC接口发送给远端数据库,远端数据库接受到你的SQL后进行语法分析、验证,然后执行、响应。
8-数据库当中怎么不区分大小写?
vim /etc/my.cnf
插入一个语句:lower_case_table_name = 1 (1是不区分大小写,0是区分大小写)
9-你们公司的测试环境是由谁搭建的?
运维,经理,自己
10-搭建测试环境的工具有哪些?
jdk,服务器,mysql,代码包,数据包, contos
11-jdk是有什么作用?
jdk是编译代码,提供java的运行环境
12-你们公司的测试环境是基于什么系统搭建的?
contos 系统
linux+tomcat+java+mysql=ltjm
13-帮我解释一下webapps是什么?webapps目录下面存放的东西是什么?
webapps存放应用程序
存放应用程序的代码包,数据
14-http和HTTPS是什么?各自的端口号是什么?
http是目前用的最广泛的超文本传输协议,但是有安全风险 端口号80
https是超文本安全传输协议,更安全但是效率偏低,且收费 端口号443
15-nginx的端口号在哪个文件里面修改?为什么访问多有米前后台的服务器
ip地址和访问mysql数据库的服务器ip地址是一致的?
nginx/conf/context.xml
因为是同一个服务器
16-Tomcat的默认端口号是多少?nginx的默认端口号是什么?m&sql的默认
端口号是多少?假如端口号80、8080、3306被占用了怎么办?用什么命令进行
查看?怎么去结束这进程?
tomcat默认端口号8080
nginx默认端口号80
mysql默认端口号3306
杀死进程,重启服务器
netstat -nltp|grep 端口号
kill -9 进程号
17-mysql数据库的配置文件存放在哪里?
cat /etc/my.cnf
18-什么叫动态资源?什么叫静态资源?
动态:需要进行计算的结果
静态:不需要进行计算的结果
19-nginx web应用服务器有哪些优点? 你用nginx做过代理服务器吗?
nginx的动静态分离机制和负载均衡功能可以详细的介绍一下吗?
动静态分离,正向代理,反向代理,负载均衡
nginx动静态分离
当用户需要静态资源nginx直接可以进行处理,当客户需要动态资源时nginx将需求转到tomcat处理,在将结果转到nginx,在转到客户
负载均衡
用户需求通过nginx分发到不同服务器处理,结果在返回到nginx提供客户,项目多个服务器,通过nginx分发需求,降低服务器负载
20-对nginx的正向代理和反向代理有了解过吗?
正向代理:客户端通过代理服务器来访问目标目标服务器 ;比如:访问github 网络限制,
反向代理:客户端通过代理服务器来访问多个目标服务器中的一个。比如:堡垒机、
21-你们公司的服务器一般是怎么进行配置的?
一个项目: 1个服务器前端,3个-5个服务器后端,数据库 服务器 4台(一主三从,三主三从,mgr集群) 10台服务器
22-假如你在前端页面点击一个搜索按钮的时候,有弹框提示:系统异常这个时候你应该怎么去定位和分析这个问题?看日志怎么去看?
(1)页面错误提示:系统提示 404或502
(2)查看接口:请求参数正确,返回数据错误,后端bug;如果请求参数正确,返回参数正确,页面是显示错误就是前端bug
(3)查看后台日志logs (具体报错)
tail -f 日志文件 查看日志
23-你们公司有多少张表?能说出常用的几张表的名字吗?和表里面的具体的一些字段的名字?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具