5

我一直在阅读一些节点教程,但是对于那些以前构建过真正节点应用程序的人,我想询问一些最佳/常见做法。

  1. 你在你的 linux 机器上运行节点应用程序的是谁?我读过的教程都没有提到任何关于添加节点用户和组的内容,所以我很好奇这是因为他们只是忽略了提及它还是因为他们做了其他事情。
  2. 你把你的项目放在哪里?'/家/'?'/var/'?
  3. 你通常会在你的节点应用程序前面放一些东西吗?比如nginx还是haproxy?
  4. 你是在同一台机器上还是在不同的机器上运行其他资源,例如 storage(redis, mongo, mysql, ...), mq, etc...?
4

4 回答 4

2

我猜这个问题主要是关于设置你的在线服务器而不是你的本地开发机器。

  1. 在 irc 频道中,有人回答了同样的问题,并说他为每个应用程序使用了一个单独的用户。所以我猜这是一个很好的常见做法。

  2. 我主要做 /home/user/apps

  3. 我看到很多 nginx 示例,所以我猜这是大多数人使用的。我在 node.js 应用程序前面有一个带有清漆的服务器,它运行良好并且易于设置。有一些纯粹的 node.js 解决方案,但对于像你的反向代理这样重要的东西,我会选择一些经过实战考验的东西。

  4. 要正确回答这个问题,您可能需要问自己。我的资源是什么?我能负担得起许多小型服务器吗?你的申请有多重要?如果您的应用出现故障,您会赔钱吗?

    如果您在一个 VPS 上运行完整堆栈,那么如果该 VPS 出现问题,那么只有您的一个应用程序受到影响。

    在维护方面,例如一个用于多个应用程序的数据库服务器可能看起来很有吸引力。您可能会认为,如果您需要更新数据库以修补安全漏洞,您只需在一个地方进行。另一方面,您现在对依赖于该数据库服务器的所有应用程序都有一个单点故障。

    我个人选择了许多全栈服务器,并且正在学习如何自动化部署和维护。Puppet 和 Chef 之类的工具似乎对此非常有帮助。

在过去的 3 个月里,我只拥有自己的 Linux 服务器,并且成为 Linux 用户已有 1.5 年。因此,在根据这些答案设置服务器公园之前,请确保您进行了一些额外的研究。

于 2012-05-17T11:08:43.613 回答
2

这是我的想法:

  1. 为每个应用程序使用单独的用户我这样做的方式。

  2. 我保留它/home/user/以确保只有user(当然是root)才能访问该应用程序。

  3. 前段时间,我基于node-http-proxy 模块在 Node JS 中创建了自己的反向代理。如果您不想使用反向代理,那么在 Node.js 前面放置任何东西都是没有意义的。还有更多:它可能会损害应用程序,因为例如 nginx 不能使用 HTTP/1.1(至少目前)。

  4. 我在同一台机器上运行的所有资源。只有当我真正需要在不同的机器之间分发我的应用程序时,我才开始考虑单独的机器。无需预先优化。不过,App 的代码是另一回事。

于 2012-05-18T11:21:03.623 回答
0

访问以下链接::

网红

节点图

lynda nodejs 教程

于 2013-09-13T13:34:55.777 回答
-2
  1. 最佳实践似乎是使用与 Apache 或类似 Web 服务器相同的用户/组。

    在 Debian 上,即 www-data:www-data

    但是,对于某些可能需要更高权限的应用程序,这可能会出现问题。例如,我一直在尝试使用 Node 编写类似于 Webmin 的东西,这需要 root 权限(或至少是 adm 组)才能完成许多任务。

  2. 在 Debian 上,我使用 /var/nodejs(我将 /var/www 用于“普通”Web 应用程序,例如 PHP)

  3. 我仍然不愿意使用 Node 的原因之一(除了令人震惊的缺乏高质量的文档)是在运行多个应用程序时需要分配多个 IP 端口。我认为对于任何规模合理的生产环境,您都可以使用虚拟服务器来划分节点服务器进程。

    Node 开发人员似乎经常忘记的一件事是,在许多企业环境中,IP 端口受到非常严格的控制。通过防火墙打开一个新端口是一项非常痛苦且耗时的任务。

    如果您使用反向代理,要记住的另一件事,Web 应用程序在从代理后面运行时通常会失败 - 特别是在映射虚拟文件夹(例如https://extdomain/folder-> http://localhost:1234)时,您需要继续测试。

  4. 我只是为我自己的系统运行一个 VPS。但是,对于生产应用程序,您需要了解要求。如果只是为了弹性和可扩展性,生产应用程序很可能需要多个服务器。

于 2012-05-18T11:02:22.143 回答