0

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.

ただし、dotcloud サーバーに ssh して 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/log/supervisor で、次のエラー メッセージが表示されることがわかりました。

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)

何が原因なのかわかりません。

4

1 に答える 1

2

問題を調査した結果、この問題はdotcloud.yml指定されapproot: appた . その場合、次のことに注意すると便利です。

  • /home/dotcloud/codeコードリポジトリ全体を指します。
  • /home/dotcloud/currentapproot を指します (具体的に/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

于 2012-08-28T23:07:05.397 に答える