EC2上でnode.jsをインストール、WEBサイト構築メモ

 

EC2にnode.jsをインストールしてWEBサービスを起動する方法

ネットワーク回り、EC2の構築などの基本はこの記事では除外する。

 

①EC2が動く状態にする。

省略

 

②EC2にリモートログイン

省略

 

②node.jsをグローバルにインストールする準備

yumのリポジトリにはnode.jsが無いので、まずはリポジトリ登録してから。

公式ページに載っている。Installing Node.js via package manager | Node.js

curl --silent --location https://rpm.nodesource.com/setup_9.x |sudo bash - 

 

③node.jsをグローバルにインストールする。 

sudo yum -y install nodejs

 

③デーモン化するパッケージ foreverをインストール

sudo install -g forever

 

④foreverでデーモン登録

cd プロジェクトルート

sudo forever start app.js

 

⑤foreverで動いているプロセスの状態を確認

sudo forever  list

 

⑥サーバーのリッスン状態を確認

sudo lsof -i -n -P

 

 

ちなみに、node.jsでWEBサーバーをウェルノウンポート80で起動する方法

普通、スクリプト内でポート80を指定、listen(80) で実行すると、権限不足のエラーになる。これはsudoで実行すれば解決するらしい。

sudo node app.js

あとは、sudo で実行するのをデーモン化すれば良いことになる。

ただし、sudoで実行するとプロセスの所有者がrootになっているのが危険らしい。

下記参考サイトに則って、listenメソッドの中で別ユーザーにプロセスを引き継ぐとよいらしい。

 

 

 

foreverのデーモン登録を自動起動する方法 

①initd-foreverというのを使うらしい。そのインストール方法。

sudo npm install -g initd-forever

 

②プロジェクトルートで、起動スクリプトを作成する。

cd <プロジェクトルート>
sudo initd-forever -n <プロジェクトルート>

③起動スクリプトの中身を編集して、エントリポイントになるスクリプトファイルを指定する。

nodeApp="/home/<ユーザー名>/<プロジェクトルート>/app.js"

 

※特に修正する必要がなかった。プロジェクトにnpm initして、package.jsonのstartコマンドに node app.jsを登録してあったからなのか?

 

④起動スクリプトを実行可能にして、init.dディレクトリに置く。

sudo chmod +x <プロジェクトルート>

 

sudo mv <プロジェクトルート> /etc/init.d

※シンボリックリンクを入れる方が普通?

 

⑤サービスを有効化する。


    sudo chkconfig --add <プロジェクトルート>
    sudo chkconfig <プロジェクトルート> on
    sudo chkconfig <プロジェクトルート> --list
    sudo service <プロジェクトルート> start

 

 

 

以下、参考サイト

 

 

参考サイト① node.jsをec2のyumに登録する方法

Installing Node.js via package manager | Node.js ※Debian系、RedHat系などURLや登録方法の違いに応じて丁寧に説明されている。

 

参考サイト② 80番ポートで登録して、一般ユーザーにプロセスを引き渡す方法

qiita.com

 参考サイト③ foreverのデーモン化を自動起動する方法

qiita.com

 

 

 

ブログ再開した。!!