| 起業支援プログラム
|
|
アイデア、情報ソースをお持ちの個人、企業の方に
技術支援、サーバーリソースの提供を行ない共同でビジネス化を実現しましょう。
|
| 相談室
|
ITビジネスに関するご質問
起業支援プログラムのお問い合わせ
|
|
☆お役立ち(Knowledge)
◇Apache
|
|
 |
現在インターネットにおいてWWW(World Wide Web)は、インターネットの代名詞といっても過言ではないくらい大変多く利用されていますが、その中でもApacheは世界一のシェアを誇るWWWのサーバ用ソフトウェア(ウェブサーバ)です。
そもそも、WWWというのは1989年にスイスの欧州粒子物理学研究所(CERN)において情報の交換用に開発されたもので、HTMLで記述された文献を、遠く離れたコンピュータから閲覧することを考慮していました。なぜ、このようなことが必要になったかといいますと、CERNでは加速器を使って高エネルギー物理学の実験を行う施設が在り、その施設に世界中の偉い先生が集まって研究をしていたのですが、実験終了後に世界中に研究者が散らばってしまい、文献の共有が難しくなったために、円滑な文献交換が行えるようにといった背景が在ったわけです。
その後、アメリカのNCSAにおいてCERNと同様に「分散した研究者の共同研究において効率良く情報交換をする」ための研究を行っていたチームがWWWに目をつけグラフィックの扱えるようになったWWWブラウザ「Mosaic」を開発するに至ります。
このとき、ウェブサーバとしては、CERNの作ったものとNCSAが作ったものが在りましたが、NCSAの方は「CGI」や「SSI」などの機能を開発して、マニア受けするさまざまな機能を搭載し、後発ながらCERNのウェブサーバから着々とシェアを奪って行きました。
といえども、さまざまな機能を盛り込んだNCSAのウェブサーバは多くのバグが含まれており、堅実さのCERNと機能のNCSAという位置付けが出来てきました。
その後、NCSAにソフトウェアパッチ(間違い部分を修正するファイル)を提供していた人達が集まり、NCSAをベースとした別のウェブサーバのソフトウェアを開発するに至ります。
これが、本日のお題であるApacheであり、その名の通り「A patch」(パッチを当てた)をもじってアメリカの先住民族の部族名であるApacheとダブらせて名づけられています。
|
|
|
 |

