以前は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パッケージを追加するつもりであることに注意してください。
回避策として、以下を使用しました。
pm2 start --no-daemon app.js