Linux 测试环境完整部署手册(CentOS 7 + Ubuntu 20.04 双版本)

前言

本手册覆盖测试环境全栈组件部署流程,包含系统初始化、基础开发环境(JDK/Python/Node/Maven/Git)、核心中间件(MySQL/Redis/Nginx/MinIO/RabbitMQ)、容器化工具(Docker/Compose)、应用部署(Java JAR)、测试工具(Allure)。


一、系统初始化(所有机器必做)

1.1 关闭防火墙(测试环境核心操作)

CentOS 7 版本
复制代码
# 停止防火墙服务(临时生效,重启后会恢复)
systemctl stop firewalld
# 禁止防火墙开机自启(永久生效,避免重启后防火墙又开)
systemctl disable firewalld
# 验证防火墙状态:正常输出应为 inactive (dead),表示已关闭
systemctl status firewalld
Ubuntu 20.04 版本
复制代码
# 停止 Ubuntu 自带的防火墙 ufw(临时关闭)
systemctl stop ufw
# 禁止 ufw 开机自启(永久关闭)
systemctl disable ufw
# 验证状态:输出 inactive 即为关闭成功
systemctl status ufw

1.2 关闭 SELinux(仅 CentOS,Ubuntu 无此组件)

复制代码
# 修改 SELinux 配置文件:把强制模式(enforcing)改为禁用(disabled)
# sed -i 是直接修改文件内容,^ 匹配行首,确保只改 SELINUX=enforcing 这一行
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# SELinux 修改后需要重启服务器才能生效
reboot
# 重启后验证:输出 Disabled 即为成功(Enforcing 是未生效,Permissive 是宽容模式)
getenforce

注释补充:SELinux 是 CentOS 安全增强模块,测试环境关闭可避免「明明端口通但访问不了」「文件权限正常但应用读不到」等奇葩问题。

1.3 安装基础工具(测试环境必备)

CentOS 7 版本
复制代码
# yum install -y:-y 表示自动确认安装,无需手动输入 y
# wget:下载文件;curl:测试接口;vim:编辑文件;net-tools:包含netstat查端口;lsof:查端口占用;unzip/zip:解压/压缩;git:拉代码
yum install -y wget curl vim net-tools lsof unzip zip git
Ubuntu 20.04 版本
复制代码
# apt update:先更新软件源(Ubuntu 必须先更源,否则可能装不到包)
# apt install -y:自动确认安装
apt update && apt install -y wget curl vim net-tools lsof unzip zip git

1.4 同步系统时区(测试日志时间精准核心)

复制代码
# 设置系统时区为亚洲/上海(东八区),避免日志时间和本地时间不一致
timedatectl set-timezone Asia/Shanghai
# 验证:输出当前时间,格式如 Mon Mar  9 15:30:00 CST 2026,CST 就是中国标准时间
date

二、JDK 8 部署(Java 测试环境标配)

CentOS 7 版本
复制代码
# 安装 OpenJDK 8 开发版(包含 javac 编译工具,测试环境需要)
yum install -y java-1.8.0-openjdk-devel
Ubuntu 20.04 版本
复制代码
# 安装 Ubuntu 版 OpenJDK 8 开发包
apt install -y openjdk-8-jdk

验证 JDK 安装(通用命令)

复制代码
# 验证 JRE 版本(运行环境),输出 1.8.0_xxx 即为成功
java -version
# 验证 JDK 版本(编译环境),测试时编译代码需要
javac -version

三、Python3 + pip 部署(接口自动化 / 压测脚本必备)

3.1 安装 Python3 + pip

CentOS 7 版本
复制代码
# 安装 Python3 和 pip3(CentOS 7 需先安装 epel 源,否则无 pip3)
yum install -y epel-release
yum install -y python3 python3-pip
# 升级 pip3 避免安装库时报错(国内源加速)
pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
Ubuntu 20.04 版本
复制代码
# Ubuntu 默认带 Python3,安装 pip3 即可
apt install -y python3 python3-pip
# 升级 pip3(国内源加速,避免超时)
pip3 install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple

