Web サーバーとは何ですか?

Web サーバーとは、一般に Web サイト サーバーを指します。Web サーバーは、インターネット上の特定の種類のコンピュータ上に常駐するプログラムを指します。Web サーバーの基本的な機能は、Web 情報の閲覧サービスを提供することです。 HTTP プロトコル、HTML ドキュメント形式、URL をサポートし、クライアントの Web ブラウザと連携するだけで済みます。

ほとんどの Web サーバーはサーバーサイド スクリプト言語 (php、python、ruby) などをサポートしており、スクリプト言語を通じてデータベースからデータを取得し、結果をクライアント ブラウザに返します。

 

現在、最も主流の Web サーバーは Apache、Nginx、IIS の 3 つです。

Web アプリケーションのアーキテクチャ

  • クライアント - クライアントは通常ブラウザを指します。ブラウザは HTTP プロトコルを通じてサーバーにデータを要求できます。

  • サーバー - サーバーは通常 Web サーバーを指し、クライアント要求を受信し、応答データをクライアントに送信できます。

  • ビジネス - ビジネス層。データベースとの対話、論理演算、外部プログラムの呼び出しなど、Web サーバーを介したアプリケーションの処理。

  • データ - データ層。通常はデータベースで構成されます。

Node を使用して Web サーバーを作成する

Node.js は http モジュールを提供します。http モジュールは主に HTTP サーバーとクライアントの構築に使用されます。HTTP サーバーまたはクライアント機能を使用するには、http モジュールを呼び出す必要があります。コードは次のとおりです:

var http = require('http');

以下は、最も基本的な HTTP サーバー アーキテクチャ (ポート 8080 を使用) のデモンストレーションです。server.js ファイルを作成します。コードは次のとおりです。

var http = require('http');
var fs = require('fs');
var url = require('url');
 
 
// サーバーを作成する
http.createServer( function (request, response) {  
   // ファイル名を含めてリクエストを解析します
   var pathname = url.parse(request.url).pathname;
   
   // 要求されたファイル名を出力します
   console.log("Request for " + pathname + " received.");
   
   // 要求されたファイルの内容をファイル システムから読み取ります
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         // HTTP ステータス コード: 404 : NOT FOUND
         // Content Type: text/html
         response.writeHead(404, {'Content-Type': 'text/html'});
      }else{             
         // HTTP ステータス コード: 200 : OK
         // Content Type: text/html
         response.writeHead(200, {'Content-Type': 'text/html'});    
         
         // 応答ファイルの内容
         response.write(data.toString());        
      }
      // レスポンスデータを送信する
      response.end();
   });   
}).listen(8080);
 
// コンソールには次の情報が出力されます
console.log('Server running at http://127.0.0.1:8080/');

次に、このディレクトリにindex.html ファイルを作成します。コードは次のとおりです。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML チュートリアル (w3cstudy.cc)</title>
</head>
<body>
    <h1>最初の見出し</h1>
    <p>最初の段落です。</p>
</body>
</html>

server.js ファイルを実行します。

$ node server.js
Server running at http://127.0.0.1:8080/

次に、次の図に示すように、ブラウザでアドレス http://127.0.0.1:8080/index.html を開きます。

server.js を実行した場合のコンソール出力情報は以下のとおりです。

Server running at http://127.0.0.1:8080/
Request for /index.html received.     # クライアントリクエスト情報

Node を使用した Web クライアントの作成

ノードは、Web クライアントを作成するために http モジュールを導入し、client.js ファイルを作成する必要があります。コードは次のとおりです:

var http = require('http');
 
// リクエストのオプション
var options = {
   host: 'localhost',
   port: '8080',
   path: '/index.html'  
};
 
// 応答を処理するコールバック関数
var callback = function(response){
   // データを更新し続ける
   var body = '';
   response.on('data', function(data) {
      body += data;
   });
   
   response.on('end', function() {
      // データ受信完了
      console.log(body);
   });
}
// サーバーにリクエストを送信します
var req = http.request(options, callback);
req.end();	

新しいターミナルを開き、client.js ファイルを実行すると、出力は次のようになります。

$ node  client.js 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML チュートリアル (w3cstudy.cc)</title>
</head>
<body>
    <h1>最初の見出し</h1>
    <p>最初の段落です。</p>
</body>
</html>

server.js を実行した場合のコンソール出力情報は以下のとおりです。

Server running at http://127.0.0.1:8080/
Request for /index.html received.   # クライアントリクエスト情報