PM2 教程:如何在应用运行时执行脚本?

什么是 PM2?

PM2 是一个包括进程管理、负载均衡、日志管理等多种功能的 Node.js 进程管理工具。它可以帮助我们简化 Node.js 应用的管理流程,让我们更加高效地运维我们的应用。

如何在应用运行时执行脚本?

有时候我们希望在应用运行时执行一些操作,比如数据库迁移、缓存预热等。PM2 提供了一个 pre-deploy 钩子,可以在应用启动前执行一些脚本,例如:

{
  "apps" : [{
    "name"        : "my-app",
    "script"      : "app.js",
    "env": {
      "NODE_ENV": "production"
    },
    "pre-deploy": "npm install && npm run build"
  }]
}

在这个例子中,当我们使用命令 pm2 start ecosystem.config.js 启动应用时,PM2 会在执行 npm installnpm run build 命令后再启动应用程序。

pre-deploy 钩子还可以使用 Shell 脚本来执行更复杂的操作。例如,我们可以使用 Shell 脚本来自动化运行数据库迁移:

{
  "apps" : [{
    "name"        : "my-app",
    "script"      : "app.js",
    "env": {
      "NODE_ENV": "production"
    },
    "pre-deploy": "./run-migrations.sh"
  }]
}

run-migrations.sh 脚本内容:

#!/bin/bash

# 连接数据库
psql -h localhost -U postgres -d mydb << EOF
  # 执行数据库迁移命令
  knex migrate:latest
EOF

当我们启动应用时,PM2 会依次执行 run-migrations.sh 中的命令,等待命令执行完成后再启动应用程序。

总结

在 PM2 中,我们可以使用 pre-deploy 钩子来执行应用启动前的脚本,以便自动化一些操作,例如数据库迁移等。我们可以使用简单的命令或者 Shell 脚本来实现这个过程,可以大大简化我们的运维流程,提高工作效率。

参考

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65ae639eadd4f0e0ff7f0ded