在Linux服务器上部署Java应用,推荐以下环境组合:
1. Java运行环境
-
OpenJDK(首选):开源免费,与Oracle JDK高度兼容
- 推荐版本:JDK 11(LTS)或 JDK 17/21(最新LTS)
- 安装:
apt install openjdk-11-jdk(Debian/Ubuntu)或yum install java-11-openjdk(RHEL/CentOS)
-
Oracle JDK:商业用途需注意许可协议
-
Amazon Corretto:AWS提供的免费、多平台OpenJDK发行版
2. 应用服务器/容器
根据应用类型选择:
Web应用:
- Spring Boot内嵌容器:简单微服务
- Tomcat:轻量级,适合传统Web应用
- Jetty:更轻量,嵌入式场景
- Undertow:高性能,低内存占用
企业级应用:
- WildFly/JBoss EAP:完整Java EE支持
- WebLogic/WebSphere:大型企业级(商业)
3. 部署方式
传统部署:
# 打包应用
mvn clean package
# 运行
java -jar application.jar
容器化部署(推荐):
FROM openjdk:11-jre-slim
COPY target/app.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
使用系统服务管理:
# /etc/systemd/system/myapp.service
[Unit]
Description=My Java Application
After=network.target
[Service]
User=appuser
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/java -jar app.jar
Restart=always
[Install]
WantedBy=multi-user.target
4. 环境配置建议
基础优化:
# JVM内存设置(示例)
java -Xms512m -Xmx2g -XX:+UseG1GC -jar app.jar
# 生产环境推荐参数
java -server -Xms2g -Xmx2g -XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-XX:+HeapDumpOnOutOfMemoryError
-jar app.jar
目录结构:
/opt/myapp/
├── application.jar
├── config/
│ ├── application.yml
│ └── application-prod.yml
├── logs/
└── bin/
└── start.sh
5. 监控和管理工具
- JVM监控:JConsole, VisualVM, JMX
- APM工具:Prometheus + Grafana, SkyWalking, Pinpoint
- 日志:ELK Stack(Elasticsearch, Logstash, Kibana)
- 进程管理:Supervisor, systemd
6. 安全建议
- 使用非root用户运行Java进程
- 定期更新JDK安全补丁
- 配置适当的JVM安全策略
- 使用防火墙限制访问
- 敏感配置使用环境变量或配置中心
7. 推荐技术栈组合
- 简单微服务:OpenJDK 17 + Spring Boot + Docker
- 传统Web应用:OpenJDK 11 + Tomcat 9 + Nginx反向XX
- 云原生部署:OpenJDK + Spring Boot + Kubernetes
- 高可用集群:多实例 + Nginx负载均衡 + Redis会话共享
8. 自动化部署
考虑使用:
- CI/CD工具:Jenkins, GitLab CI, GitHub Actions
- 配置管理:Ansible, Terraform
- 容器编排:Docker Compose, Kubernetes
选择时需考虑:应用规模、团队熟悉度、维护成本、云环境等因素。对于新项目,推荐容器化部署方式,便于扩展和维护。
CLOUD技术笔记