什么是 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 install
和 npm 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