3.2 安装测试常用 Python 库(通用)

bash 复制代码
# requests:接口测试核心库;pytest:测试框架;allure-python:生成Allure报告
# pytest-html:生成HTML测试报告;locust:压测工具;selenium:UI自动化
pip3 install requests pytest allure-pytest pytest-html locust selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

3.3 验证 Python 环境(通用)

复制代码
# 验证 Python3 版本(输出 3.6+/3.8+ 即为正常)
python3 -V
# 验证 pip3 版本(输出 20.x+ 即为正常)
pip3 -V
# 验证库安装(无报错即为成功)
pip3 list | grep requests

四、Maven 部署(Java 项目打包 / 编译必备)

4.1 安装 Maven

CentOS 7 版本
复制代码
# 下载 Maven 3.8.8 稳定版(兼容大部分Java项目)
wget https://archive.apache.org/dist/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
# 解压到系统标准路径
tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /usr/local/
# 重命名文件夹,简化后续配置
mv /usr/local/apache-maven-3.8.8 /usr/local/maven
Ubuntu 20.04 版本
复制代码
# 安装基础依赖(确保解压工具可用)
apt install -y tar wget
# 下载同版本 Maven(保持环境一致)
wget https://archive.apache.org/dist/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
# 解压到系统标准路径
tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /usr/local/
# 重命名文件夹
mv /usr/local/apache-maven-3.8.8 /usr/local/maven

4.2 配置 Maven 环境变量(通用)

复制代码
# 写入全局配置文件,所有用户可用
echo 'export M2_HOME=/usr/local/maven' >> /etc/profile
echo 'export PATH=$PATH:$M2_HOME/bin' >> /etc/profile
# 让环境变量立即生效(无需重启服务器)
source /etc/profile

4.3 验证 Maven 安装(通用)

复制代码
# 输出版本号 3.8.8 即为成功
mvn -v

五、Git 详细配置(拉取 / 提交测试代码)

5.1 安装 Git(已在基础工具安装,此处补充配置)

CentOS 7 验证 / 补装
复制代码
# 验证 Git 是否安装
git --version
# 未安装则执行
# yum install -y git
Ubuntu 20.04 验证 / 补装
复制代码
# 验证 Git 是否安装
git --version
# 未安装则执行
# apt install -y git

5.2 Git 全局配置(通用)

复制代码
# 配置全局用户名(替换为你的Git账号名称,用于代码提交记录)
git config --global user.name "你的测试账号名"
# 配置全局邮箱(Git账号绑定邮箱)
git config --global user.email "你的测试邮箱@xxx.com"
# 配置默认分支为 main(适配主流代码仓库)
git config --global init.defaultBranch main
# 验证配置(输出上面设置的信息即为成功)
git config --list

5.3 示例:拉取测试代码(通用)

复制代码
# 拉取远程代码(替换为你的测试项目仓库地址)
git clone https://gitee.com/你的账号/测试项目.git

六、Node.js + npm 部署(前端项目 / 接口测试)

6.1 安装 Node.js + npm

CentOS 7 版本
复制代码
# 下载 Node 16 稳定版(兼容大部分前端项目)
wget https://nodejs.org/download/release/v16.20.2/node-v16.20.2-linux-x64.tar.gz
# 解压到系统路径
tar -zxvf node-v16.20.2-linux-x64.tar.gz -C /usr/local/
# 重命名简化路径
mv /usr/local/node-v16.20.2-linux-x64 /usr/local/node
Ubuntu 20.04 版本
复制代码
# 安装依赖工具
apt install -y wget tar
# 下载同版本 Node(保持环境一致)
wget https://nodejs.org/download/release/v16.20.2/node-v16.20.2-linux-x64.tar.gz
# 解压到系统路径
tar -zxvf node-v16.20.2-linux-x64.tar.gz -C /usr/local/
# 重命名简化路径
mv /usr/local/node-v16.20.2-linux-x64 /usr/local/node

