Linux系统下Systemd服务自动拉起Java服务配置教程

基础信息

jar目录:/home/smart-admin-v3/sa-admin-prod-3.0.0.jar

Java服日志目录:/home/logs/smart_admin_v3/sa-admin/prod

以下是基于 Systemd 服务管理的完整部署流程,针对 JAR 应用 /home/smart-admin-v3/sa-admin-prod-3.0.0.jar 的配置与管理:


一、创建专用用户(避免使用 root 运行)

  1. 创建用户及用户组
    使用 useradd 创建不可登录的系统用户,提升安全性:

    sudo groupadd -r appadmin  # 创建用户组
    sudo useradd -r -s /bin/false -g appadmin appadmin  # -r 表示系统用户,-s 禁用登录
    
  2. 设置目录权限
    若服务涉及其他目录权限,可使用命令设置权限;

sudo chown -R appadmin:appadmin **path**

本案例设置权限命令如下:

#将 JAR 文件所在目录的所有权赋予该用户:
sudo chown -R appadmin:appadmin /home/smart-admin-v3
# 将目录所有权赋予 appadmin 用户
sudo chown -R appadmin:appadmin /home/logs/smart_admin_v3

# 设置目录权限为 755(允许用户读写执行,组和其他用户只读)
sudo chmod -R 755 /home/logs/smart_admin_v3

二、配置 Systemd 服务

  1. 创建服务文件
    /etc/systemd/system 下新建文件 smart-admin.service

    sudo nano /etc/systemd/system/smart-admin.service
    
  2. 编写服务配置
    参考以下模板(注意使用时将注释删除):

    [Unit]
    Description=Smart Admin Backend Service
    After=network.target  # 确保网络就绪后启动
    
    [Service]
    Type=simple
    User=appadmin  # 指定运行用户
    Group=appadmin
    WorkingDirectory=/home/smart-admin-v3  # 设置工作目录
    ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar sa-admin-prod-3.0.0.jar  # 启动命令(含JVM参数)
    Restart=on-failure  # 异常退出时自动重启
    RestartSec=10s  # 重启间隔时间
    SuccessExitStatus=143  # 允许优雅退出
    
    [Install]
    WantedBy=multi-user.target  # 多用户模式启用
    

三、服务管理操作

  1. 重载配置并启动服务

    sudo systemctl daemon-reload  # 加载新服务文件
    sudo systemctl start smart-admin  # 启动服务
    sudo systemctl enable smart-admin  # 设置开机自启
    
  2. 常用命令

    # 查看实时状态
    sudo systemctl status smart-admin
    # 重启服务(修改配置后使用)
    sudo systemctl restart smart-admin
    # 查看日志(实时跟踪)
    journalctl -u smart-admin -f  # 按 Ctrl+C 退出
    

四、高级优化与调试

  1. 资源限制(可选)
    [Service] 部分添加以下参数,防止内存泄漏:

    MemoryLimit=2G  # 限制最大内存
    CPUQuota=80%    # 限制 CPU 使用率
    
  2. 安全增强

    • 禁止 JAR 文件被修改:

      sudo chmod 500 /home/smart-admin-v3/sa-admin-prod-3.0.0.jar
      
  3. 错误排查

    • 权限问题:检查 appadmin 用户是否有目录读写权限

      验证应用用户权限

      # 确认目录归属和权限
      ls -ld /home/logs/smart_admin_v3/sa-admin/prod
      # 期望输出:
      # drwxr-xr-x 2 appadmin appadmin 4096 Apr  3 09:10 /home/logs/.../prod
      
      # 模拟 appadmin 用户写入测试文件
      sudo -u appadmin touch /home/logs/smart_admin_v3/sa-admin/prod/test.txt
      sudo -u appadmin rm /home/logs/smart_admin_v3/sa-admin/prod/test.txt
      
    • 端口冲突:通过 netstat -tulnp | grep java 查看端口占用

    • 依赖缺失:确保 JDK 版本匹配(通过 java -version 验证)


五、扩展场景

若需实现 异常自动重启+告警通知,可结合以下工具:

  1. Monit:监控服务状态并触发邮件告警

  2. Prometheus + Grafana:可视化监控 JVM 性能指标


通过上述步骤,您已实现基于 Systemd 的 JAR 服务全生命周期管理。此方案在 稳定性(自动重启)、安全性(专用用户)和 可维护性(集中日志)上均有显著优势

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值