くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Node.jsアプリのデーモン化のためにPM2に入門してみる

Node.jsアプリをバッチ処理とかしたいなと思い、
いろいろ調べてみたときの備忘録(*´ω`*)

PM2を使うのがよいっぽい(*´ω`*)

PM2とは

PM2はデーモンプロセスマネジャーらしい。
Node.jsで動作するが、Node.js以外の起動できるっぽい。

PM2 is a production process manager for Node.js applications with a built-in load balancer. It allows you to keep applications alive forever, to reload them without downtime and to facilitate common system admin tasks.

PM2は以下のことができるらしい。

  • バックグラウンドで動作するアプリのstart/restartなどが簡単にできる
  • ファイル変更/メモリ使用量/CRONなどのrestart戦略が指定できる
  • systemdなどの自動起動スクリプトを生成できる
  • Node.jsのcluster moduleを使ってスケールできる
  • JS製のPM2 APIで操作できる

使い方

Quick Start

# インストール
$ npm install pm2@latest -g

# アプリの起動などの操作
$ pm2 start app.js
$ pm2 restart <app_name>
$ pm2 reload <app_name>
$ pm2 stop <app_name>
$ pm2 delete <app_name>

# 一覧の表示
$ pm2 list

# ログの表示
$ pm2 logs

# 設定ファイルの生成
$ pm2 ecosystem
$ ls ecosystem.config.js
$ pm2 start ecosystem.config.js

# 自動起動用スクリプトの生成など
$ pm2 startup
$ pm2 save
$ pm2 unstartup

設定ファイル

pm2コマンドを使わなくても設定ファイルで管理もできる

module.exports = {
  apps : [{
    name   : "app1",
    script : "./app.js"
  }]
}

TypeScriptの利用

速度の問題のため推奨はされていないけど、
transpileなどもしてくれるらしい。

$ pm2 install typescript
$ pm2 start index.ts

Ecosystem Fileの型定義はなさそうな感じなのかな?


以上!! とりあえず、概要はわかった気がする(*´ω`*)

参考にしたサイトさま