サーバーとは?Node.jsで立ててみる。
サーバーとは?
サーバーはクライアントからの要求(リクエスト)に応じて、何らかのサービス(処理)を提供する側の機能あるいはシステムである。
ja.wikipedia.org
サーバーについて調べて満たしたが、かなり抽象的な言葉だと感じました。
リクエストとレスポンスの話をよく聞きますが、リクエストに対してレスポンス(データを提供)していればコンピューターだけではなくプログラムもサーバーになりうる??
さらに分類していくと、物理サーバーと仮想サーバーに分けられる。
物理サーバー とは?
物理サーバーとは物理的に存在する1台のサーバーのこと。
ハードウェア上で、原則1つのOSを利用する。
仮想サーバー とは?
仮想サーバーとは1台の物理サーバー上で、専用のソフトウェアを使い、複数の仮想的なサーバーを構築すること。
CPUやメモリは物理サーバーのリソースを利用する。分割することで複数のOSと複数のサーバーを動作させることが可能。
サーバーの用途
提供するサービスはサーバーの種類によって異なり、WEBサーバー、メールサーバー、FTPサーバー、DBサーバー、SSHサーバー等がある。
今回はWEBサーバーについてふれていきたい。
WEBサーバーとは?
サーバーの種類の一つで、クライアント(ブラウザ)側からの要求(リクエスト)に対して、文書や画像などをの表示を提供するサーバーのこと。
特徴
- クライアントとサーバーがやり取りを行う際にHTTPという通信プロトコル(ルール)を使用する。
- プロトコル(通信の決まり事)があることで、異なる機器同士のデータ交換を可能としている。
- HTTP(プロトコル)は主にhtmlなどのファイルを送信、受信する際に使う。
Node.jsでWEBサーバーを立ててみる
公式ページのサンプルを参考にしました。
nodejs.org
ハンズオン①
WEBサーバーを立てていきます。
// httpモジュール const http = require('http'); // port番号 const port = 3000; // hostname const hostname = '127.0.0.1' // サーバーを建てる var server = http.createServer(function (request, response) { // requestURLの確認 console.log(request.url); // requestが正常に終了したかの確認 console.log(response.statusCode); // 表示 response.end('hello'); }); // portとipを設定 server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
ハンズオン①の結果を見てみる。
ブラウザを立ち上げてURL欄にhttp://127.0.0.1:3000/
を打ち込む。
ちなみに打ち込むURLの説明をすると、httpの部分が通信プロトコル。
127.0.0.1の部分がローカル・ループバック・アドレスと呼ばれ、自分自身のこと。
3000の部分がport番号となります。
request.url
の部分でurl欄に入れたクエリが表示される。
http://127.0.0.1:3000/
の場合だと/
が表示される
response.statusCode
でrequestが成功したことがわかる。(成功レスポンスの200が表示される。
response.end('hello')
ここで文字列をブラウザ側に提供していることがわかる。
ハンズオン②
次はcontentTypeとstatusCodeを指定してみる。
// httpモジュール const http = require('http'); var fs = require('fs'); // port番号 const port = 3000; // hostname const hostname = '127.0.0.1' // サーバーを立てる var server = http.createServer(function (request, response) { // File読込 fs.readFile('./cat.png', function (err, data) { // statusとcontentTypeを指定 response.writeHead(200, { 'Content-Type': 'image/png' }); // 送信後、終了 response.end(data); } ); }) // portとipを設定 server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });
ハンズオン②の結果を見てみる。
fs.readFile('./cat.png',
にてcat.pngファイル(画像)を読み込んでいます。
response.writeHead(200, { 'Content-Type': 'image/png' });
この箇所でステータスコード200(成功)とContent-Typeを指定してみました。
ブラウザ側に返された情報がどんなものなのかをContent-Typeで伝えています。
参考サイト
httpについて
プロトコル
通信プロトコルのHTTPとは何かわかりやすく解説します! | 押さえておきたいWeb知識