节点js的常见做法
我已经阅读了几个节点教程,但是有一些最佳/常见的做法,我想问一下那些已经构build了真正的节点应用程序。
- 你在Linux机器上运行节点应用程序的人是谁? 我读过的所有教程都没有提到添加节点用户和组的事情,所以我很好奇,是因为他们只是忽略了提及还是因为他们做了其他的事情。
- 你在哪里保持你的项目? '/家/'? '在/ var /'?
- 你通常把东西放在你的节点应用程序前面? 比如nginx或haproxy?
- 你是否在同一台机器或单独的机器上运行其他资源,例如存储(redis,mongo,mysql,…),mq等等?
我猜这个问题主要是关于设置你的在线服务器,而不是你的本地开发机器。
-
在irc频道有人回答了同样的问题,并说他为每个应用程序使用一个单独的用户。 所以我猜这是一个很好的惯例。
-
我主要做/ home / user / apps
-
我看到很多nginx的例子,所以我猜这是大多数人使用的。 我有一个在node.js应用程序前清漆的服务器,运行良好,易于安装。 有一些纯粹的node.js解决scheme,但是对于像你的反向代理一样重要的东西,我会去做一些经过多次testing的东西。
-
要正确回答这个问题,你可能不得不问自己。 我的资源是什么? 我能买得起许多小型服务器吗? 你的申请有多重要? 如果你的应用程序崩溃,你会赔钱吗?
如果你运行一个完整的堆栈让我们说一个VPS,那么如果这个VPS有问题,那么只有你的一个应用程序受到影响。
就维护而言,例如,一个用于多个应用程序的数据库服务器似乎很有吸引力。 你可以推断,如果你需要更新你的数据库来修补一个安全漏洞,你只需要在一个地方完成。 另一方面,根据数据库服务器,所有应用程序现在都有单点故障。
我个人去了很多完整的堆栈服务器,我正在学习如何自动化部署和维护。 像傀儡和厨师这样的工具似乎对此非常有帮助。
在过去的3个月中,我只拥有自己的Linux服务器,并且在1.5年前一直是Linux用户。 所以在build立基于这些答案的服务器园之前,请确保你做了一些额外的研究。
以下是我的想法:
-
为每个应用程序使用单独的用户是我这样做的方式。
-
我把它保存在
/home/user/
,以确保只有user
(当然是root)可以访问应用程序。 -
前一段时间,我已经在node-http-proxy模块的基础上,在Node JS中创build了自己的反向代理。 如果你不想使用反向代理,那么把任何东西放在节点前面都没有意义。 还有更多:它可能会损害应用程序,因为例如nginx不能使用HTTP / 1.1(至less目前)。
-
我在同一台机器上运行的所有资源。 只有当我真的需要在不同的机器之间分配我的应用程序时,我开始考虑单独的机器。 没有必要预先优化。 应用程序的代码是不同的东西,但。
访问以下链接::
NETTUTS
nodetuts
lynda nodejs教程
-
最佳实践似乎是使用与Apache或类似的Web服务器相同的用户/组。
在Debian上,这是www-data:www-data
但是,对于某些可能需要更高权限的应用程序,这可能会造成问题。 例如,我一直在尝试使用Node编写类似于Webmin的东西,这需要根权限(或者至less是adm组)来完成许多任务。
-
在Debian上,我使用/ var / nodejs(我使用/ var / www作为“普通”web应用程序,例如PHP)
-
我仍然不愿意使用Node的原因之一(除了缺乏高质量的文档外)是需要在运行多个应用程序时分配多个IP端口。 我认为,对于任何合理大小的生产环境,您都可以使用虚拟服务器来划分节点服务器进程。
节点开发人员似乎经常忘记的一件事是,在许多企业环境中,IP端口受到非常严格的控制。 获取通过防火墙打开的新端口是非常痛苦和耗时的任务。
另一个要记住的是,如果您使用的是反向代理,则Web应用程序在从代理后面运行时经常会失败 – 特别是映射虚拟文件夹(例如,
https://extdomain/folder
– >http://localhost:1234
) ,你需要继续testing。 -
我只是为自己的系统运行一个VPS。 但是,对于生产应用程序,您需要了解这些要求。 生产应用程序将很可能需要多个服务器,如果只是为了恢复和可伸缩性。