部署一个Java服务需要考虑多个方面的配置,具体取决于服务的类型(如Spring Boot、传统Web应用、微服务等)、部署环境(本地、云服务器、容器化等)以及性能和安全需求。以下是常见配置清单:
1. 基础环境配置
- JDK版本
- 根据服务要求安装对应版本(如OpenJDK 8/11/17/21)。
- 验证:
java -version。
- 操作系统
- Linux(推荐Ubuntu/CentOS/RHEL)或Windows Server。
- 确保系统时间同步(NTP服务)。
2. 服务配置
- 应用配置文件
application.properties或application.yml(Spring Boot)。- 关键参数:
server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=user spring.datasource.password=secret logging.level.root=INFO
- JVM参数优化(启动脚本中设置)
java -Xms512m -Xmx2g -XX:+UseG1GC -jar myapp.jar- 根据内存调整堆大小(
-Xms/-Xmx)。 - 选择垃圾回收器(如G1GC、ZGC)。
- 根据内存调整堆大小(
3. 依赖服务配置
- 数据库
- 安装MySQL/PostgreSQL/MongoDB等。
- 创建用户、数据库、表结构(通过SQL脚本或Flyway/Liquibase)。
- 中间件
- Redis(缓存)、RabbitMQ/Kafka(消息队列)、Elasticsearch(搜索)等。
- 配置连接池(如HikariCP)和超时参数。
- 外部API密钥
- 通过环境变量或配置中心(如Spring Cloud Config)管理敏感信息。
4. 安全配置
- 防火墙规则
- 开放必要端口(如8080、9090)。
- 限制SSH访问(仅允许特定IP)。
- HTTPS
- 配置SSL证书(Let’s Encrypt或商业证书)。
- 反向(Nginx/Apache)终止HTTPS。
- 认证与授权
- Spring Security/OAuth2/JWT配置。
- 最小权限原则(如数据库用户仅读写必要表)。
5. 运维与监控
- 日志管理
- 日志文件路径(如
/var/log/myapp/)。 - 使用Logback/Log4j2配置滚动策略(按大小/时间分割)。
- 日志文件路径(如
- 健康检查
- Spring Boot Actuator端点:
/actuator/health。
- Spring Boot Actuator端点:
- 监控工具
- Prometheus + Grafana(指标监控)。
- ELK Stack(日志分析)。
-
进程管理
- 使用
systemd(Linux)或supervisor守护进程:[Unit] Description=My Java Service After=network.target
[Service]
User=myuser
ExecStart=/usr/bin/java -jar /opt/myapp.jar
Restart=always[Install]
WantedBy=multi-user.target - 使用
6. 高可用与扩展
- 负载均衡
- Nginx反向多实例(如
upstream配置)。
- Nginx反向多实例(如
- 容器化(可选)
- Dockerfile示例:
FROM openjdk:17-alpine COPY target/myapp.jar app.jar EXPOSE 8080 CMD ["java", "-jar", "/app.jar"] - Kubernetes部署(YAML配置Pod/Service/Ingress)。
- Dockerfile示例:
7. 备份与恢复
- 数据备份
- 数据库定时备份(
mysqldump+ cron)。 - 配置文件版本控制(Git)。
- 数据库定时备份(
- 灾难恢复计划
- 定期演练备份恢复流程。
快速检查清单
| 类别 | 必做项 |
|---|---|
| 环境 | JDK、OS、时区 |
| 服务 | 配置文件、JVM参数 |
| 依赖 | 数据库/中间件连接 |
| 安全 | 防火墙、HTTPS、密钥管理 |
| 运维 | 日志、监控、进程守护 |
| 扩展 | 负载均衡、容器化(可选) |
⚠️ 注意:
- 敏感信息(密码、密钥)不要硬编码,使用环境变量或配置中心。
- 生产环境禁用调试端点(如Spring Boot的
/actuator/env)。- 压力测试后再上线(工具:JMeter/Gatling)。
根据实际需求调整配置,例如微服务还需注册中心(Nacos/Consul)和配置中心。
ECLOUD博客