web-dev-qa-db-ja.com

PM2がNodeプロセスを起動しないのはなぜですか?

以前はPM2の実装に成功していましたが、現在は成功していません。

私のノードアプリdoes手動で開始した場合は問題なく実行されますが、PM2 appearsで開始しても、PM2を介して実行することはできません。これが私の意味です:

Pm2 start server/index.jsを実行すると、ターミナルの応答は次のようになります。

$ pm2 start server/index.js
[PM2] Spawning PM2 daemon with pm2_home=c:\pm2_system\.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting D:\Program Files\nodeApps\service-management-api\server\index.js in fork_mode (1 instance)
[PM2] Done.* 

次に、端末はアプリ情報を含むテーブルを出力します。ここに貼り付けられているようには見えないので、リストアップします。

App Name: index
id: 0
version: 1.0.0
mode: fork
pid: 8984
status: online
restart: 0
update 0s
cpu: 0% 
mem: 26.0 MB
user: ME
watching: disabled

ノードプロセスが実行されているようです。しかし、すぐにpm2 listと入力すると、実行中のプロセスは表示されません。 pm2停止インデックスを入力すると、次のように表示されます。

$ pm2 stop index
[PM2] Spawning PM2 daemon with pm2_home=c:\pm2_system\.pm2
[PM2] PM2 Successfully daemonized
[PM2][ERROR] Process index not found

または、コマンドでecosystem.config.jsを使用すると、同様の結果が得られます。試したコマンドは次のとおりです。

pm2 reload ecosystem.config.js
pm2 start ecosystem.config.js

これらのコマンドを実行した結果の例:

$ pm2 start ecosystem.config.js
[PM2] Spawning PM2 daemon with pm2_home=c:\pm2_system\.pm2
[PM2] PM2 Successfully daemonized
[PM2][WARN] Applications sm_api not running, starting...
[PM2] App [sm_api] launched (2 instances)

また、CLIは、ステータスが「オンライン」で「監視中」の2つのインスタンスを示すテーブルを出力します。それでも、アプリが実行されておらず(ブラウザからテストされた場合)、「pm2 show」は次を返します:

[PM2] Spawning PM2 daemon with pm2_home=c:\pm2_system\.pm2
[PM2] PM2 Successfully daemonized
[PM2][WARN] <app name> doesn't exist

私のpm2で何がおかしいのか手がかりはありますか?

ここに私の生態系.config.jsファイルがあります:

module.exports = {
  apps : [{
    name: 'sm_api',
    script: 'server/index.js',
    "log_date_format"  : "YYYY-MM-DD HH:mm Z",

    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    args: 'one two',
    instances: 'max',
    error_file : "C:\\pm2_system\\.pm2\\logs\\sm-api-error",
    out_file: "C:\\pm2_system\\.pm2\\logs\\sm-api-out",
    autorestart: true,
    watch: "../",
    max_restarts: 10,
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'development'
    },
    env_production: {
      NODE_ENV: 'production'
    },
    exec_mode: 'cluster'
  }],
};

Windows Server 2012環境で実行されています。 pm2を動作させた後、pm2-windows-serviceパッケージを追加するつもりであることに注意してください。

5
mike_butak

回避策として、以下を使用しました。

pm2 start --no-daemon app.js

1
Ximena Quiroga