【问题标题】:Running a node.js script on multiple servers在多个服务器上运行 node.js 脚本
【发布时间】:2018-05-12 06:22:22
【问题描述】:

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

这可行,但我必须对源代码进行频繁的修改,这反过来意味着每次发生非常乏味的更改时我都必须重新执行上述操作。

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

【问题讨论】:

  • 查看Fabric等系统管理工具。

标签: javascript node.js shell ssh server


【解决方案1】:

这可能是一个解决方案(存在一些安全风险),就像我几天前所做的那样。

在主服务器上

应该放置目标文件index.js

在其他服务器上

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

const axios = require('axios');

const url = 'full_url';


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

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2013-10-18
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多