Node.js foreverでデーモン化(永続化)する

Node.jsで作ったアプリをエックスサーバー上で常に動くようにしたかったので forever をインストールしてデーモン化(永続化)してみました。

foreverインストール

以下のインストールコマンドでforeverをインストールします。

$ npm install -g forever

アプリ実行

アプリのディレクトリ内で実行するかディレクトリ名などオプションで指定して実行します。

$ forever start ./bin/www
$ forever start --workingDir /home/xxx/example-app -c "npm start" ./

実行すると以下のメッセージが表示されます。

$ forever start --workingDir /home/xxx/example-app -c "npm start" ./
warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: ./
(node:21914) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:21914) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency

動いているプロセス確認

$ forever list

確認用コマンドを実行すると動いているプロセスの一覧などが返ってきます。

$ forever list
(node:84411) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:84411) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
info:    Forever processes running
data:        uid  command   script forever pid   id logfile                     uptime
data:    [0] utcD npm start        82748   82956    /home/xxx/.forever/utcD.log 0:0:0:7.167

停止

$ forever stop 0

プロセスを停止する場合は、”forever list” で確認したプロセスの一番左に表示される番号を指定して停止します。

$ forever stop 0
(node:97563) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:97563) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
info:    Forever stopped process:
    uid  command   script forever pid   id logfile                     uptime
[0] utcD npm start        82748   82956    /home/xxx/.forever/utcD.log 0:0:3:49.43000000000001

停止コマンド実行後にリストを確認すると以下のように動いていないことが確認できます。

$ forever list
(node:3353) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
(Use `node --trace-warnings ...` to show where the warning was created)
(node:3353) Warning: Accessing non-existent property 'padLevels' of module exports inside circular dependency
info:    No forever processes running

動作環境情報

エックスサーバー(x10)
node 14.17.3
npm 6.14.13
forever 4.0.1

コメント

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