在多个服务器上运行node.js脚本

时间:2017-11-28 17:29:49

标签: javascript node.js shell ssh server

我有一个node.js脚本,我目前在7个独立的服务器上执行。现在我所做的就是将脚本复制到所有7台服务器并单独执行它们。

这有效,但我必须经常修改源代码,这反过来意味着每次有一个非常繁琐的变化时我都必须重新执行上述操作。

所以我的问题是如何让这个过程变得更简单?我有ssh访问所有7台服务器。

2 个答案:

答案 0 :(得分:0)

这是一个相当广泛的问题,但我会给你一个基本的贯穿期。

有许多工具和方法可用于保持多台服务器同步。

rsync等工具用于在系统之间同步文件。使用它,您可以在其中进行更改,然后将其复制到其他人。请注意,它不会重新启动您的应用,因此您需要某种触发器(例如nodemon)来监视更改并执行此操作。

还有一些工具可以让您同时SSH和控制多个框,例如pssh。这是一个主题:https://unix.stackexchange.com/questions/19008/automatically-run-commands-over-ssh-on-many-servers

有些工具可以帮助自动部署管道。 Fabric就是这样一种工具(正如蒂莫在评论中提到的那样)。

最后,也许最干净的方法是使用某种类型的连续部署系统,如GitLab或TeamCity,您可以在其中创建一个构建管道,在您进行提交时触发并将为您推出。这是大多数专业人士采用的方法。

答案 1 :(得分:0)

这可能是一种解决方案(存在一定的安全风险),正如我几天前所做的那样。

主服务器上的

应放置目标文件index.js

在其他服务器上

加载js文件(尝试axios),然后加载eval该脚本。

const axios = require('axios');

const url = 'full_url';


axios.get(url)
  .then((file) => {
    eval(file.data);
  });