6.2 配置 Node 环境变量(通用)

复制代码
# 写入全局配置文件
echo 'export NODE_HOME=/usr/local/node' >> /etc/profile
echo 'export PATH=$PATH:$NODE_HOME/bin' >> /etc/profile
# 立即生效
source /etc/profile

6.3 验证 Node + npm(通用)

复制代码
# 验证 Node 版本(输出 v16.20.2 即为成功)
node -v
# 验证 npm 版本(输出 8.x+ 即为成功)
npm -v
# 配置 npm 国内源(加速包安装)
npm config set registry https://registry.npm.taobao.org
# 验证源配置
npm config get registry

七、MySQL 5.7 部署(精准配置 + 允许远程访问)

7.1 安装 MySQL 5.7

CentOS 7 版本
复制代码
# 下载 MySQL 5.7 官方 yum 源包(CentOS 默认源没有 MySQL,需要手动加)
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
# 安装 yum 源包(安装后才能通过 yum 装 MySQL)
rpm -ivh mysql57-community-release-el7-9.noarch.rpm
# 安装 MySQL 5.7 服务器端 --nogpgcheck 跳过 GPG 校验(避免校验失败装不上)
yum install -y mysql-community-server --nogpgcheck
Ubuntu 20.04 版本
复制代码
# 更新软件源后,直接安装 MySQL 5.7 服务器端
apt update && apt install -y mysql-server-5.7

7.2 启动 MySQL 并设置开机自启(通用)

复制代码
# ========== CentOS 执行 ==========
# 启动 MySQL(服务名是 mysqld)
systemctl start mysqld
# 设置开机自启
systemctl enable mysqld

# ========== Ubuntu 执行 ==========
# 启动 MySQL(服务名是 mysql,注意和 CentOS 区别)
# systemctl start mysql
# 设置开机自启
# systemctl enable mysql

# 验证状态:输出 active (running) 即为启动成功
systemctl status mysqld  # CentOS
# systemctl status mysql   # Ubuntu

7.3 MySQL 初始化配置(允许远程访问,测试必备)

CentOS 7 专属(Ubuntu 无需临时密码)
复制代码
# 查看 MySQL 临时密码(CentOS 安装后会自动生成临时密码,存放在日志里)
# 临时密码是一串随机字符,后续登录需要用
grep 'temporary password' /var/log/mysqld.log

# 登录 MySQL(执行后输入上面查到的临时密码)
mysql -uroot -p

# ========== 以下是 MySQL 命令行内执行 ==========
# 修改 root 密码为 123456(测试环境简化密码,生产环境要复杂)
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 切换到 mysql 系统库(存放用户权限的库)
use mysql;
# 修改 root 用户的访问权限:% 表示允许任何 IP 远程连接(测试必备,本地工具能连)
update user set host='%' where user='root';
# 刷新权限配置(修改权限后必须执行,否则不生效)
flush privileges;
# 退出 MySQL 命令行
exit;
Ubuntu 20.04 专属
复制代码
# Ubuntu 安装后默认无密码,直接登录
mysql -uroot

# ========== 以下是 MySQL 命令行内执行 ==========
# 设置 root 密码为 123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
# 切换到 mysql 库
use mysql;
# 允许远程访问
update user set host='%' where user='root';
# 刷新权限
flush privileges;
exit;

7.4 验证 MySQL 可用性(通用)

复制代码
# 用新密码登录 MySQL,无报错即为成功
mysql -uroot -p123456

八、Redis 部署(测试环境无密码 + 允许远程)

8.1 安装 Redis

CentOS 7 版本
复制代码
yum install -y redis
Ubuntu 20.04 版本
复制代码
apt install -y redis-server

8.2 修改 Redis 配置(允许远程访问)

复制代码
# 修改 Redis 配置文件:把 bind 127.0.0.1 改为 bind 0.0.0.0
# 127.0.0.1 表示仅本地访问,0.0.0.0 表示允许所有 IP 访问
sed -i 's/bind 127.0.0.1 ::1/bind 0.0.0.0/' /etc/redis/redis.conf

