目录

    phoenix UI端程序在 Linux 服务器上设置开机自启动


    phoenix UI端程序在 Linux 服务器上设置开机自启动

    源码仓库地址

    Gitee仓库 GitHub仓库

    一、方式一(推荐)

    1.创建一个新的服务单元文件

    执行以下命令创建一个新的服务单元文件,例如 phoenix_ui.service

    sudo nano /etc/systemd/system/phoenix_ui.service
    

    2.在打开的文件中,添加以下内容

    [Unit]
    Description=phoenix监控UI端
    After=network.target syslog.target
    
    [Service]
    User=root
    Group=root
    WorkingDirectory=/path/to/your/app
    ExecStart=/usr/bin/java -jar -Ddruid.mysql.usePingMethod=false /path/to/your/app/phoenix-ui.jar --spring.profiles.active=prod
    Restart=on-failure
    RestartSec=60s
    ExecReload=/bin/kill -HUP $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    

    ① 请将 /usr/bin/java 替换为您服务器的Java可执行文件所在路径,如果不知道路径,可以用命令 whereis java 查询。
    ② 请将 /path/to/your/app 替换为您的应用程序的实际路径,请确保用户、路径和文件名为您实际的应用程序信息,以确保正确的配置和启动。

    3.保存并关闭文件

    4.重新加载 systemd 配置

    执行以下命令重新加载 systemd 配置:

    sudo systemctl daemon-reload
    

    5.将服务添加到开机启动项中

    执行以下命令将服务添加到开机启动项中:

    sudo systemctl enable phoenix_ui.service
    

    6.启动、停止、重启服务,查看服务状态

    1)启动

    sudo systemctl start phoenix_ui.service
    

    2)停止

    sudo systemctl stop phoenix_ui.service
    

    3)重启

    sudo systemctl restart phoenix_ui.service
    

    4)查看服务状态

    systemctl status phoenix_ui.service
    

    7.问题诊断

    在 systemd 中,可以使用以下命令来查看服务开机自启动失败的日志:

    1)使用 journalctl 命令查看系统日志

    sudo journalctl -u <service_name>.service
    

    其中 <service_name> 是服务的名称。通过运行上述命令,您将只显示指定服务的日志。

    2)查看引导过程的日志(包括服务启动)

    sudo journalctl -b
    

    该命令将显示最近一次引导的整个日志,其中包括服务启动和其他相关信息。

    3)使用 systemctl 命令查看服务状态和日志

    systemctl status <service_name>.service
    

    该命令将显示服务的当前状态,包括最近的日志记录片段。

    这些命令将显示与指定服务相关的日志条目,帮助您确定服务开机自启动失败的原因。您可以检查日志中的错误消息、警告和其他有关服务启动过程的详细信息,以便进一步诊断问题。

    二、方式二

    1.创建一个启动脚本

    执行以下命令创建一个新的启动脚本:

    sudo nano /etc/init.d/phoenix_ui
    

    注意:init脚本通常用于旧版的Linux发行版,如CentOS 6及更早版本中。现在,systemd已经成为许多Linux发行版的默认服务管理器,如果您的服务器不支持init脚本,请使用其它方式设置开机自启动。

    2.在打开的文件中,添加以下内容

    #!/usr/bin/env bash
    
    ### BEGIN INIT INFO
    # Provides:          phoenix_ui
    # Required-Start:    $network $syslog
    # Required-Stop:     $network $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Description:       phoenix监控服务端
    ### END INIT INFO
    
    # 出错立即退出
    set -e
    # 未定义变量报错
    set -u
    
    #替换为您的应用程序的实际路径
    cd /path/to/your/app
    
    # ================== 配置项 ==================
    
    # 定义可执行 JAR 文件名
    PACKAGE_NAME="phoenix-ui.jar"
    # 定义程序的名称
    PROGRAM_NAME="phoenix-ui"
    # 定义启动程序的命令
    START_CMD="java -jar -Ddruid.mysql.usePingMethod=false ${PACKAGE_NAME} --spring.profiles.active=prod"
    # 定义在停止程序时,最大重试次数
    MAX_RETRY=12
    # 定义每次重试之间的等待时间
    SLEEP_SEC=5
    
    # ================== 工具函数 ==================
    
    # 获取当前运行进程的 PID
    get_pid() {
      pgrep -f "${PACKAGE_NAME}" 2>/dev/null
    }
    
    # 判断程序是否正在运行
    is_running() {
      [ -n "$(get_pid)" ]
    }
    
    # ================== 功能函数 ==================
    
    # 查看状态
    status() {
      echo "---------------------------------------检测状态---------------------------------------"
      if is_running; then
        local pid
        pid=$(get_pid)
        echo "${PROGRAM_NAME} 正在运行,进程ID:${pid}"
      else
        echo "${PROGRAM_NAME} 未运行!"
      fi
    }
    
    # 停止程序
    stop() {
      echo "---------------------------------------停止程序---------------------------------------"
      if ! is_running; then
        echo "${PROGRAM_NAME} 未运行!"
        return 0
      fi
    
      local pid
      pid=$(get_pid)
      echo "${PROGRAM_NAME} 进程ID:${pid}"
    
      kill "${pid}" 2>/dev/null
      echo "发送关闭信号:kill ${pid}"
    
      local retry=${MAX_RETRY}
      while ((retry > 0)); do
        if ! is_running; then
          echo "${PROGRAM_NAME} 已经关闭!"
          return 0
        fi
        sleep ${SLEEP_SEC}
        ((retry--))
      done
    
      echo "等待超时,仍未关闭,尝试强制终止..."
      kill -9 "${pid}" 2>/dev/null
      echo "${PROGRAM_NAME} 被强制关闭!"
    }
    
    # 启动程序
    start() {
      echo "---------------------------------------启动程序---------------------------------------"
      if is_running; then
        echo "${PROGRAM_NAME} 正在运行,请先停止程序!"
        return 1
      fi
    
      echo "启动命令:${START_CMD}"
      # 此处是一条完整命令,不能加双引号
      nohup ${START_CMD} >/dev/null 2>&1 &
      local pid=$!
    
      echo "启动中,PID: ${pid}"
    
      # 给一点时间让进程启动
      sleep 15
    
      if ! is_running; then
        echo "${PROGRAM_NAME} 启动失败!"
        return 1
      else
        echo "${PROGRAM_NAME} 已启动,PID: $(get_pid)"
      fi
    }
    
    # 重启程序
    restart() {
      stop
      start
    }
    
    # ================== 主程序入口 ==================
    if [ $# -lt 1 ]; then
      echo "
    用法: $0 {start|stop|restart|status}
    示例:
      ./phoenix_ui.sh start     # 启动服务
      ./phoenix_ui.sh stop      # 停止服务
      ./phoenix_ui.sh restart   # 重启服务
      ./phoenix_ui.sh status    # 检查状态
    "
      exit 1
    fi
    
    case "$1" in
      start)
        start
        ;;
      stop)
        stop
        ;;
      restart)
        restart
        ;;
      status)
        status
        ;;
      *)
        echo "无效参数: ${1}"
        echo "请使用: start | stop | restart | status"
        exit 1
        ;;
    esac
    

    请将 /path/to/your/app 替换为您的应用程序的实际路径。

    3.保存并关闭文件

    4.设置脚本的权限

    执行以下命令设置脚本的执行权限:

    sudo chmod +x /etc/init.d/phoenix_ui
    

    5.添加到开机启动项中

    执行以下命令将服务添加到开机启动项中:

    sudo chkconfig --add phoenix_ui
    

    6.启动、停止、重启服务,查看服务状态

    1)启动

    sudo service phoenix_ui start
    

    2)停止

    sudo service phoenix_ui stop
    

    3)重启

    sudo service phoenix_ui restart
    

    4)查看服务状态

    sudo service phoenix_ui status
    
    end
  1. 作者: 锋哥 (联系作者)
  2. 发表时间: 2025-07-12 10:32
  3. 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  4. 转载声明:如果是转载博主转载的文章,请附上原文链接
  5. 公众号转载:请在文末添加作者公众号二维码(公众号二维码见右边,欢迎关注)
  6. 评论

    站长头像 知录

    你一句春不晚,我就到了真江南!

    文章0
    浏览0

    文章分类

    标签云