GNU/Linux >> Linux の 問題 >  >> Linux

Node.jsCentOS8のフロントエンドプロキシサーバーとしてApacheを設定する方法

Node.jsは、Webブラウザーの外部でJavaScriptを実行するために使用できる、オープンソースのクロスプラットフォームのJavaScriptランタイム環境です。これは、クライアントとサーバーの両方が通信を開始してデータを自由に交換できるようにする、リアルタイムの双方向接続を備えたWebアプリケーションを構築するために最も一般的に使用されます。 Node.jsは、イベント駆動型の非ブロッキングI / Oモデルを使用しているため、分散デバイス間で実行されるデータ集約型のアプリケーションに最適です。

このチュートリアルでは、Node.jsをインストールし、バックエンドサーバーとして実行するように構成します。次に、ApacheをNode.jsのフロントエンドプロキシサーバーとして構成します。

前提条件

  • Atlantic.netクラウドプラットフォーム上の新しいCentOS8VPS。
  • サーバーで構成されているrootパスワード。

ステップ1-Atlantic.Netクラウドサーバーを作成する

まず、Atlantic.Netクラウドサーバーにログインします。 1GB以上のRAMを搭載したオペレーティングシステムとしてCentOS8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。

CentOS 8サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。

dnf update -y

ステップ2–Node.jsをインストールする

次のコマンドを使用して、Node.jsリポジトリをインストールできます。

curl -sL https://rpm.nodesource.com/setup_12.x | bash -

リポジトリがインストールされたら、次のコマンドを実行するだけでNode.jsをインストールできます。

dnf install nodejs -y

インストールが完了したら、次のコマンドを使用して、インストールされているNode.jsのバージョンを確認できます。

node -v

次の出力が得られるはずです:

v12.16.2

次のコマンドを使用して、NPMのバージョンを確認することもできます。

npm -v

次の出力が得られるはずです:

6.14.4

ステップ3–サンプルのNode.jsアプリケーションを作成する

まず、Node.jsアプリケーションを保持するディレクトリを作成しましょう:

mkdir project

次に、ディレクトリをプロジェクトに変更し、次のコマンドを使用してサンプルのNode.jsアプリケーションを作成します。

cd project
nano app.js

次のコンテンツを追加します:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Welcome to Node.js Server');
}).listen(8080, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8080/');

終了したら、ファイルを保存して閉じます。

これで、Node.jsアプリケーションをポート8080で提供する準備が整いました。次に、次のコマンドを使用してアプリケーションを起動します。

node app.js

次の出力が得られるはずです:

Server running at http://127.0.0.1:8080/

上記の出力は、Node.jsアプリケーションが正しく機能していることを示しています。

次に、 CTRL + Cを押します アプリケーションを停止します。

ステップ4–Node.jsアプリケーションを管理するためのPM2のインストールと構成

PM2は、Node.jsアプリケーションのプロセスマネージャーです。これにより、Node.jsアプリケーションを永久に存続させ、Node.jsを管理し、ダウンタイムなしでNode.jsをリロードし、一般的なシステム管理タスクを容易にすることができます。

以下に示すように、NPMを使用してインストールできます。

npm i -g pm2

PM2をインストールした後、以下に示すように、ディレクトリをプロジェクトに変更し、PM2を使用してNode.jsアプリケーションを起動します。

pm2 start app.js

アプリケーションが正常に開始されると、次の出力が表示されます。

                        -------------

__/\\\\\\\\\\\\\____/\\\\____________/\\\\____/\\\\\\\\\_____
 _\/\\\/////////\\\_\/\\\\\\________/\\\\\\__/\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\/__\/\\\\///\\\/\\\/_\/\\\___________/\\\/___
    _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\\\_
        _\///______________\///______________\///__\///////////////__


                          Runtime Edition

        PM2 is a Production Process Manager for Node.js applications
                     with a built-in Load Balancer.

                Start and Daemonize any application:
                $ pm2 start app.js

                Load Balance 4 instances of api.js:
                $ pm2 start api.js -i 4

                Monitor in production:
                $ pm2 monitor

                Make pm2 auto-boot at server restart:
                $ pm2 startup

                To go further checkout:
                http://pm2.io/

                        -------------

[PM2] Spawning PM2 daemon with pm2_home=/root/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /root/project/app.js in fork_mode (1 instance)
[PM2] Done.

┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name   │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ app    │ default     │ N/A     │ fork    │ 1437     │ 0s     │ 0    │ online    │ 0%       │ 31.1mb   │ root     │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

次に、次のコマンドを使用して、起動時にNode.jsアプリケーションを起動できるようにします。

pm2 startup

このコマンドは、Node.jsアプリケーションのsystemdサービスファイルを作成し、以下に示すように、システムの再起動後に開始できるようにします。

[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
Restart=on-failure

ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
Created symlink /etc/systemd/system/multi-user.target.wants/pm2-root.service → /etc/systemd/system/pm2-root.service.
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd

次のコマンドを使用して、アクティブなアプリケーションを一覧表示することもできます。

pm2 list

次の出力が得られるはずです:

┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name   │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ app    │ default     │ N/A     │ fork    │ 1437     │ 104s   │ 0    │ online    │ 0.1%     │ 39.7mb   │ root     │ disabled │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

ステップ5–ApacheをNode.jsのフロントエンドプロキシとして構成する

次に、Node.jsアプリケーションにアクセスするためのフロントエンドサーバーとしてApacheWebサーバーをインストールして構成する必要があります。

まず、次のコマンドを使用してApacheWebサーバーをインストールします。

dnf install httpd -y

次に、次のコマンドを使用して、Node.jsアプリケーション用のApache仮想ホスト構成ファイルを作成します。

nano /etc/httpd/conf.d/example.conf

次の行を追加します:

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName node.example.com
        ErrorLog /var/log/httpd/error.log
        CustomLog /var/log/httpd/access.log combined
        ProxyRequests On
        ProxyPass / http://localhost:8080
        ProxyPassReverse / http://localhost:8080
</VirtualHost>

終了したら、ファイルを保存して閉じます。次に、Apache Webサーバーを起動し、次のコマンドを使用して再起動時に起動できるようにします。

systemctl start httpd
systemctl enable httpd

ステップ6–Node.jsアプリケーションにアクセスする

この時点で、ApacheWebサーバーはNode.jsアプリケーションにアクセスするように構成されています。次に、Webブラウザーを開き、URLhttp://node.example.comを入力します。以下に示すように、Node.jsアプリケーションページにリダイレクトされます。

結論

おめでとう!これで、Apacheをフロントエンドサーバーとして使用してNode.jsアプリケーションが正常にデプロイされました。これで、本番環境用のNode.jsアプリケーションの構築を開始できます。Atlantic.NetのVPSホスティングで試してみてください!


Linux
  1. CentOSでApache仮想ホストを設定する方法

  2. CentOS 8でDHCPサーバーをセットアップする-その方法は?

  3. CentOS8でVSFTPDを設定する方法

  1. CentOS7にSquidプロキシサーバーをインストールする方法

  2. CentOS7でOpenVPNサーバーをセットアップする方法

  3. Node.jsをDebian10にインストールし、Nginxをフロントエンドプロキシサーバーとして構成する方法

  1. CentOS8でNginxをWebサーバーおよびApacheのリバースプロキシとして構成する方法

  2. UEFIハードウェアのPXEブートを設定する方法

  3. Node.jsのフロントエンドプロキシとしてApacheを設定する方法