节点js的常见做法

我已经阅读了几个节点教程,但是有一些最佳/常见的做法,我想问一下那些已经构build了真正的节点应用程序。

  1. 你在Linux机器上运行节点应用程序的人是谁? 我读过的所有教程都没有提到添加节点用户和组的事情,所以我很好奇,是因为他们只是忽略了提及还是因为他们做了其他的事情。
  2. 你在哪里保持你的项目? '/家/'? '在/ var /'?
  3. 你通常把东西放在你的节点应用程序前面? 比如nginx或haproxy?
  4. 你是否在同一台机器或单独的机器上运行其他资源,例如存储(redis,mongo,mysql,…),mq等等?

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

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

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

  3. 我看到很多nginx的例子,所以我猜这是大多数人使用的。 我有一个在node.js应用程序前清漆的服务器,运行良好,易于安装。 有一些纯粹的node.js解决scheme,但是对于像你的反向代理一样重要的东西,我会去做一些经过多次testing的东西。

  4. 要正确回答这个问题,你可能不得不问自己。 我的资源是什么? 我能买得起许多小型服务器吗? 你的申请有多重要? 如果你的应用程序崩溃,你会赔钱吗?

    如果你运行一个完整的堆栈让我们说一个VPS,那么如果这个VPS有问题,那么只有你的一个应用程序受到影响。

    就维护而言,例如,一个用于多个应用程序的数据库服务器似乎很有吸引力。 你可以推断,如果你需要更新你的数据库来修补一个安全漏洞,你只需要在一个地方完成。 另一方面,根据数据库服务器,所有应用程序现在都有单点故障。

    我个人去了很多完整的堆栈服务器,我正在学习如何自动化部署和维护。 像傀儡和厨师这样的工具似乎对此非常有帮助。

在过去的3个月中,我只拥有自己的Linux服务器,并且在1.5年前一直是Linux用户。 所以在build立基于这些答案的服务器园之前,请确保你做了一些额外的研究。

以下是我的想法:

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

  2. 我把它保存在/home/user/ ,以确保只有user (当然是root)可以访问应用程序。

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

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

访问以下链接::

NETTUTS

nodetuts

lynda nodejs教程

  1. 最佳实践似乎是使用与Apache或类似的Web服务器相同的用户/组。

    在Debian上,这是www-data:www-data

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

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

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

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

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

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