Node.jsの常駐化(永続化)で自動終了を防ぎ起動状態を保つ方法|foreverインストール時のエラー対応方法:pm WARN engine forever: wanted, npm ERR!

nodejs-prograshi(プロぐらし)-kv Node-js
記事内に広告が含まれていることがあります。

Node.jsで作成したアプリケーションはそのままの状態では、接続を切った後にサーバーも終了してしまいます。

このため、WEB上に公開している場合は接続を切ったと同時に、URLにアクセスしてもサーバーエラーでページが表示されなくなってしまいます。

これを防ぐために、常時Node.jsを起動し続けるようにするのが一般的です(常駐化といいます)。

ここでは、foreverを使ったNode.jsの常駐化についてまとめています。

foreverとは何か?

今回使用するforeverとは、node.jsをデーモン化(常に起動)しておくためのパッケージのことです。


foreverのインストール

foreverは次の2行(3行)のコマンドでインストールと起動が可能です。

#foreverのインストール
$ npm install -g forever

#forever起動
cd [node.jsの設定ファイルがあるフォルダパス]
forever start -w [設定ファイル名.js]

「-w」オプションをつけると、ファイルの変更内容を自動検知して再起動します。


インストール時のエラーと対応方法

foreverのインストール時に発生した下記のようなエラーが発生することがあります。

pm WARN engine forever@2.0.0: wanted: {"node":">=6"} (current: {"node":"5.0.0","npm":"3.3.6"})
npm WARN engine forever@2.0.0: wanted: {"node":">=6"} (current: {"node":"5.0.0","npm":"3.3.6"})
npm WARN engine forever-monitor@2.0.0: wanted: {"node":">=6"} (current: {"node":"5.0.0","npm":"3.3.6"})
npm WARN deprecated path-is-absolute@2.0.0: This package is no longer relevant as Node.js 0.12 is unmaintained.
npm ERR! Linux 4.14.173-137.229.amzn2.x86_64
npm ERR! argv "/home/ec2-user/.nvm/versions/node/v5.0.0/bin/node" "/home/ec2-user/.nvm/versions/node/v5.0.0/bin/npm" "install" "-g" "forever"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! code EMISSINGARG

nodeのバージョンは6以上が必要なのに、現在のバージョンは5なので対応していませんというエラーです。

現在の最新版がバージョン14なので、バージョンがかなり古いことがわかります。


エラー対応方法

nodeのバージョン管理ソフトnvmを使って、nodeのバージョンをアップデートすればエラーは改善します。

nvmのインストール

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

nvmへのパスを通す

$ . ~/.nvm/nvm.sh

nodeとnpmの最新版をインストール

$ nvm install node


##インストール完了(現在の最新版はv14.2.0)
Downloading and installing node v14.2.0...
Downloading https://nodejs.org/dist/v14.2.0/node-v14.2.0-linux-x64.tar.xz...

Checksums matched!
Now using node v14.2.0 (npm v6.14.4)

以上でnodeの最新版インストール完了です。


デフォルトで使用するバージョンの切り替え

一度サーバーから出て再度入ると、元の古いバージョンに戻ってしまうので、新しいバージョンをデフォルトに設定します。

#インストールされているnodeのバージョンを確認
$ nvm ls

->       v5.0.0
        v14.2.0
default -> 5.0.0 (-> v5.0.0)


#デフォルトのバージョンを変更(この例では v14.2.0)
$ nvm alias default v14.2.0

default -> v14.2.0


foreverをインストール

$ npm install -g forever


##下記のようなメッセージが出て完了
npm WARN deprecated path-is-absolute@2.0.0: This package is no longer relevant as Node.js 0.12 is unmaintained.
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
/home/ec2-user/.nvm/versions/node/v14.2.0/bin/forever -> /home/ec2-user/.nvm/versions/node/v14.2.0/lib/node_modules/forever/bin/forever
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/forever/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

+ forever@2.0.0
added 264 packages from 180 contributors in 11.002s

※基本的にオプションの「-g」をつけるようにしてください。
これがないと、インストールしたディレクトリ以外ではfoerverを実行できなくなります。


foreverの起動

#cdでnode.jsの設定ファイルのあるディレクトリに移動

$ forever start -w ファイル名.js

以上で完了修正は完了です。

お疲れさまでした。

タイトルとURLをコピーしました