部署 Java 应用到 Linux 服务器时,服务器的配置要求会根据应用的规模、并发量、业务复杂度等因素有所不同。以下是一个通用的配置建议,分为最低要求和推荐配置,并涵盖操作系统、Java 环境、网络、安全等方面。
一、硬件配置要求
| 项目 | 最低配置 | 推荐配置(中等规模应用) | 高负载/生产环境 |
|---|---|---|---|
| CPU | 2 核 | 4 核或以上 | 8 核及以上 |
| 内存 | 2 GB | 8 GB | 16 GB 或更高 |
| 硬盘 | 20 GB SSD | 50 GB SSD 或以上 | 100 GB+,建议使用 SSD |
| 带宽 | 1 Mbps | 10 Mbps 或更高 | 100 Mbps,视访问量而定 |
💡 说明:
- 内存是关键,Java 应用(尤其是 Spring Boot、微服务)通常需要 1~4 GB JVM 堆内存。
- SSD 可显著提升应用启动和 I/O 性能。
- 高并发或大数据处理场景建议使用更高配置。
二、操作系统要求
-
推荐系统:
- CentOS 7/8/Stream
- Ubuntu 20.04 LTS / 22.04 LTS
- Debian 11/12
- AlmaLinux / Rocky Linux(替代 CentOS)
-
系统位数:64 位(x86_64)
-
最小安装:建议使用最小化安装,减少安全风险。
三、Java 环境要求
-
Java 版本:
- 根据应用需求选择:
- Java 8(广泛兼容,长期支持)
- Java 11(LTS,推荐新项目)
- Java 17(最新 LTS,性能更好)
- Java 21(最新 LTS,适合新架构)
-
JDK 安装方式:
- OpenJDK(推荐,开源免费)
- Oracle JDK(商业用途需授权)
-
安装方式建议:
# Ubuntu/Debian sudo apt update sudo apt install openjdk-17-jdk # CentOS/Rocky sudo yum install java-17-openjdk-devel -
环境变量设置:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk export PATH=$JAVA_HOME/bin:$PATH
四、其他软件依赖
| 软件 | 说明 |
|---|---|
| Tomcat / Jetty / Undertow | 如果是 Web 应用,可能需要嵌入式或独立容器 |
| Nginx / Apache | 用作反向、负载均衡、静态资源服务 |
| MySQL / PostgreSQL / Redis / MongoDB | 数据库或缓存服务(可部署在同机或远程) |
| Docker / Kubernetes | 容器化部署时需要 |
| Systemd / Supervisor | 进程守护,确保 Java 应用后台运行 |
五、网络与安全要求
- 开放端口:
- 应用端口(如 8080、8081)
- SSH(22)
- HTTP(80)、HTTPS(443)如果使用 Nginx
-
防火墙配置:
# 使用 firewalld(CentOS) sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload # 或使用 ufw(Ubuntu) sudo ufw allow 8080 - SSH 安全:
- 禁用 root 登录
- 使用密钥认证
- 修改默认端口(可选)
六、JVM 参数调优建议(示例)
java -Xms2g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m
-XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError
-jar your-app.jar
-Xms:初始堆内存-Xmx:最大堆内存(建议不超过物理内存的 70%)- GC 选择:G1GC 适合大堆,CMS 已废弃
七、部署方式建议
-
传统部署:
- 上传 JAR/WAR 文件 → 启动 Java 进程
- 使用
nohup或systemd守护进程
-
容器化部署(推荐):
- 使用 Docker 打包应用
- 配合 Docker Compose 或 Kubernetes 管理
-
自动化部署:
- Jenkins / GitLab CI / GitHub Actions 实现 CI/CD
八、监控与日志
- 日志管理:
- 日志输出到文件(如
logs/app.log) - 使用 logrotate 定期归档
- 日志输出到文件(如
- 监控工具:
- Prometheus + Grafana
- ELK(Elasticsearch, Logstash, Kibana)日志分析
- 使用 Spring Boot Actuator 暴露监控端点
总结:典型中等规模 Java 应用部署配置
| 项目 | 推荐配置 |
|---|---|
| 操作系统 | Ubuntu 22.04 LTS |
| CPU | 4 核 |
| 内存 | 8 GB |
| 硬盘 | 50 GB SSD |
| Java | OpenJDK 17 |
| Web 服务器 | Nginx + Spring Boot 内嵌 Tomcat |
| 部署方式 | systemd 或 Docker |
| 安全 | 防火墙 + SSH 密钥 + 定期更新 |
如提供具体应用类型(如 Spring Boot、微服务、高并发系统),可进一步优化配置建议。
PHPWP博客