Sierですが何か?

仕事、趣味などで興味を持った技術など(ブログタイトル迷走中)

CentOS7.0にNode.jsを導入しサーバーを実行してWebブラウザで接続するまで

shinjiです。こんにちは。
今回は仮想サーバーのCentOS7.0でNode.jsをインストールしてServerを実行、 port80にアクセスしてWebブラウザから確認するまでを記載いたします。


Node.jsのインストール

まず、仮想サーバーのCentOSにNode.jsの環境をインストールします。
以下のコマンドを実行します。

$ sudo yum install -y epel-release ・・・ ①
$ sudo yum install -y nodejs npm

①のepel-releaseとは

EPEL
エンタープライズ Linux 用の拡張パッケージ(EPEL) は、 Red Hat Enterprise Linux (RHEL) 向けの高品質なアドオンパッケージであり、CentOSScientific Linux (SL) のような RHEL からスピンオフしたディストリビューションと互換性のある、Fedora プロジェクトで有志によって作成されたパッケージになります。FedoraRHEL のアップストリームであり、EPEL のアドオンパッケージは主に RHEL 向けにビルドされた Fedora リポジトリをソースとしています。

https://fedoraproject.org/wiki/EPEL/ja

とのことです。
まぁ、EPELをインストールしておかないと、その中にあるNode.jsやNPMがインストールできないということです。(違うと思うけど)
ともあれ、これで無事にCentOS7.0の中にNode.jsの環境をインストールできました。


port80のFireWallを開放

タイトルで表現あってるかわかりませんが、port80の通信でFireWallに引っかからないようにします。
以下のコマンドを実行する。

$ sudo firewall-cmd --add-service=http --zone=public --permanent ・・・ ①
  success
$ sudo firewall-cmd --reload ・・・ ②
  success
$ sudo systemctl restart firewalld ・・・ ③

①のコマンドに対して成功したら"success"と表示されます。
逆に、コマンドの記述ミスなどをしていればエラーメッセージなどが表示されるはずです。

②は、①で設定を変更したため、それをリロードして設定を反映させます。
③も同様です。


Server.jsの作成

では、実際にNode.jsでサーバーを立ち上げて、ホストOSのブラウザで接続するようにしたいです。
今回は、Expressを使用してServer.jsというファイルを作成し、port80に対して通信があった場合、レスポンスを返すようにします。
まず、Expressをインストール(取得)しましょう。
好きなディレクトリで、以下のコマンドを実行します。

$ sudo npm install express ・・・ ①

①を実行すると、http通信が行わているのがわかります。
①の実行終了後、"lsコマンド"を実行してみましょう。
"node_modules"というディレクトリが作成されているのが分かります
更に、その下のディレクトリに対して"lsコマンド"を実行してみると、先程インストールした"express"のディレクトリがあると思います。
なければ、エラーログやメッセージが出ているはずなので確認しましょう。

インストールされていることを確認したら、server.jsの作成を行います。
以下のようにserver.jsを記述します。

var express = require('express');
var app = express();

app.get('/', function(req, res) { ・・・ ②
	res.send('はじめまして!<br>『技術ときどき雑学』のブログへようこそ!');
});

app.listen(80, function() { ... ③
	console.log('Express Listen port 80');
})

エディターはなんでも良いです。ローカルで書いてから通信ソフトなどで送ってもOKです。
②は、仮想サーバーの"/"(ルート)にアクセスした際の処理を書きます。
ここでは、『はじめまして! 『技術ときどき雑学』のブログへようこそ!』と返答しています。
ブラウザで、上記の文が出力されて入れば通信は成功していることを表します。

③では、どのportの通信に対して反応するかを指定します。
ここでは、port80に設定しています。


Server.jsの実行とアクセス

では、サーバーを実行して、Webブラウザで表示されるか確認してみましょう。
以下のコマンドで、サーバーを実行します。

$ sudo node server.js ・・・ ①

①を実行すると、"Express Listen port 80"と表示されます。
表示されれば成功です。仮想サーバーにブラウザからアクセスしてみましょう。

f:id:shinji-fsi-5761:20161005001537p:plain

期待通りの出力ができていればOKです。

まとめ

CentOS7.0上にNode.js、NPMの環境を構築し、サーバーを立ててブラウザから表示するまで。