19
20

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.

Node.js アプリケーションを本番Apache環境でPM2を使って起動する

Last updated at Posted at 2018-04-24

Node.js のアプリケーションを本番環境に反映するためにPM2を導入する方法です。

Node.js を本番サーバーで立ち上げる際に気にしていたこと

アプリケーションを本番環境で起動させるにあたり、気にすべきことは山ほどあると思います。
今回、Node.js のアプリケーションということでアプリケーションサーバーの立ち上げが必要でした。

  • デーモン化した状態で起動させること
  • プロセス管理ができること
  • 更新時の手間がかからないこと

などを基準として、選定したのがPM2でした。

PM2とは

PM2は、Node.js を本番環境で起動するためのもので、プロセスをデーモン化したりの起動を管理することができるツールです。
Githubのリポジトリはこちらです。

PM2には、主にこのような機能があります。

  • プロセス管理
  • クラスタリング
  • 内臓のモニタリングUI

また、Keymetrics という名前で、有償版が存在しているのもメリットだと思います。
それ以外にも良いところがたくさんあるので、興味がある方は公式ページをご覧ください。
http://pm2.keymetrics.io/

導入方法

ここからが本題です。
まずは大まかな手順をお伝えします。

  1. サーバーに Node.js をインストールする(今回は省略します)
  2. PM2をインストールする
  3. Apache から Node.js のアプリケーションサーバーにProxyを設定する
  4. PM2経由で Node.js アプリケーションを起動する

1. サーバーに Node.js をインストールする

Node.js をインストールする方法は様々で、説明しだすと1つ記事が出来上がるほど説明が長くなるので、今回は省略させていただきます。
ちなみに私は、nodebrew を使用しました。

2. PM2をインストールする

PM2のインストールはとても簡単で、下記コマンドを実行するだけでパッケージがインストールされます。

# npm
npm install pm2 -g

# yarn
yarn global add pm2

ただ、yarn を経由して pm2 をインストールした方や、nodenv や nodebrew を使用して Node.js をインストールした方は、
実行環境に PATH が通っていない可能性があります。
試しに、こちらのコマンドを実行してみてください。

which pm2

これでパスが表示されれば良いのですが、PATHに含まれていないエラーが出た場合はパスを通す必要があります。
インストールした方法で、グローバルインストールされたフォルダがどこにあるかを調べてパスを通してください。

3. Apache から Node.js のアプリケーションサーバーにProxyを設定する

Node.js のアプリケーションを立ち上げる場合、Proxy経由で localhostに接続しなければ、
ファイルを直接叩きにいってしまうので、Proxyを設定する必要があります。

Apache の conf ファイルに下記の記述を追加してください

ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/

Locationディレクティブの中に書くのであれば、このようになります。

<Location />
    ProxyPass http://localhost:3000/
    ProxyPassReverse http://localhost:3000/
</Location>

設定が終わったら忘れずにhttpdをリスタートしてください。

service httpd restart

これで Node.js のアプリケーションが待ち構えているポートにProxy経由でアクセスすることができます。

4. PM2経由で Node.js アプリケーションを起動する

いよいよアプリケーションの立ち上げです。 

pm2 start /path/to/app.js -n 'application_name'

これでアプリケーション名を指定した状態で立ち上げることができます。
プロセスが立ち上がっているかを確認するには下記のようにします。

pm2 list

アプリケーションが立ち上がっていれば、立ち上がっているアプリケーションの情報が表示されます。

もし、Node.js をCoffeescriptなどで記述している場合は、下記のコマンドで立ち上げます。

pm2 start /path/to/bin/www -n 'application_name'

終わりに

Node.js を使用したアプリケーションは、増加傾向にあります。
Rails でAPIサーバーを立てて、アプリケーション側は Node.js というのも多くなってきていますし、
Ionicなどのモバイルアプリケーションを開発するためのフレームワークも Node.js をベースにして作られています。
それらを本番化する際に役立てていただければ幸いです。

19
20
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
19
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?