LoginSignup
3
4

More than 5 years have passed since last update.

nodeのデバッグ実行を有効にしてforeverで稼働させる

Last updated at Posted at 2017-09-17

nodejsを開発する際、デバッグ実行するためにはnodeをデバッグモードで実行する必要がありますが、foreverでnodeが稼働している環境での設定をしてみました。

なお、Visual Studio Codeでnodejsをデバッグする方法はこちら
Visual Studio Codeでリモートサーバー上のNodejsをデバッグする
になります。
ChromeでもChrome Debugging Protocolを利用してデバッグ可能です。

環境

MacOS 10.12.6 (Sierra)
Nodejs:7.10.1
npm:4.2.0

下準備

  • デバックしたいNodejsがforeverで稼働していること。
  • リモートサーバー等ローカル以外で稼働している場合、対象サーバーの下記で設定するデバッグ用のポートが開放されていること。

nodejsのデバッグ設定

nodejs単体でのデバッグ実行は下記のようなコマンドになります。

node --inspect[=[host:]port]

[=[host:]port]を指定しない場合、デフォルトでは127.0.0.1:9229に設定されます。

ローカルだけでなく、別サーバーで稼働中のnodeをデバッグしたい場合は
[=[host:]port]の部分に192.168.33.10:9229のように接続元のIPとポートを設定する必要があります。
また、特にIPを制限しない場合の設定は下記になります。
(デバッグモードにしないと思いますが、本番稼働中のサーバーの際は気をつけて下さい)

node --inspect=0.0.0.0:9229

起動すると下記のような起動時にログが流れます。

Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
    chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=0.0.0.0:9229/bd58f05d-b341-4d0f-8a31-03640a747d62

のようなログが出ればデバック準備可能です。
※起動ログに実験的な機能と記載されています。将来仕様が変わる可能性があります。
また、記載されているURLを利用してchromeでもデバックできます。(IPの部分は稼働サーバーのアドレスに変更必要です)

foreverでnodejsのデバッグ設定

上記設定をfoeverの起動時に指定します。
通常foreverで起動する際には

forever start app.js

のようにfoeverのアクションとエントリーポイントのjsファイルのみの指定となります。

これをforeverのオプション-cを利用してnodeをオプション付きで指定します。

forever -c 'node --inspect=0.0.0.0:9229' app.js

この設定でnodeがinspectオプション付きで実行されます。
同様にログファイルの指定等も利用できるようになります。
下記はforeverのファイル監視オプションと同時にnodeのログファイル指定、デバッグモードの設定をつけた例です。

forever -w -l /var/log/node/forever.log -c 'node --inspect=0.0.0.0:9229' app.js

package.jsonのstart項目で指定する場合は下記のようになります。
※下記はforeverをグローバルインストールしていないのでmoduleまでのパスを追記しています。

{
  "name": "manjii_app",
  "scripts": {
    "start": "NODE_ENV=development node_modules/forever/bin/forever -w  -l /var/log/node/forever.log -c 'node --inspect=0.0.0.0:9229' server.js"
  },
  "dependencies": {
    "express": "4.13.3",
  }
}

なお、上記を利用しているサンプルは下記においています。
https://github.com/manjiii/Vagrant-samples/tree/master/Skeleton-nginx-nodejs-mongodb

参考サイト

nodejs公式
Node.js v8.5.0 Documentation
※8.5.0となっていますが--inspectオプショはv6.3.0から使えるようです。
githubのforever公式
foreverjs/forever

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4