如何使用flighplan重新加载/重启pm2并注意一个符号链接目录?

时间:2016-06-18 18:04:50

标签: node.js deployment server symlink pm2

我正在使用flighplan部署由Node.js

构建的网络服务

我的部署脚本将新版本上传到新目录,该目录的名称中包含时间戳或一些随机字符。我将所有版本保留在我的服务器中,这样我只需更改指向任何特定版本的链接即可轻松回滚,并实现零停机部署。

主目录,由服务名称命名,它只是一个符号链接,在上传后会更改为新版本的目录。

ln -snf ~/tmpDir ~/appName

enter image description here

我的问题是当pm2重新启动我的服务器它使用前一版本的原始路径时,它不会与符号链接绑定,而是跟随指向链接所指向的新目录的链接。 / p>

有没有办法重新启动或重新加载pm2并让它知道这个符号链接?

1 个答案:

答案 0 :(得分:1)

简短回答 - 您不应该在更改的符号链接中运行pm2。 pm2将始终选择符号链接指向的旧路径,除非您使用pm2 kill命令。

解决方案 - 创建一个新目录,并将其作为smylink的父目录和您的代码目录(mohmal-144等)。为了便于理解,我们可以调用此部署。

现在你应该有以下结构 /家/部署 / home / deploy / mohmal - >家/部署/ mohmal-144。

如果您使用的是pm2,则应使用ecosystem.json(pm2 config for starting apps)文件。虽然您可以将此文件命名为您想要的任何内容。为了便于理解,我们将此文件称为ecosystem.json文件。

在这个ecossystem.json文件中,在apps部分中,添加cwd目录,cwd应该指向符号链接的路径(而不是指向它的符号链接的路径)。见下面的例子。

MyObject

将此文件放在此示例中名为deploy的父目录中。

现在运行/使用pm2 start,pm2仅从此目录重启命令。 如果你已经在系统中运行pm2,只需运行pm2 kill就可以清除旧进程。

然后使用建议的更改,你永远不会有pm2杀死进程。 对符号链接的更改也会反映出来。