node.js - 如何保持 Node 应用程序运行?

标签 node.js ubuntu upstart forever

我终于完成了将我的一个项目转换为使用 Node.JS,但现在我在保持我的应用程序在服务器上运行时遇到了问题:/问题是,如果我关闭我的 putty session ,Node 就会停止。

我对这个问题做了很多搜索,似乎创建一个 upstart 脚本并使用 Forever 模块是可行的方法。

我开始谷歌搜索并创建了这个 Upstart 脚本:

#!upstart
description "Loner NodeJS app launcher"
author      "me@me.com"

start on startup
stop on shutdown

script
    export HOME="/root"
    exec sudo node /home/jjmpsp/server.js >> /home/jjmpsp/server.sys.log 2>&1
end script

然后我昨晚在服务器上运行 start app 并且当我关闭 putty session 时服务器保持运行。一切顺利。

但是,今天早上我来了,发现 Node 应用程序已停止,所以我检查了 server.sys.log 文件以查看发生了什么。在最终遇到此异常之前,该应用程序似乎运行良好:

debug: client authorized
info: handshake authorized fziLHZA3Vo9i55eubvOq

events.js:48
        throw arguments[1]; // Unhandled 'error' event
                       ^
Error: Connection lost: The server closed the connection.
    at Protocol.end (/home/jjmpsp/node_modules/mysql/lib/protocol/Protocol.js:73:13)
    at Socket.onend (stream.js:80:10)
    at Socket.emit (events.js:88:20)
    at TCP.onread (net.js:348:51)

今天我进行了更多的谷歌搜索,发现如果 NodeJS 应用程序意外退出,Forever 实际上会重新启动它。我尝试使用 npm install forever 安装模块,但我得到了这个巨大的错误列表:

jjmpsp@alex:~$ npm install forever
npm ERR! error installing forever@0.9.2 Error: No compatible version found: node-fork@'>=0.4.0- <0.5.0-'
npm ERR! error installing forever@0.9.2 No valid targets found.
npm ERR! error installing forever@0.9.2 Perhaps not compatible with your version of node?
npm ERR! error installing forever@0.9.2     at installTargetsError (/usr/local/lib/node_modules/npm/lib/cache.js:424:10)
npm ERR! error installing forever@0.9.2     at /usr/local/lib/node_modules/npm/lib/cache.js:406:17
npm ERR! error installing forever@0.9.2     at saved (/usr/local/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:136:7)
npm ERR! error installing forever@0.9.2     at Object.cb [as oncomplete] (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:36:9)
npm ERR! Error: No compatible version found: node-fork@'>=0.4.0- <0.5.0-'
npm ERR! No valid targets found.
npm ERR! Perhaps not compatible with your version of node?
npm ERR!     at installTargetsError (/usr/local/lib/node_modules/npm/lib/cache.js:424:10)
npm ERR!     at /usr/local/lib/node_modules/npm/lib/cache.js:406:17
npm ERR!     at saved (/usr/local/lib/node_modules/npm/lib/utils/npm-registry-client/get.js:136:7)
npm ERR!     at Object.cb [as oncomplete] (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:36:9)
npm ERR! Report this *entire* log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>
npm ERR!
npm ERR! System Linux 3.8.4-x86_64-linode31
npm ERR! command "node" "/usr/local/bin/npm" "install" "forever"
npm ERR! cwd /home/jjmpsp
npm ERR! node -v v0.5.11-pre
npm ERR! npm -v 1.0.106
npm ERR! Error: EACCESS, Permission denied 'npm-debug.log'
npm ERR! Report this *entire* log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>
npm ERR!
npm ERR! System Linux 3.8.4-x86_64-linode31
npm ERR! command "node" "/usr/local/bin/npm" "install" "forever"
npm ERR! cwd /home/jjmpsp
npm ERR! node -v v0.5.11-pre
npm ERR! npm -v 1.0.106
npm ERR! path npm-debug.log
npm ERR! code EACCESS
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/jjmpsp/npm-debug.log
npm not ok

我应该采取什么步骤来解决这个问题?我完全没有想法。我一直在谷歌上搜索各种技术细节,但一无所获。

非常感谢任何帮助:)

最佳答案

  1. 首先,您应该关注导致 Node 服务器崩溃的原因。永远不会“解决”问题。每次 Node 退出/重新启动时,它都会导致问题,您的用户可能会丢失数据。 upstartforever 只是创可贴。 (事实上​​,Upstart 会重启你的服务器,但如果你的服务器没有保持运行,它就会放弃。)

    找到/修复每个错误源并编写回归测试套件以验证之前的每个问题都已修复的唯一长期解决方案。

  2. 启动时启动 will not work

  3. 您的 forever 安装因权限问题而中断。尝试 sudo npm install -g forever 先进的: 您的整个服务器设置应该编写脚本。这样你就可以设置一个镜像生产的测试/登台服务器。一种简单的方法是 Vagrant .您可以在服务器上的同一操作系统上“本地”开发。您可以测试诸如“node 是否在我重启时出现?”之类的测试。或者“如果服务器被摧毁,我可以从基本操作系统重新创建我的服务器吗?”

关于node.js - 如何保持 Node 应用程序运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16497610/

相关文章:

scala - sbt 下载组件失败

node.js - 在机器启动时启动 Node 服务器

node.js - Upstart 和 init.d 优先级

node.js - 错误 : ENOENT, 打开 favicon.ico

php - 多语言网站和机器人检测

ubuntu - 需要帮助在 Ubuntu 中设置 Rubymine 4.5 的配色方案

linux - 如果我使用 "sudo start service_name"启动服务,我该如何检查(稍后)它是否正在运行?

linux - Angular/快速托管

multithreading - 在 Node 模块中使用集群

c - 如何使用Makefile编译并运行这个C程序?