节点js常见做法

时间:2012-05-17 03:06:47

标签: node.js

我一直在阅读一些节点教程,但有一些最好/常见的做法,我想问一下那些以前构建真实节点应用程序的人。

  1. 你在Linux机器上运行节点应用程序的人是谁?我读过的所有教程都没有提到有关添加节点用户和组的任何内容,所以我很好奇是否因为他们忽略了提及它或者因为他们做了其他事情。
  2. 你在哪里保管你的项目? '/家/'? '的/ var /'?
  3. 您是否经常在节点应用程序前放置一些内容?如nginx或haproxy?
  4. 你是否在同一台机器或不同的机器上运行其他资源,例如存储(redis,mongo,mysql,...),mq等等?

4 个答案:

答案 0 :(得分:2)

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

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

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

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

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

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

    在维护方面,例如,多个应用程序的一个数据库服务器似乎很有吸引力。您可以推断,如果您需要更新数据库以修补安全漏洞,则只需在一个位置执行此操作即可。另一方面,根据该数据库服务器,您现在对所有应用程序都有单点故障。

    我亲自去了很多全栈服务器,我正在学习如何自动部署和维护。像Puppet和Chef这样的工具似乎对此非常有帮助。

  5. 我在过去的3个月里只拥有自己的Linux服务器,并且已经是Linux用户1。5年了。因此,在根据这些答案设置服务器园区之前,请确保您做一些额外的研究。

答案 1 :(得分:2)

这就是我的想法:

  1. 为每个应用使用单独的用户就像我这样做。

  2. 我将其保留在/home/user/中,以确保只有user(当然还有根)才能访问该应用。

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

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

答案 2 :(得分:0)

访问以下链接::

nettuts

nodetuts

lynda nodejs tutorials

答案 3 :(得分:-2)

  1. 最佳做法似乎是使用与Apache或类似网络服务器相同的用户/组。

    在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。但是,对于生产应用程序,您需要了解这些要求。如果只是为了恢复和可扩展性,生产应用程序很可能需要多台服务器。