Web+提供了自定义启停命令和生命周期挂钩的能力,您可以很方便地通过设置命令来管理用户的服务进程,以及通过设置生命周期挂钩来简化部署、监控、运维和治理等应用生命周期管理操作。

命令

通常情况下,Web+对于每种技术栈类型设置了默认的启动与停止命令,Web+默认使用Systemd来管理用户的服务进程。您也可以在Web+控制台Procfile中修改启停命令。



命令设置说明

  • 启动命令需一直在前台运行,命令执行结束时服务即停止。
  • 建议停止命令始终包含systemctl stop wpweb,以确保可以正常停止服务,可在此命令前后增加自定义的处理的部分。
  • 启动命令的工作目录为应用部署包的根目录。
  • 启动命令将以admin用户身份执行。
  • 如果部署包内提供了Procfile,则指定的启动命令将不会生效。

生命周期挂钩

在Web+执行实例变更操作时,可以触发特定的生命周期挂钩,您可以在这些生命周期挂钩上设置执行的命令或脚本,来完成常用操作,例如修改配置文件,注册/注销服务,发送通知,下载文件等。

  • PostPrepareEnv:环境初始化后此挂钩将被执行,该挂钩只会对每个实例运行一次,执行该挂钩时不可读取环境变量。
  • PreInstallStack:安装或变更技术栈所含基础软件前此挂钩将被执行,执行该挂钩时不可读取环境变量。
  • PostInstallStack:安装或变更技术栈所含基础软件前后挂钩将被执行,执行该挂钩时不可读取环境变量。
  • PrePrepareApp:应用发生变更(如部署包版本发生变化)前该挂钩将被执行,执行该挂钩时不可读取环境变量。
  • PostPrepareApp:应用发生变更(如部署包版本发生变化)后该挂钩将被执行,执行该挂钩时可以使用环境变量。
  • PreStart:服务启动前该挂钩将被被执行,执行该挂钩时可以使用环境变量。
  • PostStart:服务启动后该挂钩将被被执行,执行该挂钩时可以使用环境变量。
  • PreStop:服务停止前该挂钩将被执行,执行该挂钩时可以使用环境变量。
  • PostStop:服务停止后该挂钩将被执行,执行该挂钩时可以使用环境变量。

生命周期挂钩的运行过程示意图如下。



注意 上图中的安装基础软件等过程,不是每一次执行左侧的操作流程时都会执行。

生命周期挂钩说明

  • 生命周期挂钩将以root用户身份执行。
  • 生命周期挂钩的执行失败将导致变更失败并终止,如果您不希望生命周期挂钩影响变更流程,可以在命令行的末尾添加;exit 0来保证执行始终成功。
  • 部分生命周期挂钩中可以使用环境变量,可用的环境变量请参见环境变量2环境变量
  • 生命周期挂钩需要在2分钟内执行完成,否则会导致变更失败并终止,如果有超长的任务需要处理,建议通过后台执行脚本的方式来完成。
  • 生命周期挂钩的工作目录为/opt/webplus/data/envdata/wproot/,您可以通过cd命令来切换到指定的目录下。
  • 建议在生命周期挂钩中使用命令或脚本的绝对路径。