nodeコマンド以外の起動コマンド(node-dev/forever/npm start/npm test)
通常Node.jsでのスクリプト起動コマンドはnodeコマンドです。しかし、nodeコマンドは下記の理由で使いづらい点があります。
- リソースの変更時には、スクリプトの停止・起動が必要
- エラー等によって停止してしまい、永続しない
加えてnpmコマンドからの起動方法についてもまとめました。
node-dev
開発時に使えるコマンドです。リソースの変更時に自動的に読込みし直してくれます。
インストールと実行方法は以下の通り。
$ npm install node-dev -g
$ node-dev app.js
forever
スクリプトを永続的に起動してくれます。実際のサービス時に使えそうです。
$ npm install -g forever $ forever start app.js
listコマンドで実行中のスクリプトを確認できたり、restartで再起動もできます。
$ forever list info: Forever processes running data: uid command script forever pid logfile uptime data: [0] 4Cn2 /root/nvm/v0.8.6/bin/node app.js 28142 28144 /root/.forever/4Cn2.log 0:0:17:25.840 $ forever restart 4Cn2 info: Forever restarted process(es): data: uid command script forever pid logfile uptime data: [0] 4Cn2 /root/nvm/v0.8.6/bin/node app.js 28142 28144 /root/.forever/4Cn2.log 0:0:17:38.543
npm start/npm test
npmコマンドはモジュールのインストールだけでなく、様々なオプションが使えます。
参考)npm についてまとめてみる - need something more...
上記のnode-dev/foreverを使い、
- 開発環境ではnpm testコマンド
- 本番環境ではnpm startコマンド
で起動できるようにしてみました。
※多分testオプションはモジュールやスクリプトの単体・結合テストをするものだと思いますので、本来の使い方とは違うと思います。
package.json
{ "name": "application-name", "version": "0.0.1", "private": true, "scripts": { "start": "NODE_ENV=production forever start app.js", "test": "node-dev app.js" }, "dependencies": { "express": "3.0.0rc2", "ejs": "*", "mongodb": "~1.1.2", "xmlhttprequest": "~1.4.2", "bcrypt": "~0.7.1" } }
startコマンド時は、環境変数NODE_ENVにproductionを設定しています。