# 修改保护模式:protected-mode yes 改为 no
# 保护模式开启时,即使 bind 0.0.0.0 也无法远程访问,测试环境必须关
sed -i 's/protected-mode yes/protected-mode no/' /etc/redis/redis.conf

8.3 启动 Redis 并验证(通用)

复制代码
# 启动 Redis 服务
systemctl start redis
# 设置开机自启
systemctl enable redis
# 验证状态:active (running) 即为成功
systemctl status redis

# 验证 Redis 可用性:进入 Redis 命令行
redis-cli
# 执行 ping,返回 PONG 表示 Redis 正常运行
ping
# 退出 Redis 命令行
exit

九、Nginx 部署(前端 / 接口代理测试)

9.1 安装 Nginx

CentOS 7 版本
复制代码
yum install -y nginx
Ubuntu 20.04 版本
复制代码
apt install -y nginx

9.2 启动 Nginx 并验证(通用)

复制代码
# 启动 Nginx
systemctl start nginx
# 设置开机自启
systemctl enable nginx
# 验证状态:active (running) 即为成功
systemctl status nginx

# 验证访问:curl 本地 80 端口,返回 Nginx 欢迎页 HTML 即为成功
curl 127.0.0.1
# 也可以浏览器访问 http://服务器IP,能看到 Nginx 页面就OK

十、MinIO 部署(文件存储测试,上传 / 下载接口)

10.1 安装 MinIO

CentOS 7 版本
复制代码
# 下载 MinIO 二进制文件(Linux 通用)
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# 赋予执行权限
chmod +x minio
# 移动到系统命令目录,全局可用
mv minio /usr/local/bin/
Ubuntu 20.04 版本
复制代码
# 安装依赖
apt install -y wget
# 下载同版本 MinIO
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# 赋予执行权限
chmod +x minio
# 移动到系统命令目录
mv minio /usr/local/bin/

10.2 启动 MinIO(通用)

复制代码
# 创建数据存储目录
mkdir -p /data/minio
# 后台启动 MinIO(默认账号:minioadmin/密码:minioadmin,测试专用)
# --console-address ":9001" 指定控制台端口,避免和数据端口冲突
nohup minio server /data/minio --console-address ":9001" > /data/minio.log 2>&1 &

10.3 验证 MinIO(通用)

复制代码
# 控制台访问:http://服务器IP:9001(输入账号密码登录即为成功)
# 数据接口访问:http://服务器IP:9000

十一、RabbitMQ 部署(消息队列测试,异步接口)

11.1 安装依赖

CentOS 7 版本
复制代码
# 安装 socat 依赖(RabbitMQ 必需)
yum install -y socat
# 安装 Erlang(RabbitMQ 运行依赖)
yum install -y https://github.com/rabbitmq/erlang-rpm/releases/download/v25.3.2/erlang-25.3.2-1.el7.x86_64.rpm
Ubuntu 20.04 版本
复制代码
# 安装依赖
apt install -y socat
# 安装 Erlang(Ubuntu 源直接安装)
apt install -y erlang

11.2 安装 RabbitMQ

CentOS 7 版本
复制代码
# 安装 RabbitMQ 3.12.1 稳定版
yum install -y https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.12.1/rabbitmq-server-3.12.1-1.el7.noarch.rpm
Ubuntu 20.04 版本
复制代码
# 安装 RabbitMQ
apt install -y rabbitmq-server

11.3 启动 RabbitMQ 并配置(通用)

复制代码
# 启动服务
systemctl start rabbitmq-server
# 设置开机自启
systemctl enable rabbitmq-server
# 开启管理后台(可视化界面,测试必备)
rabbitmq-plugins enable rabbitmq_management
# 验证状态:active (running) 即为成功
systemctl status rabbitmq-server

11.4 验证 RabbitMQ(通用)

