1. 项目概述
在软件开发过程中,测试环境的搭建是确保产品质量的重要环节。这份手册将详细指导如何在CentOS 7和Ubuntu 20.04两个主流Linux发行版上部署完整的测试环境。作为拥有10年Linux运维经验的工程师,我将分享在实际工作中验证过的最佳实践方案。
测试环境部署不仅仅是安装几个软件那么简单,它需要考虑:
- 系统基础配置优化
- 必要的开发工具链
- 常用服务的安装与配置
- 环境一致性保障
- 后续维护的便捷性
提示:建议在虚拟机或容器中部署测试环境,便于快速重置和复用。VMware Workstation和VirtualBox都是不错的选择。
2. 环境准备
2.1 系统安装
CentOS 7最小化安装
- 下载ISO镜像:
bash复制
wget http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso - 安装时注意:
- 选择最小化安装(Minimal Install)
- 配置网络连接
- 设置root密码和至少一个普通用户
- 分区建议:/boot 500MB,swap=内存大小,/ 剩余所有空间
Ubuntu 20.04 LTS安装
- 获取官方镜像:
bash复制
wget https://releases.ubuntu.com/20.04/ubuntu-20.04.3-live-server-amd64.iso - 安装要点:
- 选择English语言环境
- 配置静态IP(测试环境推荐)
- 只安装OpenSSH server(其他服务后续按需添加)
- 使用LVM分区方案
2.2 基础配置
通用配置(两个系统都需要)
- 更新系统:
bash复制# CentOS yum update -y # Ubuntu apt update && apt upgrade -y - 安装常用工具:
bash复制# CentOS yum install -y vim wget curl net-tools lsof telnet # Ubuntu apt install -y vim wget curl net-tools lsof telnet
网络配置
-
CentOS 7网络配置:
bash复制nmcli con mod eth0 ipv4.addresses 192.168.1.100/24 nmcli con mod eth0 ipv4.gateway 192.168.1.1 nmcli con mod eth0 ipv4.dns "8.8.8.8 114.114.114.114" nmcli con mod eth0 ipv4.method manual nmcli con up eth0 -
Ubuntu 20.04网络配置:
bash复制
netplan apply
3. 开发环境部署
3.1 Java环境
OpenJDK安装
bash复制# CentOS
yum install -y java-11-openjdk-devel
# Ubuntu
apt install -y openjdk-11-jdk
验证安装:
bash复制java -version
javac -version
3.2 Python环境
CentOS 7:
bash复制yum install -y python3 python3-devel
Ubuntu 20.04:
bash复制apt install -y python3 python3-pip python3-venv
创建虚拟环境:
bash复制python3 -m venv /opt/venv/testenv
source /opt/venv/testenv/bin/activate
4. 数据库服务
4.1 MySQL安装
CentOS 7:
bash复制wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
rpm -ivh mysql80-community-release-el7-5.noarch.rpm
yum install -y mysql-community-server
systemctl start mysqld
Ubuntu 20.04:
bash复制apt install -y mysql-server
systemctl start mysql
安全配置:
bash复制mysql_secure_installation
4.2 Redis安装
通用安装方法:
bash复制# CentOS
yum install -y redis
# Ubuntu
apt install -y redis-server
systemctl enable redis
systemctl start redis
5. Web服务
5.1 Nginx安装
CentOS 7:
bash复制yum install -y epel-release
yum install -y nginx
Ubuntu 20.04:
bash复制apt install -y nginx
配置示例:
nginx复制server {
listen 80;
server_name testenv.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
}
}
5.2 Tomcat安装
通用安装步骤:
bash复制wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.56/bin/apache-tomcat-9.0.56.tar.gz
tar xzf apache-tomcat-9.0.56.tar.gz -C /opt
/opt/apache-tomcat-9.0.56/bin/startup.sh
6. 监控与维护
6.1 系统监控
安装基础监控工具:
bash复制# CentOS
yum install -y sysstat
# Ubuntu
apt install -y sysstat
配置sar数据收集:
bash复制# 编辑/etc/cron.d/sysstat
# 修改为:
*/1 * * * * root /usr/lib64/sa/sa1 1 1
6.2 日志管理
配置logrotate:
bash复制# 示例Nginx日志轮转配置
cat > /etc/logrotate.d/nginx <<EOF
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}
EOF
7. 环境验证
7.1 服务状态检查
bash复制systemctl list-units --type=service --state=running
7.2 端口监听检查
bash复制ss -tulnp
7.3 测试接口
bash复制curl -I http://localhost
8. 常见问题解决
8.1 CentOS 7网络问题
症状:网络服务启动失败
解决方案:
bash复制systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl enable network
systemctl start network
8.2 Ubuntu 20.04 apt锁问题
症状:无法获取apt锁
解决:
bash复制sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*
9. 环境备份与恢复
9.1 系统快照
bash复制# VMware
vmware-cmd /path/to/vm.vmx createsnapshot "TestEnv Baseline" "Initial setup" 1
# VirtualBox
VBoxManage snapshot "TestVM" take "Baseline" --description "Initial setup"
9.2 配置备份
bash复制tar czf /backup/testenv_config_$(date +%F).tar.gz /etc
10. 进阶配置
10.1 Docker环境
bash复制# CentOS
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
# Ubuntu
apt install -y docker.io
10.2 Kubernetes单节点
bash复制curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
install minikube-linux-amd64 /usr/local/bin/minikube
11. 性能优化
11.1 内核参数调整
bash复制# 编辑/etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65000
net.core.somaxconn = 32768
11.2 文件描述符限制
bash复制# 编辑/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
12. 环境销毁
12.1 安全擦除
bash复制# 覆盖空设备
dd if=/dev/zero of=/dev/sda bs=1M
12.2 虚拟机删除
bash复制# VMware
vmrun deleteVM /path/to/vm.vmx
# VirtualBox
VBoxManage unregistervm "TestVM" --delete
13. 维护建议
-
定期更新系统补丁:
bash复制# CentOS yum update -y --security # Ubuntu apt update && apt upgrade --only-upgrade-security -y -
使用配置管理工具(如Ansible)维护环境一致性
-
为每个测试项目创建独立的用户和权限
-
实施自动化测试流水线集成
14. 双系统差异处理
14.1 服务管理对比
| 操作 | CentOS 7 | Ubuntu 20.04 |
|---|---|---|
| 查看服务状态 | systemctl status nginx |
systemctl status nginx |
| 启动服务 | systemctl start nginx |
systemctl start nginx |
| 开机自启 | systemctl enable nginx |
systemctl enable nginx |
14.2 包管理对比
| 操作 | CentOS 7 (yum) | Ubuntu 20.04 (apt) |
|---|---|---|
| 更新索引 | yum makecache |
apt update |
| 安装软件 | yum install nginx |
apt install nginx |
| 搜索软件 | yum search nginx |
apt search nginx |
15. 实际案例分享
最近为一个电商项目搭建测试环境时遇到的典型问题:
-
MySQL性能问题:测试环境出现查询缓慢,通过调整InnoDB缓冲池解决:
bash复制# /etc/my.cnf [mysqld] innodb_buffer_pool_size = 1G -
Python依赖冲突:使用虚拟环境隔离后解决
-
端口冲突:通过
ss -tulnp发现冲突端口,调整服务配置
经验:测试环境应该尽量模拟生产环境,但资源分配可以适当降低。关键是要保持配置的一致性。
