温馨提示×

Ubuntu Java服务如何配置

小樊
43
2025-12-26 03:51:44
栏目: 编程语言

Ubuntu Java 服务配置指南

一 准备环境

  • 安装 OpenJDK(示例为 OpenJDK 11):
    • 命令:sudo apt update && sudo apt install openjdk-11-jdk -y
    • 验证:java -versionjavac -version
  • 配置 JAVA_HOME(可选但推荐):
    • 查找路径:readlink -f $(which java)(常见路径如:/usr/lib/jvm/java-11-openjdk-amd64/bin/java
    • 方法一(系统级):编辑 /etc/environment,加入 JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64",执行 source /etc/environment
    • 方法二(交互选择):sudo update-alternatives --config java--config javac 选择默认版本

二 使用 Systemd 部署 JAR 服务

  • 创建服务单元文件:sudo nano /etc/systemd/system/myapp.service
  • 示例内容(按需修改路径与参数):
    [Unit]
    Description=My Java Application
    After=network.target
    
    [Service]
    Type=simple
    User=ubuntu
    WorkingDirectory=/home/ubuntu/myapp
    ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar /home/ubuntu/myapp/app.jar --server.port=8080
    SuccessExitStatus=143
    TimeoutStopSec=10
    Restart=on-failure
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    
  • 启用与操作:
    • 重新加载:sudo systemctl daemon-reload
    • 开机自启:sudo systemctl enable myapp.service
    • 启动/停止/重启:sudo systemctl start|stop|restart myapp.service
    • 查看状态:sudo systemctl status myapp.service
  • 日志查看:
    • 服务日志:sudo journalctl -u myapp.service -f
    • 系统日志:/var/log/syslog(排查 systemd 与权限问题)

三 常见场景与参数建议

  • 前台长期运行服务:使用 Type=simple,配合 Restart=on-failure/always 实现异常自动拉起
  • 优雅停机:Spring Boot 可处理 SIGTERM,设置 SuccessExitStatus=143;必要时调整 TimeoutStopSec
  • 资源与参数:通过 -Xms/-Xmx 控制堆内存,应用参数直接追加到 ExecStart 的 jar 命令后
  • 工作目录与输出:设置 WorkingDirectory 便于相对路径读取配置;使用 journalctl 集中管理日志,或脚本重定向到文件(见下一节)
  • 权限与安全:以专用系统用户运行(如 User=ubuntu),避免使用 root;必要时配置目录权限与日志目录可写

四 可选方式 Shell 脚本包装

  • 适用场景:需要在启动前设置复杂环境变量或执行额外逻辑
  • 示例脚本 /home/ubuntu/myapp/start.sh
    #!/usr/bin/env bash
    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    export PATH=$JAVA_HOME/bin:$PATH
    
    cd /home/ubuntu/myapp
    exec /usr/bin/java -Xms512m -Xmx1024m -jar app.jar --server.port=8080 >> /var/log/myapp.log 2>&1
    
  • 赋权与配置服务:
    • chmod +x /home/ubuntu/myapp/start.sh
    • 服务文件中将 ExecStart 指向脚本:ExecStart=/home/ubuntu/myapp/start.sh
    • 注意:使用脚本时仍可结合 StandardOutput/StandardError 或重定向到文件进行日志管理

五 旧系统 SysVinit 方式简介

  • 仅适用于 Upstart/SysVinit 的老版本 Ubuntu
  • 步骤概要:编写带 LSB 头 的脚本 → 放入 /etc/init.d/chmod 755update-rc.d <脚本名> defaults 90
  • 现代 Ubuntu 推荐使用 systemd 替代

0