在Linux服务器上部署Java应用需要注意哪些配置?

在Linux服务器上部署Java应用时,需要注意以下关键配置:

1. Java环境配置

# 选择合适的JDK版本(推荐LTS版本)
# 设置JAVA_HOME环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

# 验证Java版本
java -version

2. JVM参数优化

# 内存配置(根据服务器内存调整)
-Xms2g -Xmx4g  # 堆内存初始和最大值
-XX:MaxMetaspaceSize=512m  # 元空间大小
-Xss256k  # 线程栈大小

# GC优化(根据应用特点选择)
-XX:+UseG1GC  # G1垃圾收集器
-XX:MaxGCPauseMillis=200  # 最大GC暂停时间

# 其他重要参数
-XX:+HeapDumpOnOutOfMemoryError  # OOM时生成堆转储
-XX:HeapDumpPath=/path/to/dumps
-Dfile.encoding=UTF-8  # 字符编码

3. 应用部署配置

# 应用目录结构
/opt/your-app/
├── bin/           # 启动脚本
├── conf/          # 配置文件
├── lib/           # 依赖jar包
├── logs/          # 日志目录
└── temp/          # 临时文件

4. 启动脚本配置

#!/bin/bash
# 设置环境变量
export APP_HOME=/opt/your-app
export LOG_DIR=$APP_HOME/logs

# 创建日志目录
mkdir -p $LOG_DIR

# 启动应用
java -jar 
  -Dspring.profiles.active=prod 
  -Dlogging.path=$LOG_DIR 
  -Dserver.port=8080 
  $APP_HOME/lib/your-app.jar

5. 系统资源配置

# 文件描述符限制
ulimit -n 65535

# 用户进程限制
# 编辑 /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535

# 内核参数调整(/etc/sysctl.conf)
vm.swappiness=10
net.core.somaxconn=65535

6. 网络和安全配置

# 防火墙配置
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

# 使用非root用户运行
useradd -r -s /bin/false appuser
chown -R appuser:appuser /opt/your-app

7. 日志管理

# 日志轮转配置(/etc/logrotate.d/your-app)
/opt/your-app/logs/*.log {
    daily
    rotate 30
    compress
    missingok
    notifempty
    create 644 appuser appuser
}

8. 监控和运维

# 健康检查端点(Spring Boot示例)
management.endpoints.web.exposure.include=health,metrics,info
management.endpoint.health.show-details=always

# 使用systemd管理服务
# /etc/systemd/system/your-app.service
[Service]
User=appuser
WorkingDirectory=/opt/your-app
ExecStart=/opt/your-app/bin/start.sh

9. 容器化部署(可选)

# Dockerfile示例
FROM openjdk:11-jre-slim
COPY target/app.jar /app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

最佳实践建议:

  1. 环境分离:区分开发、测试、生产环境配置
  2. 配置外部化:使用外部配置文件或配置中心
  3. 版本管理:明确记录JDK和应用版本
  4. 备份策略:定期备份配置和重要数据
  5. 监控告警:设置JVM和应用性能监控

根据具体应用类型(Spring Boot、Tomcat等)和业务需求,可能还需要额外的特定配置。

云服务器