由于这篇文章多年来引起了很多关注,我在本文的最后列出了每个平台的顶级解决方案.
原帖:
我希望我的node.js服务器在后台运行,即:当我关闭终端时,我希望我的服务器继续运行.我已经用Google搜索了这个教程,但它没有按预期工作.因此,我没有使用该守护进程脚本,而是认为我只使用了输出重定向(2>&1 >> file部分),但这也没有退出 - 我的终端中出现一个空行,就像是在等待输出/错误.
我也尝试将该过程放在后台,但是一旦我关闭终端,该过程也会被杀死.
那么当我关闭本地计算机时,如何让它保持运行?
最佳方案:
任何node.js专家都可以告诉我如何配置节点JS以在我的机器启动时自动启动服务器吗?我在Windows上
我们目前正在为一个客户开发一个网站(Apache下的TYPO3),该网站由node.js/socket.io应用程序提供支持,该应用程序为CMS提供的内容提供实时更新.
由于这是我们的第一个node.js项目,因此我在"完美设置"方面没有任何最佳实践,因此我花了一些时间研究部署技术.
我仍然有几个问题可以实现一个良好的设置:
易于部署客户.这一点非常重要,因为我们的网站将整合到他们的"实时"TYPO3安装中,该安装服务于大量网站,并且运行在不是由客户管理的服务器上,而是另一个(集中式)组织,它支持呼叫和服务器更改.进程缓慢.
应该很容易更新.如上所述,请求重新启动并进行服务器更改是一个缓慢的过程,因此理想情况下,节点安装应该在收到推送到实时安装的更改时重新启动/更新git.
部署
在普遍的共识似乎是使用forever,当涉及到部署节点的应用程序,防止他们逃跑.我已经测试了forever,并且在npm install forever -g(全局)安装时似乎工作正常.这需要外部协助来全局安装在实时环境中,所以我更喜欢从应用程序的node_modules目录运行它,但是我无法创建一个可靠的包装器来执行此操作.
此外,forever工作正常,但必须手动启动.什么是确保它在服务器启动时启动并保持运行的最佳方法?
init.d脚本?forever状态? 快速开发/重新启动更新
我们目前仍处于项目的开发阶段,每次我对node.js应用程序进行更改时,我都会手动重启node或forever.这有效,但远非理想.有几个较小的npm模块可以检查文件修改并node在检测到的更改时重新启动,例如:
有没有人有这些经验?
更新:你为什么不只使用群集?
该集群模块通过提供类似的功能重载机制,但不与节点0.5+工作.替换它的核心群集模块(节点0.6+)没有所有这些功能,只提供群集.而这反过来又不适合socket.io.至少没有使用Redis(这对我们来说是一个问题,因为我们不能强迫客户使用另一个先决条件服务).
-
显然,我正在尝试找到最稳定的解决方案,它将更新重启器与forever将项目交给客户之前结合起来,我真的希望有人能够生成经过验证的技术组合.
我在Linux服务器上运行4个独立的Node.js应用程序,这些应用程序具有不同的端口和前面的代理.
由于我(现在)是服务器中唯一的用户,因此无论我放置应用程序的位置以及如何运行它们都无关紧要.目前我的应用程序留在我家目录(下~/app1/,~/app2/等).
所以我的问题是:我应该在哪里放置应用程序,以便它们可以在多个用户之间共享?有类似的标准地方/var/www吗?