当前位置:首页 > 云服务器 > 正文

linux java服务器部署

Linux 服务器部署 Java应用需安装JDK,配置Tomcat等容器,上传打包好的JAR/WAR文件,通过命令或systemctl启动并管理服务

环境准备

1 系统要求

组件 最低版本/配置 推荐版本/配置
Linux内核 ≥2.6 ≥4.x(如Ubuntu 20.04+)
Java运行时 OpenJDK 8+ OpenJDK 11/17 LTS
内存 2GB RAM(小型应用) 4GB+(生产环境建议)
磁盘空间 剩余10GB可用 剩余20GB+
网络带宽 百兆基础 根据并发量动态调整

2 依赖包安装(以CentOS为例)

# 更新软件源 sudo yum update -y # 安装必要工具链 sudo yum install -y wget unzip net-tools tree curl policycoreutils-java # 设置Java优先选择顺序(若多版本共存) sudo alternatives --config java

注意:Ubuntu系使用apt install openjdk-<version>替代yum命令。


JDK安装与配置

1 下载官方发行版

访问Oracle官网或Adoptium开源仓库获取对应架构的tar.gz包:

wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz

2 解压并部署

mkdir /usr/local/java && tar zxvf OpenJDK17U-jdk_x64_linux_hotspot_.tar.gz -C /usr/local/java/ chown -R root:root /usr/local/java/

3 环境变量设置

编辑/etc/profile追加以下内容:

linux java服务器部署 第1张

执行生效命令:source /etc/profile,通过java -version验证安装结果。


应用部署流程

1 上传项目包

使用SCP工具传输打包好的WAR/JAR文件至服务器:

linux java服务器部署 第2张

或直接通过FTP客户端上传至指定目录。

2 Tomcat容器化部署(示例)

步骤 命令行操作
创建目录结构 mkdir -p /data/tomcat/webapps && chown -R tomcat:tomcat /data/tomcat
放置应用包 将myapp.war放入/data/tomcat/webapps/目录下
启动服务 systemctl start tomcat(需先配置Systemd单元文件)
访问测试 浏览器输入http:// :8080/myapp/index.html

替代方案:Spring Boot应用可直接用nohup java -jar myapp.jar > log.out 2>&1 &后台运行。

3 Nginx反向代理配置

编辑/etc/nginx/conf.d/default.conf添加:

linux java服务器部署 第3张

location /api/ { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }

重启服务使配置生效:nginx -s reload


进程守护方案对比

方案名称 优点 缺点 适用场景
Systemd 原生支持日志捕获、开机自启 学习曲线较陡 长期稳定运行的服务
Supervisor 可视化管理界面,配置简单 资源占用略高 多进程协作型应用
PM2(Node生态) 实时性能监控面板 Java非原生生态适配性一般 Node.js混编项目
nohup+& 零依赖快速实现 缺乏优雅退出机制 临时调试用途


日志管理规范

1 标准输出重定向

# 将控制台日志同时写入文件和滚动显示 java -Dlogging.level=INFO -jar app.jar > /var/log/app/stdout.log 2>&1 & tail -f /var/log/app/stdout.log # 实时查看最新日志

2 日志切割策略(Logrotate示例)

创建配置文件/etc/logrotate.d/javaapp:

/var/log/app/.log { daily # 每天轮转一次 missingok # 忽略丢失的文件不报错 rotate 7 # 保留最近7天的日志文件 compress # 启用gzip压缩旧日志 delaycompress # 延迟一天后才开始压缩 notifempty # 如果日志为空则不处理 }


常见问题与解答

Q1: Java进程突然消失怎么办?

A: 按以下顺序排查:

1️⃣ 检查内存使用情况(free -m),确认是否触发OOM Killer;

2️⃣ 查看系统日志(journalctl -xe | grep java);

3️⃣ 验证启动参数合法性,特别是堆大小设置(建议不超过物理内存的80%);

4️⃣ 确保应用程序没有未捕获的异常导致主动退出。

Q2: 如何优化GC性能?

A: 推荐组合策略:

添加JVM参数示例:-XX:+UseG1GC -Xms2g -Xmx2g -XX:MaxGCPauseMillis=200;

启用垃圾回收日志分析:-Xlog:gc:file=/var/log/gc.log;

使用VisualVM或JConsole进行可视化调优;

对堆外内存进行监控(可通过jmap --heap命令

0