Apacheは、先に述べたとおりNCSAをベースにパッチ当てから歴史が始まりました。
src/CHANGES によると、Apache 0.2が1995/3/18 に公開された事になっており、それはNCSA httpd 1.3に対してパッチを当てたものとされています。
その後、Apache 1.0に至るまで、バグ修正と新機能の追加を繰り返し行ってきており、またさまざまなOSで動作するように移植が繰り返されました。
では、Apache 1.0以降のバージョンアップでどのようにApacheが進化をしたのかを見てみましょう。
Apache 1.0
Apache 0.8系のものを修正してリリースしたもので、よくApacheの初期バージョンと間違えられますが、実際には0.8とあまり変わっていません。
初期ディレクトリはNCSAのものを継承しており、/usr/local/etc/httpd となっています。
また、設定ファイルは /usr/local/etc/httpd/conf 内の httpd.conf srm.conf access.conf mime.types の4つが在りました。
Apache 1.1
Apache 1.0とプログラム的な基本構造は変わりませんが、大変多くの機能強化が行われました。
初期ディレクトリは前バージョンと同じく、/usr/local/etc/httpd が標準となっており、設定ファイルのパスも変わっていません。
HTTP/1.1サポートとKeep-Aliveのサポート
従来の転送が HTTPバージョン1.0だったのに対し、バージョン1.1にも対応する事となりました。
これにより、ホスト名をクライアントから得る事が出来るようになり、他にも一度の接続で複数のドキュメントを要求する事の出来るキープアライブ機能などが実現されています。
ホスト名をベースのバーチャルドメイン機能
先に述べたように、HTTP/1.1のサポートにより、従来だと接続されたIPアドレスでしか判別できなかったバーチャルドメインが、クライアントから送られたホスト名により認識できるようになり、IPアドレスを用いないバーチャルドメイン (Non-IP Based)を実現できました。
複数のIPアドレスやポートでの待ち受け(接続要求待ち)のサポート
従来のApacheだと BindAddress で *を指定すると全てのインターフェースで待ち受けを行い、特定のIPアドレスを指定すると指定された特定のIPアドレスでのみ待ち受けを行う事が出来ました。
しかしながら、Listenという新しい指示子により、複数のIPアドレス(もしくはポート)にて待ち受けを行う事が可能になりました。複数のIPアドレスやポートを指定するときは、Listen指示子を複数個羅列すれば可能です。
サーバの情報と状況の表示機能
mod_status と mod_info の2つのモジュールの追加により、ウェブ上からサーバへの接続や処理の状況を表示したり、サーバの設定情報を表示したり出来るようになりました。
URLをベースとしたアクセス制限をサポート
Apache 1.0でもディレクトリ名によるブロック指定を 指示子により行う事が出来ましたが、URLによるブロック指定を行うべく指示子が追加されました。
これにより、特定のURLへのアクセスだけを制限する事も可能になります。
ファイルタイプによるスクリプト起動
mod_actionsモジュールの追加により、ファイルタイプによって外部のスクリプトやプログラムを呼び出せるようになりました。
これにより、特定の拡張子を持つファイルを、外部プログラムを介して処理させるという事も可能になります。
PROXY
mod_proxy モジュールの追加により、PROXY機能が追加されました。 また、要求を中継して別のサーバへ接続する事も出来るようになりました。
ハンドラー機能
mod_mimeモジュールの新機能として、ハンドラー機能が追加されました。
ハンドラー機能は、要求を受け付けたときにファイルの拡張子や特定のディレクトリ名称より処理すべきモジュールを特定する機能で、より効率的なモジュール呼び出しを行えるようになっています。
また、今までだと拡張子毎にひとつの動作しか利用できなかった事に対して、ハンドラーではファイルタイプ(MIMEタイプ)とは別々に扱いが行われるため、言語やエンコーディングなどさまざまな情報を同時に扱えるようになっています。
CGIの環境変数制御
mod_envモジュールの追加により、CGIを呼び出す前に渡すべき環境変数を制御する事が可能になりました。これにより、特定の情報を環境変数経由でCGIへ渡したり、逆にCGIに特定の環境変数の情報を渡さないようにしたりする事が出来ます。
アクセスファイルに記述可能な指示子の追加
各ディレクトリに設置できるアクセスファイル(.htaccess)内に記述が可能な指示子が増え、リダイレクトやエラー時のドキュメントをディレクトリ毎に設定できるようになりました。
ForceType指示子の追加
特定のディレクトリ内に設置されたファイルをすべて同じファイルタイプに設定する事の出来るForceType指示子が追加されました。例えば、ダウンロード用のディレクトリの場合に、そのディレクトリ内で application/octet-stream と設定すれば、ブラウザでのアクセス時にHTMLファイルであろうともダイアログボックスが表示される事になります。
Apache 1.2
ソフトウェアの構造が大幅に変更され、モジュールやAPIの仕様が変更されています。
初期ディレクトリは以前のバージョンから変更されて /usr/local/apache が標準となり、それに伴い設定ファイルのパスも変わりました。
ソースツリーもモジュールが別ディレクトリに移されました。
XSSIへの対応
以前からApacheコアとは別個で配布されていたXSSIモジュールが、コアに内包されました。
これにより、XSSIにて拡張された条件文などのフロー制御やさまざまな新機能をSSIで利用できるようになりました。
正規表現を利用したパスの記述
いままで、Files / Directory / Location といったブロック指示子では単純なパス表記しか出来ませんでしたが、このバージョンよりパス名に正規表現を利用できるようになり、設定ファイル内でより柔軟なブロック指定ができるようになりました。
ブラウザベースの環境変数設定
以前も環境変数を個別に設定する事が出来ましたが、このバージョンからはブラウザの種類を要求ヘッダ内のUser-Agentヘッダから読み取り、さまざまな条件により環境変数を設定できるようになりました。
URIの高度な書き換え機能 以前からApacheコアとは別個で配布されていた mod_rewrite モジュールが、コアに内包されました。
これにより、既存のAliasやRedirectといった指示子とは別に、非常に高度なURI置き換えができるようになり、置き換え時に外部データベースやプログラムを用いることも可能になりました。
Apache 1.3
ソースツリーの構成が変わりソースファイルの配置がディレクトリ毎に細かく分けられて、全てのソースにわたって新機能の追加やWindowsのサポートのために書き直しされています。
また、設定ファイルの細かい記述方法や指示子の名前が変更され、そのまま移行が出来ない場合が出てきます。
その他、Apache1.3.9からはXMLのサポートなどが盛り込まれており、次世代のウェブサーバとして日々改良が進んでいます。
DSOのサポート
正式にDSOがサポートされ、モジュールの動的読みこみが可能になりました。
これにより、コンパイル時にモジュールを組み込んでおかなくとも後から追加が行えるようになり、バイナリでのモジュール配布なども出来るようになります。
Windows NT/95のサポート
正式にWindows NT/95がサポートされました。
来るべきApache 2.0
マルチスレッドの対応など、いろいろと盛り込まれる予定にされています。
|

|
|