Express.js(Node.js)をバックグラウンド実行させるにはforeverが便利

永遠

※当サイトはアフィリエイト広告を利用しています

Express.jsをバックグラウンド実行させるにはforeverが使い勝手がよいです。

外部サーバで永続的に実行させたいときにおすすめです。

GitHub – foreverjs/forever: A simple CLI tool for ensuring that a given script runs continuously (i.e. forever)

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が出力されると起動しています。

forever list

logfileを参照すると実行されているscriptのコンソールログを見ることができます。

Express.jsを停止

forever stop ./bin/www

使い勝手がよいので是非お試しください。

なお、開発時はnodemonが便利なので、以下の記事もおすすめです。

自作アプリケーション初心者にはさくらVPSが手軽でおすすめ

1 個のコメント

  • foreverはnpm startを実行すると
    ‘NODE_ENV’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    NODE_ENV=production forever start ./binは頭にSETとか必要なんでしょうか?

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA


    ABOUT US

    ケネ
    はじめまして、ケネです。

    Node.jsの技術情報を書いています。

    一人でも多くの方と「自分でもできた」感覚を共有したいので、なるべくわかりやすく、実体験ベースでのブログを心がけています。
    技術で自分の世界を広げましょう。

    不明点や質問があればお気軽にコメントください。