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
コメント