复制代码
# 访问控制台:http://服务器IP:15672
# 默认账号/密码:guest/guest(仅本地访问,远程需创建新用户,测试环境可忽略)

十二、Docker + Docker Compose(测试环境最推荐,一键起所有服务)

12.1 安装 Docker

CentOS 7 版本
复制代码
# 安装 Docker 服务
yum install -y docker
# 启动 Docker
systemctl start docker
# 开机自启
systemctl enable docker
# 验证版本:输出 Docker version 20.x.x 即为成功
docker --version
Ubuntu 20.04 版本
复制代码
# 安装 Docker.io(Ubuntu 官方源的 Docker 包)
apt install -y docker.io
# 启动 Docker
systemctl start docker
# 开机自启
systemctl enable docker
# 验证版本
docker --version

12.2 安装 Docker Compose(通用,批量管理容器)

bash 复制代码
# 下载 Docker Compose 二进制文件(1.29.2 是稳定版)
#从 Docker Compose 的 GitHub Releases 页面下载
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#如果 GitHub 访问慢,尝试国内镜像(如阿里云)
#curl -L "https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 给二进制文件添加执行权限(否则无法运行)
chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

12.3 一键启动多组件(Docker Compose 方式)

复制代码
# 创建测试环境目录,避免文件乱放
mkdir -p /opt/test-env
cd /opt/test-env

# 创建 docker-compose.yml 文件(批量管理容器的核心配置文件)
vim docker-compose.yml
粘贴以下带注释的配置内容(直接复制)

yaml

复制代码
# Docker Compose 版本(和安装的版本匹配,1.29.2 兼容 3 版本)
version: '3'
# 定义要启动的服务集合
services:
  # MySQL 服务名(自定义,比如 mysql)
  mysql:
    # 使用的镜像:MySQL 5.7
    image: mysql:5.7
    # 端口映射:宿主机 3306 端口 -> 容器内 3306 端口(测试时访问宿主机3306即可)
    ports:
      - "3306:3306"
    # 环境变量:设置 root 密码为 123456(测试环境简化)
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    # 重启策略:总是重启(容器挂了自动恢复,测试环境更稳定)
    restart: always

  # Redis 服务名
  redis:
    # 使用的镜像:Redis 6(稳定版)
    image: redis:6
    # 端口映射:宿主机 6379 -> 容器 6379
    ports:
      - "6379:6379"
    # 总是重启
    restart: always

  # Nginx 服务名
  nginx:
    # 使用的镜像:Nginx 1.20(稳定版)
    image: nginx:1.20
    # 端口映射:宿主机 80 -> 容器 80
    ports:
      - "80:80"
    # 总是重启
    restart: always

  # MinIO 服务名(补充)
  minio:
    image: minio/minio
    ports:
      - "9000:9000"
      - "9001:9001"
    volumes:
      - /data/minio:/data
    command: server /data --console-address ":9001"
    environment:
      MINIO_ROOT_USER: minioadmin
      MINIO_ROOT_PASSWORD: minioadmin
    restart: always
启动 / 停止容器(通用)
复制代码
# 后台启动所有服务(-d 表示 detached,后台运行,不占用当前终端)
docker-compose up -d

# 查看运行中的容器:能看到所有配置的服务 STATUS 为 Up 即为成功
docker ps

# 停止容器(如需停止,执行以下命令)
# docker-compose down

十三、Allure 报告部署(测试报告生成神器)

13.1 安装 Allure

CentOS 7 版本
复制代码
# 安装解压工具
yum install -y unzip
# 下载 Allure 2.24.0 稳定版
wget https://github.com/allure-framework/allure2/releases/download/2.24.0/allure-2.24.0.tgz
# 解压到系统路径
tar -zxvf allure-2.24.0.tgz -C /usr/local/
# 创建软链接(全局可用 allure 命令)
ln -s /usr/local/allure-2.24.0/bin/allure /usr/bin/allure
Ubuntu 20.04 版本
复制代码
# 安装解压工具
apt install -y unzip wget
# 下载同版本 Allure
wget https://github.com/allure-framework/allure2/releases/download/2.24.0/allure-2.24.0.tgz
# 解压到系统路径
tar -zxvf allure-2.24.0.tgz -C /usr/local/
# 创建软链接(全局可用)
ln -s /usr/local/allure-2.24.0/bin/allure /usr/bin/allure

