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ホスティングで試してみてください!