CentOS 系统 Java 开发测试环境搭建手册

文章目录

    • 一、环境设计原则
    • 二、推荐架构图
    • 三、分步实现方案
      • [1. 环境准备](#1. 环境准备)
        • [1.1 系统要求](#1.1 系统要求)
        • [1.2 安装基础工具](#1.2 安装基础工具)
      • [2. Java 环境配置](#2. Java 环境配置)
        • [2.1 安装 OpenJDK](#2.1 安装 OpenJDK)
        • [2.2 验证安装](#2.2 验证安装)
        • [2.3 设置环境变量](#2.3 设置环境变量)
      • [3. 开发工具安装](#3. 开发工具安装)
        • [3.1 IDE(IntelliJ IDEA)](#3.1 IDE(IntelliJ IDEA))
        • [3.2 构建工具(Maven)](#3.2 构建工具(Maven))
        • [3.3 版本控制(Git)](#3.3 版本控制(Git))
      • [4. 容器化部署](#4. 容器化部署)
        • [4.1 安装 Docker](#4.1 安装 Docker)
        • [4.2 安装 Docker Compose](#4.2 安装 Docker Compose)
        • [4.3 示例 Docker Compose 配置](#4.3 示例 Docker Compose 配置)
      • [5. 自动化部署](#5. 自动化部署)
        • [5.1 Jenkins 部署](#5.1 Jenkins 部署)
        • [5.2 Jenkins Pipeline 示例](#5.2 Jenkins Pipeline 示例)
      • [6. 日志管理](#6. 日志管理)
        • [6.1 ELK Stack 部署](#6.1 ELK Stack 部署)
        • [6.2 配置 Filebeat 收集日志](#6.2 配置 Filebeat 收集日志)
      • [7. 监控与告警](#7. 监控与告警)
        • [7.1 Prometheus + Grafana](#7.1 Prometheus + Grafana)
        • [7.2 配置监控告警](#7.2 配置监控告警)
      • [8. 安全加固](#8. 安全加固)
        • [8.1 防火墙配置](#8.1 防火墙配置)
        • [8.2 SSH 安全](#8.2 SSH 安全)
        • [8.3 密钥管理](#8.3 密钥管理)
    • 四、最佳实践总结
    • 五、常见问题处理
    • 六、后续升级建议
    • 七、附录
      • [1. 常用命令](#1. 常用命令)
      • [2. 资源链接](#2. 资源链接)

一、环境设计原则

  1. 模块化设计:分层解耦(开发环境/测试环境/生产环境)
  2. 容器化部署:基于 Docker 构建可移植的镜像
  3. 自动化运维:集成 CI/CD 工具(如 Jenkins、GitLab CI)
  4. 安全性:最小化权限、密钥管理、防火墙规则
  5. 可观测性:日志集中化、监控告警、性能分析
  6. 可维护性:版本控制、配置管理、文档化

二、推荐架构图

复制代码
+-------------------+     +-------------------+     +-------------------+
|   开发环境        |     |   测试环境        |     |   生产环境        |
| - IntelliJ IDEA   |<----| - JMeter          |<----| - Nginx           |
| - Maven           |     | - SonarQube       |     | - Tomcat          |
| - Git             |     | - Docker Compose  |     | - MySQL           |
+-------------------+     +-------------------+     +-------------------+
          |                         |                         |
          v                         v                         v
+-------------------+     +-------------------+     +-------------------+
| 日志与监控         |     | 自动化部署         |     | 安全加固         |
| - ELK Stack       |     | - Jenkins         |     | - Fail2Ban       |
| - Prometheus      |     | - GitLab CI/CD    |     | - SSH 密钥管理   |
+-------------------+     +-------------------+     +-------------------+

三、分步实现方案

1. 环境准备

1.1 系统要求
  • CentOS 9 Stream 或更高版本
  • 8GB RAM(开发环境建议) / 16GB+(测试环境建议)
  • Docker 20.10+ / Docker Compose 2.0+
1.2 安装基础工具
bash 复制代码
sudo dnf install -y epel-release
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y git curl wget vim net-tools

2. Java 环境配置

2.1 安装 OpenJDK
bash 复制代码
sudo dnf install -y java-17-openjdk-devel
2.2 验证安装
bash 复制代码
java -version
javac -version
2.3 设置环境变量
bash 复制代码
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk' >> ~/.bashrc
source ~/.bashrc

3. 开发工具安装

3.1 IDE(IntelliJ IDEA)
3.2 构建工具(Maven)
bash 复制代码
sudo dnf install -y maven
mvn -v
3.3 版本控制(Git)
bash 复制代码
git config --global user.name "YourName"
git config --global user.email "your@email.com"

4. 容器化部署

4.1 安装 Docker
bash 复制代码
sudo dnf install -y docker
sudo systemctl enable --now docker
4.2 安装 Docker Compose
bash 复制代码
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
4.3 示例 Docker Compose 配置
yaml 复制代码
version: '3.8'
services:
  java-app:
    build: ./app
    ports:
      - "8080:8080"
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/mydb
    depends_on:
      - db
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydb
    ports:
      - "3306:3306"

5. 自动化部署

5.1 Jenkins 部署
bash 复制代码
sudo dnf install -y jenkins
sudo systemctl enable --now jenkins
5.2 Jenkins Pipeline 示例
groovy 复制代码
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Deploy') {
            steps {
                sh 'docker-compose up -d'
            }
        }
    }
}

6. 日志管理

6.1 ELK Stack 部署
bash 复制代码
# 安装 Elasticsearch
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo dnf install -y elasticsearch

# 安装 Logstash
sudo dnf install -y logstash

# 安装 Kibana
sudo dnf install -y kibana
6.2 配置 Filebeat 收集日志
bash 复制代码
sudo dnf install -y filebeat
sudo systemctl enable --now filebeat

7. 监控与告警

7.1 Prometheus + Grafana
bash 复制代码
# 安装 Prometheus
sudo dnf install -y prometheus prometheus-node-exporter

# 安装 Grafana
sudo dnf install -y grafana
sudo systemctl enable --now grafana-server
7.2 配置监控告警
  • 使用 Alertmanager 配置邮件/Slack 告警
  • 在 Grafana 中创建 Java 应用的监控面板

8. 安全加固

8.1 防火墙配置
bash 复制代码
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload
8.2 SSH 安全
  • 禁用密码登录,仅允许密钥认证
  • 修改默认 SSH 端口(如 2222)
8.3 密钥管理
  • 使用 ssh-agent 管理私钥
  • 部署环境变量加密(如使用 HashiCorp Vault)

四、最佳实践总结

  1. 版本控制 :所有配置文件(如 docker-compose.yml)必须纳入 Git 管理
  2. CI/CD 流水线:确保构建、测试、部署全流程自动化
  3. 容器化原则:每个服务独立容器,避免紧耦合
  4. 日志集中化:所有日志输出到 ELK,便于分析
  5. 安全策略 :定期扫描漏洞(如使用 Trivy),最小化权限
  6. 文档化 :维护 README.mdCONTRIBUTING.md 说明

五、常见问题处理

问题 解决方案
No such file or directory 检查路径和权限,使用 strace 跟踪调用链
Docker 容器启动失败 查看日志:docker logs <container_id>
JVM 内存溢出 调整 JVM 参数:-Xms512m -Xmx2g
Maven 依赖下载失败 配置 settings.xml 使用国内镜像(如阿里云)
Jenkins Pipeline 报错 检查 Jenkinsfile 语法,启用调试模式

六、后续升级建议

  1. 微服务化迁移:逐步拆分单体应用为 Spring Cloud 微服务
  2. 云原生支持:迁移至 Kubernetes 集群(Minikube/K3s)
  3. AI 集成:引入 APM 工具(如 New Relic、SkyWalking)进行智能分析
  4. 灰度发布:使用 Istio 实现流量控制
  5. 性能优化:使用 JProfiler 分析 Java 应用性能瓶颈

七、附录

1. 常用命令

bash 复制代码
# 查看 Docker 容器状态
docker ps -a

# 查看日志
journalctl -u docker.service

# 查看 Java 线程
jstack <pid> > thread_dump.txt

# 查看内存使用
jstat -gc <pid>

2. 资源链接


通过以上步骤,您可以构建一个高效、安全、可扩展的 Java 开发测试环境,满足从开发到生产的全生命周期需求。

相关推荐
考虑考虑5 小时前
docker compose V2版本新属性
运维·后端·自动化运维
mldong6 小时前
一个 App,十三套后端:手机审批端 uni-jeeflow-app 开源了
java·架构
AlanBruce6 小时前
摩尔信使MThings功能综述与应用使用指南
linux·自动化·plc·mthings·摩尔信使
tqs_123457 小时前
MySQL RR隔离级别死锁|Gap间隙锁、临键锁,订单并发范围查询死锁根因方案
java
小小的木头人7 小时前
Ubuntu Samba修改端口绕过445封禁挂载
运维·ubuntu
逆境不可逃7 小时前
Pi Agent 学习笔记:多个工具怎样并行执行
java
Flynt8 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet8 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
星云API技术支持8 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
wdfk_prog8 小时前
ROS教程:01 搭建 ROS1 Noetic Docker 开发环境
运维·缓存·docker·容器·ros