13.2 验证 Allure(通用)

复制代码
# 输出版本号 2.24.0 即为成功
allure --version
# 测试生成报告(无报错即为成功)
allure --help

十四、Java 应用(JAR 包)部署(测试最常用)

复制代码
# 创建应用目录,规范管理
mkdir -p /opt/app
# 进入应用目录(假设你的 test.jar 已上传到这里)
cd /opt/app

# 后台启动 JAR 包(核心命令,带详细注释)
# nohup:不挂断运行,退出终端后应用仍在运行
# java -jar:运行 JAR 包的核心命令
# test.jar:你的应用包名(替换为实际名称)
# > app.log:把标准输出重定向到 app.log(记录应用日志)
# 2>&1:把标准错误输出重定向到标准输出(错误日志也写入 app.log)
# &:后台运行
nohup java -jar test.jar > app.log 2>&1 &

# 查看 Java 进程:能看到 test.jar 的进程即为启动成功
ps -ef | grep java

# 查看应用占用的端口(替换为你的应用端口,比如 8080)
netstat -lntp | grep 8080

# 实时查看应用日志(测试时排查问题用,按 Ctrl+C 退出)
tail -f app.log

# 停止应用(替换为查到的 Java 进程号,比如 12345)
kill -9 12345

十五、测试环境最终验证清单(逐条验证,确保可用)

复制代码
# 基础环境验证
java -version          # JDK 8
python3 -V             # Python3
mvn -v                 # Maven
node -v                # Node.js
git --version          # Git
allure --version       # Allure

# 中间件验证
mysql -uroot -p123456  # MySQL(输入密码无报错)
redis-cli ping         # Redis(返回 PONG)
curl 127.0.0.1         # Nginx(返回 HTML)
curl http://服务器IP:9001 # MinIO(返回登录页)
curl http://服务器IP:15672 # RabbitMQ(返回登录页)

# 容器验证
docker ps              # Docker 容器(Up 状态)
docker-compose -v      # Docker Compose

# 应用验证
ps -ef | grep java     # Java 应用进程
curl http://服务器IP:8080/health # 应用健康检查
tail -f /opt/app/app.log # 应用日志

总结

  1. 环境全覆盖:包含测试岗所需的所有核心环境(Java/Python/Node 开发环境、MySQL/Redis 等中间件、Docker 容器化、Allure 测试工具),双系统版本适配。
  2. 配置核心点:所有中间件均开启远程访问(测试工具可连接)、关闭安全限制(测试环境简化)、设置开机自启(环境稳定)。
  3. 易用性优先:命令逐行带注释,验证步骤明确,Docker Compose 可一键启动多组件,避免手动配置的繁琐和错误。
相关推荐
kiku18182 小时前
linux系统安全及应用
linux·运维·系统安全
进击切图仔2 小时前
linux 上编译 c++ 项目结构
linux·运维·c++
艾莉丝努力练剑2 小时前
C语言中&的多重用途解析
运维·服务器·c语言·c++·人工智能
尤老师FPGA2 小时前
Petalinux的工程创建以及生成启动文件
运维·服务器
成都极云科技2 小时前
「服务器托管平台」-打造高效稳定的云服务基石
运维·服务器·github
dashizhi20152 小时前
服务器共享文件安全管理之如何禁止打印共享文件、禁止复制共享文件
运维·服务器·安全
牛十二2 小时前
daily_stock_analysisA股智能分析系统源码调试使用指南
linux·运维·服务器
阿成学长_Cain2 小时前
Linux alias 命令详解:从入门到高级用法
linux·前端·chrome
s6516654962 小时前
linux-特殊符号
linux