Node.jsでWEBサーバーを構築する
こんにちは。今回はNoode.jsを使用してWEBサーバーを構築してみたいと思います。
Node.jsの概要
Node.jsとは
node.jsとはサーバーサイドのJavaScript実行環境です。元来JavaScriptはWEBブラウザ上でしか動作させることができませんでしたが、サーバにNode.jsをインストールすることでサーバー上でJavaScriptを実行することができるようになります。WEBアプリケーションのサーバーサイド処理の実装によく使われます。
なぜNode.jsが必要なのか
PHPやRubyなどのサーバーサイド言語があるにも関わらずなぜNode.jsが必要されるのでしょうか。それはWebアプリケーションをJavaScriptのみで実装したいというニーズがあるからです。Webアプリケーションを作成する際にはクライアントサイドでHTML、JavaScript、CSS等の技術を使い、サーバーサイドではPHPやPython、Rubyなどのサーバーサイド用の言語を併用する必要がありました。多くの言語を覚える必要に迫られ学習コストが増加したり、複数の言語を使うので混乱したりというデメリットがありました。サーバーサイドでもJavaScriptが記述できれば覚える言語が少なくて済みます。これがNode.jsが必要とされる理由です。
Node.jsで何ができる?
Node.jsを使うとサーバーサイドでJavaScriptを動作させられます。では実際サーバーサイドではどのような処理ができるのでしょう。ざっと挙げると以下のようなことができます。
- WEBアプリケーションを構築できる(バックエンドのDB処理など)
- WEBサーバを構築する
- スマホアプリを構築する
DBアクセスが必要となる動的なWEBアプリケーションはもちろんのこと、WEBサーバーも構築することができてしまいます。
Node.jsでWEBサーバを構築してみよう
ここからが本日の本題。Node.jsでWEBサーバーを作ってみましょう。最も簡単にNode.jsで何かを作るならまずはWEBサーバーを作ってみるとよいと思います。
環境
- Ubuntu 20.04 (Windows11 WSL上に構築)
Node.jsのインストール
aptでnodeをインストールします。
$ sudo apt update
$ sudo apt install nodejs
$ nodejs -v
v 10.19.0
次にNode.jsのパッケージマネージャであるnpmをインストールします。
$ sudo apt install npm
これでNode.jsのインストールは完了です。
プロジェクトフォルダを作成する
今回はNode.jsでWEBサーバを構築し、静的なコンテンツを配信してみます。まずは適当な場所にプロジェクト用のフォルダを作成し、server.jsファイルを作成します。
node_sample/
server.js
サーバーサイド処理を記述する
作成したserver.jsファイルを編集していきましょう。
// httpモジュールを読み込みます。これがWEBサーバーとなるオブジェクトです。
const http = require("http");
// createServerでWEBサーバを作成します。
const server = http.createServer((request, response) => {
// ヘッダーを生成
response.writeHead(200, {
"Content-Type": "text/html"
});
// レスポンスボディを返します
response.end("<h1>Hello World!</h1>");
});
// 3000番ポートで待ち受け
server.listen(3000);
まずはrequire(“http")でWEBサーバーとなるオブジェクトを読み込みます。createServerでWEBサーバを構築することができます。ブラウザでWEBサーバーにアクセスした際にはこちらのメソッドが実行されます。response.endメソッドでコンテンツを返します。今回はHTMLを固定で返すようにしています。最後、引数にポート番号を指定してserver.listenメソッドを実行します。すると指定したポートでWEBサーバーがリクエストを待ち受けます。
ブラウザでアクセスする
作成したWEBサーバーにブラウザからアクセスしてみましょう。ローカルに構築したのであればhttp://localhost:3000にアクセスします。今回私はWSL上に構築したので、windowsからアクセスする際にはlocalhostでは接続できません。ubuntu上でifconfigでWSLのIPアドレスを調べてアクセスします。アクセスするとresponse.endで指定したHTMLが表示されます。
簡単にWEBサイトを作成することができました。
まとめ
今回はNode.jsを体験するためにWEBサーバーを構築してみました。わずか数行のコードでWEBサーバーを構築できるのですから、驚きですね。
ディスカッション
コメント一覧
まだ、コメントがありません