16
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PM2の簡単な使い方と環境によるアプリ名の変更など

Last updated at Posted at 2018-05-11

node.jsアプリの本番運用に便利なPM2。その基本的な利用方法と応用(自分ニーズ)のメモ。

基本操作

インストール

npm install -g pm2

環境によってはsudoする必要があります。

起動

pm2 start index.js

リスト

pm2 list
┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬──────────┬────────┬──────────┐
│ App name │ id │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem      │ user   │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼──────────┼────────┼──────────┤
│ index    │ 0  │ fork │ 47551 │ online │ 0       │ 0s     │ 2%  │ 9.8 MB   │ hoge   │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴──────────┴────────┴──────────┘

restart

pm2 restart index #app name

delete

pm2 delete index #app name

logを見る

pm2の場合、console.log()の出力はログファイルに出力されるようです。

pm2 logs

pm2 --lines 100 #行数指定
pm2 flush #全ログのクリア

pm2 logs app_name という感じでアプリ名を指定することもできるようです。

応用1:環境により動作を切り替えたい

素のnodeなら、下記のようにすればいいのですが、PM2だと設定ファイルを用意する必要があります。

NODE_ENV=development node index.js

なお、素のnodeで環境変数を設定・利用する方法についてはこちらを参考にしてください。

設定ファイル

例えば、下記のような設定ファイルを用意します。

pm2.config.json
{
	"name" : "app",
    "script" : "index.js",
    "env" : {
        "NODE_ENV" : "development",
    },
    "env_production" : {
        "NODE_ENV" : "production",
    }
}

設定ファイルを利用した起動

設定ファイルを利用して下記のように起動できます。

pm2 start pm2.config.json --env production

応用2:環境により起動App nameを変更したい(管理上の問題)

設定ファイルは便利なのですが、環境毎に起動アプリ名を指定する方法がわからなくて調べました。

下記のようにname変数も環境毎の変数として記述すればよいようです。

pm2.config.json
{
    "script" : "index.js",
    "env" : {
        "NODE_ENV" : "development",
        "name" : "app_test"
    },
    "env_production" : {
        "NODE_ENV" : "production",
        "name" : "app_pro"
    }
}

起動

pm2 start pm2.config.json --env production

┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬──────────┬────────┬──────────┐
│ App name │ id │ mode │ pid   │ status │ restart │ uptime │ cpu │ mem      │ user   │ watching │
├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼──────────┼────────┼──────────┤
│ app_pro  │ 0  │ fork │ 48616 │ online │ 3       │ 0s     │ 0%  │ 9.8 MB   │ hoge   │ disabled │
└──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴──────────┴────────┴──────────┘

App nameが環境に応じたものになっています。

同じポートを利用していたらエラーとなります。状況にもよりますが、実際は環境により起動ポートを変えたりします。

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?