Node/ExpressアプリケーションをPM2で稼働させようとしています。次のコマンドでアプリケーションを正常に起動できます:npm start
これにより、ポート3000でアプリが正常に起動します。
pm2 start app.js
でアプリケーションを起動しようとすると、ログに次のように表示されます。
{ online: true, success: true, pid: 10714, pm2_version: '0.8.15' }
2014-06-12T19:52:06.789Z : [[[[ PM2/God daemon launched ]]]]
2014-06-12T19:52:06.800Z : RPC interface [READY] on 6666:localhost
2014-06-12T19:52:06.801Z : BUS system [READY] on 6667:localhost
2014-06-12T19:52:06.978Z : Entering in node wrap logic (cluster_mode) for script /home/user/test/app.js
2014-06-12T19:52:07.115Z : /home/user/test/app.js - id0 worker online
私のbin/wwwファイルには、ポートを指定する次のものがあります。
app.set('port', process.env.PORT || 3000);
export PORT=3000
も実行してみました
また、bin/wwwには次のものがあります。
app.set('port', 3000);
netstat -an | grep 3000
を実行すると、何も返されません。
Expressを使用している人にとって、これに対する答えは次のコマンドを実行することです。
pm2 start ./bin/www
私は走っていましたpm2 start app.js
動作しませんでした。
app.set('port'...
呼び出しは直接関係ありません。 app.set
は、キー/値の設定を格納する場所ですが、それ自体では機能がありません。あなたが見たいのは、app.listen
を呼び出す場所です。これは、その関数がポートを引数として受け入れるためです。
同様の問題が発生しました。nginxがプロキシサーバーとして構成されていると、PM2で実行されているExpressアプリが表示されませんでした。 ~/.pm2
フォルダーを削除すると、機能しました。
私はこれを使います
pm2.json
[
{
"exec_mode": "fork_mode",
"cwd" : "/opt/acme_service",
"script": "acme_service.js",
"name": "acme_service",
"restart_delay":"9000",
"port" : 8081,
"node_args": [ "--acme" ],
"error_file": "/var/log/acme_service.err.log",
"out_file": "/var/log/acme_service.out.log"
}
]
"port":8081-ポート接続を受け入れます。アプリでも同じ
var server = app.listen(8081 , '0.0.0.0');