Express.js のアプリを複数起動する - AlmaLinux

  • 作成日:
  • 最終更新日:2025/06/25

Express.js のアプリを複数起動する方法

Apache をプロキシサーバーとして利用します。Express.js のアプリを pm2 を利用して複数起動する設定方法です。

動作状況は、VirtualBox に AlmaLinux をインストールして確認しました。

アプリはユーザーのホームディレクトリに保存しています。

Express-generator でスケルトンを作成します。以下のコマンドを実行し、アプリを二つ作成します。

express -e app1
express -e app2

それぞれのアプリのapp.jsを以下のように変更します。

app1/app.js

app.use('/app1', indexRouter);

app2/app.js

app.use('/app2', indexRouter);

また、それぞれのアプリのbin/wwwも以下のように変更します。

app1/bin/www

var port = normalizePort(process.env.PORT || '3010');

app2/bin/www

var port = normalizePort(process.env.PORT || '3011');

Apache の設定

プロキシサーバーとしての設定をします。「 /etc/httpd/conf.d/exproxy.conf 」というファイルを作成し、設定をします。

sudo vi /etc/httpd/conf.d/exproxy.conf

「 /etc/httpd/conf.d/exproxy.conf 」を以下のように編集します。

/etc/httpd/conf.d/exproxy.conf

<VirtualHost *:80>
  # App1
  ProxyPass /app1 http://127.0.0.1:3010/app1
  ProxyPassReverse /app1 http://127.0.0.1:3010/app1

  # App2
  ProxyPass /app2 http://127.0.0.1:3011/app2
  ProxyPassReverse /app2 http://127.0.0.1:3011/app2
</VirtualHost>

ファイヤーウォールの設定を変更します。

sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --reload

SELinux を無効にしておきます。

sudo setenforce 0

Apache で Proxy 設定をしたアプリの起動

Apache で Proxy 設定をした場合のアプリの起動は、それぞれのアプリのルートディレクトリに移動して、以下のコマンドを入力します。

pm2 start ./bin/www --name app1
pm2 start ./bin/www --name app2

http://192.168.11.1/app1http://192.168.11.1/app2にアクセスしてそれぞれのアプリが表示されるか確認します。