我目前正在Google Compute Engine上运行node.js服务器,但是当我退出时它总是会关闭。
是否有将服务器保留在后台的最佳做法?我不想尝试首先尝试我发现并使用它,因为我不知道可靠性的后果等。
我见过人们使用nohup,而且永远都是。但我不确定专业服务器是如何做到的,比如twitter / facebook服务器。
答案 0 :(得分:3)
因此,在大多数服务器环境中这都是相同的,但细节会根据您使用的操作系统而有所不同。
您正在查看的常规组件将是您的Web服务器(例如apache,nginx),您的流程管理器(例如pm2或init.d)以及您的应用程序。
Web服务器是可选的,但在生产环境中推荐使用,因为它可以处理缓存和静态文件服务之类的事情,在大多数情况下比在节点进程中更高效。
进程管理器将在您注销时保持进程运行(并在服务器重新启动或进程崩溃时重新启动);通常他们通过将应用程序作为非登录服务帐户运行(这是理想的,因为您可以通过这种方式降低权限)。
这里有CentOS的分步示例:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-centos-7如果您想获得有关如何操作的命令行信息。
答案 1 :(得分:2)
您可以使用pm2(Node.js的流程管理器)在后台运行应用程序以进行生产部署。
正如该项目的README所说:
$ npm install pm2 -g $ pm2 start app.js
你的应用程序现在被置于后台,被监控并永远保持活着。
您可以在project's home page上看到更多信息,功能,屏幕截图等。
作为替代方案,由于您使用的是Google云端平台,请查看可以运行和管理您的Node.js应用的Google Managed VMs(除了其他语言) - 请参阅{{3更多信息。
注意:截至撰写本文时(2015年12月3日),Getting started guide for Node.js,表示:
这是托管虚拟机的Beta版本。任何SLA或弃用策略都不涵盖此功能,并且可能会受到向后不兼容的更改