Dotcloud的NodeJS supervisord.conf不工作(Dotcloud nodej

2019-10-17 04:08发布

我一直试图让被监督者进行监视我的服务器的NodeJS进程,但我有越来越supervisord.conf工作的问题。 当我部署,我收到以下错误:

WARNING: The service crashed at startup or is listening to the wrong port. It failed to respond on port "node" (42801) within 30 seconds. Please check the application logs.

然而,当我ssh到dotcloud服务器和手动启动该进程的NodeJS,它运行得很好,这表明主管未能启动的节点实例。

我supervisord.conf看起来是这样的:

[program:node]
command = node /home/dotcloud/current/app/server.js
autostart=true
autorestart=true

而我的目录结构如下:

.dotcloudignore
dotcloud.yml
.gitignore
app/
app/package.json
app/server.js
app/supervisord.conf

在这一点上,我看不到我在做什么错了,因为这似乎是概括的相同的目录结构在这里 ,让我不知所措的解决办法是什么我种。 有任何想法吗?

编辑:

在尝试了之后supervisorctl status ,我得到以下几点:

node                             FATAL      Exited too quickly (process log may have details)

我发现,在/ var /日志/主管,我收到以下错误信息:

module.js:337
    throw new Error("Cannot find module '" + request + "'");
          ^
Error: Cannot find module '/home/dotcloud/current/app/server.js'
    at Function._resolveFilename (module.js:337:11)
    at Function._load (module.js:279:25)
    at Array.0 (module.js:484:10)
    at EventEmitter._tickCallback (node.js:190:38)

我不知道是什么原因造成这一点。

Answer 1:

调查问题后,它看起来像问题来自这样一个事实来dotcloud.yml指定approot: app 。 在这种情况下,一定要注意是有用的:

  • /home/dotcloud/code将指向整个代码库;
  • /home/dotcloud/current将指向为approot(更具体地说, /home/dotcloud/current将是一个符号链接到为approot,即code/app在这种情况下)。

因此, supervisord.conf不应包含:

command = node /home/dotcloud/current/app/server.js

但反而:

command = node /home/dotcloud/current/server.js

关键是在Node.js的日志本身,因为Node.js的是抱怨无法找到/home/dotcloud/current/app/server.js



文章来源: Dotcloud nodejs supervisord.conf not working