文章目录
-
- 一、环境设计原则
- 二、推荐架构图
- 三、分步实现方案
-
- [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. 资源链接)
一、环境设计原则
- 模块化设计:分层解耦(开发环境/测试环境/生产环境)
- 容器化部署:基于 Docker 构建可移植的镜像
- 自动化运维:集成 CI/CD 工具(如 Jenkins、GitLab CI)
- 安全性:最小化权限、密钥管理、防火墙规则
- 可观测性:日志集中化、监控告警、性能分析
- 可维护性:版本控制、配置管理、文档化
二、推荐架构图
+-------------------+ +-------------------+ +-------------------+
| 开发环境 | | 测试环境 | | 生产环境 |
| - 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)
-
安装步骤:
bashsudo rpm -ivh ideaIC-*.rpm
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)
四、最佳实践总结
- 版本控制 :所有配置文件(如
docker-compose.yml
)必须纳入 Git 管理 - CI/CD 流水线:确保构建、测试、部署全流程自动化
- 容器化原则:每个服务独立容器,避免紧耦合
- 日志集中化:所有日志输出到 ELK,便于分析
- 安全策略 :定期扫描漏洞(如使用
Trivy
),最小化权限 - 文档化 :维护
README.md
和CONTRIBUTING.md
说明
五、常见问题处理
问题 | 解决方案 |
---|---|
No such file or directory |
检查路径和权限,使用 strace 跟踪调用链 |
Docker 容器启动失败 |
查看日志:docker logs <container_id> |
JVM 内存溢出 |
调整 JVM 参数:-Xms512m -Xmx2g |
Maven 依赖下载失败 |
配置 settings.xml 使用国内镜像(如阿里云) |
Jenkins Pipeline 报错 |
检查 Jenkinsfile 语法,启用调试模式 |
六、后续升级建议
- 微服务化迁移:逐步拆分单体应用为 Spring Cloud 微服务
- 云原生支持:迁移至 Kubernetes 集群(Minikube/K3s)
- AI 集成:引入 APM 工具(如 New Relic、SkyWalking)进行智能分析
- 灰度发布:使用 Istio 实现流量控制
- 性能优化:使用 JProfiler 分析 Java 应用性能瓶颈
七、附录
1. 常用命令
bash
# 查看 Docker 容器状态
docker ps -a
# 查看日志
journalctl -u docker.service
# 查看 Java 线程
jstack <pid> > thread_dump.txt
# 查看内存使用
jstat -gc <pid>
2. 资源链接
通过以上步骤,您可以构建一个高效、安全、可扩展的 Java 开发测试环境,满足从开发到生产的全生命周期需求。