Express.jsをバックグラウンド実行させるにはforeverが使い勝手がよいです。
外部サーバで永続的に実行させたいときにおすすめです。
Contents
foreverの永続化が便利
手順としてはforeverをサーバーにnpmからインストールしてforever startコマンドを実行するだけです。
npmからforeverをインストールします。
npm install forever -g
forever startコマンドで起動。Express.jsの場合はプロジェクトフォルダからbin/wwwを実行します。
forever start ./bin/www
この時点でコマンドが打てるようになっているはずです。サーバとの接続を切っても永続的に実行されます。
productionモードで起動する
Express.jsには開発・本番モードがあります。本番運用では本番モードで実行することがおすすめです。
以下のようにforever startの前にNODE_ENV=productionを記載すればOKです。
NODE_ENV=production forever start ./bin/www
起動コマンドをpackage.jsonに記載する
開発をしているとNODE_ENV=productionをつけ忘れたり、foreverのコマンドを思い出せないことが出てきます。
起動コマンドはあらかじめpackage.jsonに記載しておくと忘れてしまっても確認できるので便利です。
プロジェクトフォルダにあるpackage.jsonのscriptsに起動コマンドを追記します。
JSON形式で”scripts”の”start”に起動コマンドを記載します。
{ "name": "shark", "version": "0.0.0", "private": true, "scripts": { "start": "NODE_ENV=production forever start ./bin/www", "test": "nodemon -e ejs,js,json start ./bin/www" }, "dependencies": { "ejs": "~2.5.7", "express": "^4.16.4" } }
上記のように記載しておくと、npm startでコマンド実行するとforeverコマンドが実行されます。
package.jsonがない場合はnpm initで作成することができます。
scriptsのtestの部分は開発時のnodemonを利用した起動コマンドです。別記事で詳細を解説しています。
Express.jsの起動はnodemonが便利 – Node.jsで暗号資産アービトラージ
foreverの使い方
foreverのよく使うコマンドです。
Express.jsを起動
forever start ./bin/www
Foreverで実行中のscriptを確認
forever list
以下のようにinfo:Forever processes runningが出力されると起動しています。
logfileを参照すると実行されているscriptのコンソールログを見ることができます。
Express.jsを停止
forever stop ./bin/www
使い勝手がよいので是非お試しください。
なお、開発時はnodemonが便利なので、以下の記事もおすすめです。
自作アプリケーション初心者にはさくらVPSが手軽でおすすめ
foreverはnpm startを実行すると
‘NODE_ENV’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
NODE_ENV=production forever start ./binは頭にSETとか必要なんでしょうか?