Webサーバ




Webサーバ(ウェブサーバ、英:Web server)は、HTTPに則り、クライアントソフトウェアのウェブブラウザに対して、HTMLやオブジェクト(画像など)の表示を提供するサービスプログラム及び、そのサービスが動作するサーバコンピュータを指す。
広義には、クライアントソフトウェアとHTTPによる通信を行うプログラム及びコンピュータ。




目次






  • 1 実装


  • 2 歴史


  • 3 現在の代表的な実装


  • 4 個別の製品の特徴


  • 5 脚注


  • 6 関連項目





実装


クライアントであるウェブブラウザのURLにて指示された、Webサーバ内に存在するHTMLドキュメントの各種情報を、クライアントから接続されたHTTPに則ったTCP/IPソケットストリーム(HTTPコネクションと呼ぶ)に送信する。多くの場合、クライアントのウェブブラウザとの間に複数のコネクションを張り、HTMLドキュメントとその配下の個々の情報ファイル(画像ファイル情報など)を並列して送り、処理時間を短縮してサービスを提供している。


また、HTMLドキュメントに各種処理を組み込み、CGIスクリプトやJava Servlet(サーバ側で実行されるJavaプログラム)と呼ばれるWeb画面に連動した動的処理を行う事が可能である。CGI処理においてはPerl・Ruby・PHPなどのスクリプト言語によって開発されることが多い。


Java Servletにおいては、Javaによる動的処理の負荷を分散するため、Java Servletを処理する機能を別サーバに切り出し、Webアプリケーションサーバとして、垂直分散(スケールアウト)する事も一般化している。


大規模なWebサービスを提供する場合、同じサービスを提供するWebサーバを並列して設置し、ロードバランサと呼ばれる各種ロジック(ラウンドロビン方式や処理中の負荷を計測して割り当てるサーバを決定するものや、サーバの性能を考慮して重み付けをする方式などが存在する)によりWebサーバへの処理を振り分ける装置を、Webサーバ群の前に置く事が多い。


これにより、Webサービスを提供する際のサーバ故障に対する可用性・信頼性を確保する(疎結合クラスターの一種と定義される)。


また、不特定多数のウェブブラウザ(クライアント)との接続を行うため、一般的にWebサーバ及びWebアプリケーションサーバにはDNSサーバとの連動設定を組み込む。



歴史




  • 1989年

    • 欧州原子核研究機構 (CERN) に在籍していたティム・バーナーズ=リーが「Information Management: A Proposal(情報管理:提案)」を執筆。彼が以前から持っていたWebシステムの素案を目に見える形で提案した。



  • 1990年11月
    • World Wide Web をより具体化した提案書を発表。1990年11月13日から開発が開始。



  • 1990年12月〜1991年1月
    • 現Webサーバ群の基になるHTTPサーバ『CERN HTTPd』と各種ツールをクリスマス休暇中に作成し、最初のWebページ展開(BSD系OSであるNEXTSTEP/NeXTワークステーションに実装)。


  • 1991年8月
    • Webサーバとラインベースのウェブブラウザによるプロジェクト成果の要約をニュースグループに投稿。これがWWWとWebサーバのデビューとなった。



  • 1992年とそれ以降


    • イリノイ大学の米国立スーパーコンピュータ応用研究所(NCSA)のロバート・マックールらが、CERN HTTPdに続く2番目の実装となる『NCSA HTTPd』を開発、また同じくNCSAの学生であったマーク・アンドリーセンらが、画像も表示できるウェブブラウザNCSA Mosaicを開発し、一般に急速に広まった。

    • この時点では、Webサーバの主役は『CERN HTTPd』や『NCSA HTTPd』であった。しかし、改修が進まないという不満が募り、NCSA HTTPdに修正を加えるためのパッチ (patch) を集積するプロジェクトが始まった。その際、プロジェクトに Apache Group という名前を付け、開始したため、そのNCSA HTTPdのメンテを主(当初)とした派生版であるApache HTTP Serverの誕生につながり、主役を移すことになった。




2015年時点においては、Apache及びその派生版である各ベンダのHTTP Serverが市場の4割、マイクロソフトのIISが市場の3割、nginxが2割弱を占める[1]


元々、WebサーバはUNIX上で開発され発展してきた経緯もあり、当初からオープン系サーバと言われるUNIXサーバやWindows系サーバにより実装・提供されるのが普通である。ただし、システム構成上の都合により、HTTPやFTP、TCP/IPが利用可能な汎用コンピュータにて動作させる場合もある。



現在の代表的な実装




The LAMP software bundle (here additionally with Squid). A high performance and high-availability solution for a hostile environment



  • Apache HTTP Server

  • CERN HTTPd

  • NCSA HTTPd

  • Internet Information Services

  • AN HTTPD

  • 04webserver

  • lighttpd

  • Cherokee (web server)


  • Hiawatha Webserver (英語版)

  • thttpd

  • RaidenHTTPD

  • nginx

  • Zope





個別の製品の特徴


  • Oracle HTTP Server

    • RDBMSベンダであるオラクルが提供するWebサーバ (Oracle HTTP Server) においては、Java EEを使用したWebアプリケーションサーバと連携して、HTMLドキュメント内にデータベースに検索を行わせるためのSQL文を直接記述し、データベースからデータをHTMLベースで呼び出して加工する事が可能となっている。



脚注





  1. ^ November 2015 Web Server Survey netcraft




関連項目



  • インターネット

  • ウェブブラウザ

  • アプリケーションサーバ


  • コンテンツ管理システム (CMS)

  • ホスティングサーバ

  • FTPサーバ

  • ドメインネームサーバ

  • サーバ

  • バーチャルホスト


  • Server Side Includes (SSI)


  • 帯域幅調整 - トラフィックシェーピング

  • サーバログ








Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith