AWS Lightsail(LAMPスタック)でNode.jsをサービス化。Apacheを使用したリバースプロキシ設定

AWS LightsailのLAMPスタックを使用してWEBサーバーとして本番運用している環境にnode環境を混在させる方法。

この記事では、AWS Lightsailで運用中のApacheとSSL設定済みのWebサーバーにNode.jsをサービス化し、特定のパスへのリクエストをNode.jsアプリケーションに転送するためのリバースプロキシを設定する手順を説明します。

前提条件

  • AWS LightsailでLAMPインスタンスが既に設定され、ApacheとSSLが設定済みであること。

手順

1. Node.jsのインストール

Node.jsをインスタンスにインストールします。

#curlが入ってなければインストール
sudo apt install curl
# nodeインストール
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install nodejs -y
node -v
npm -v

2. Node.jsアプリケーションの設置

Node.jsアプリケーションをサーバーに設置します。

app.js のサンプル:

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

IPアドレスはAWS LightsailローカルIPをしらべて指定します。http://172.○○.○○.○○:8124/

# IPアドレスを調べる
ip a

3. Node.jsアプリケーションのデーモン化

pm2 を使用してNode.jsアプリケーションをデーモン化します。

pm2はnodeのアプリケーションを永続化し、異常終了時に再始動などプロセスを管理してくれます。

# pm2
sudo npm install pm2 -g
pm2 -v
# pm2でサーバーを立ち上げ
pm2 start app.js  //立ち上げたいNodeサーバ

# pm2でデーモン化・立ち上がっているアプリの一覧
p2 list

# サーバー停止
pm2 stop app.js  //止めたいNodeサーバ

4. Apacheのリバースプロキシ設定

Apacheの設定ファイルを編集して、/api へのリクエストをNode.jsアプリケーションに転送するリバースプロキシを設定します。

以下は、/opt/bitnami/apache/confへの設定

(もう少し用意場所があるかとおもいますが、ここでは手っ取り早くconfの末尾に追記しました。)

既存の設定ファイルに最下部にリバースプロキシ設定を追記します。

IPアドレスはAWS LightsailのローカルIPを指定します。2のpythonサーバーと同じ値。http://172.○○.○○.○○:8124/

# Node.jsへのリバースプロキシ設定
ProxyPass "/api" "http://172.○○.○○.○○:8124/"
ProxyPassReverse "/api" "http://172.○○.○○.○○:8124/"

Apacheを再起動します。

systemctl restart httpd

これで、yourdomain.com/apiにアクセスするとNode.jsアプリケーションに転送され、それ以外のパス(例えば yourdomain.com/about)にアクセスすると、従来通りApacheのhtdocs配下のページが表示されます。

資料請求・無料相談はこちらから

ITのプロに相談してビジネスの成長スピードを上げてみませんか?

カンタン!1分でお問い合わせ

 フォームで問い合わせする