Apacheについて知ろう:ApacheによるWebサーバ構築(1)(2/2 ページ)
いまや、ApacheがWebサーバのデファクトスタンダードであることに異論を唱える人はいないだろう。しかし、ほとんどの人は「デファクトスタンダードだから」Apacheを使っているのではないだろうか。なぜApacheなのか? まずはこの点を再確認してみよう。
Apacheの入手方法
さて、それでは実際にApacheを入手し、使ってみたいと思ったらどうすればいいのだろうか。それにはいくつかの手段が考えられる。
1.インターネットからソースコードを入手
まずはじめの方法は、インターネット上に公開されているApacheのソースコードを入手する方法である。この方法の場合、入手したソースコードを自分の環境(OSや利用するオプションなど)に応じて設定(configure)、コンパイル(make install)する。ここで紹介する方法の中では、最も面倒で問題の発生しやすい方法といえる。
しかし、この方法の場合、ほかの方法にはないメリットがある。1つは、その時点で最新のバージョンを入手できること。もう1つは、自分の好みに応じてコンパイルオプションを設定し、思いどおりの環境を構築できることだ。ソースコードを入手するには、公式サイト(http://www.apache.or.jp/、http://www.apache.org/)や、あちこちに用意されているミラーサイトを訪ねるといいだろう。
慣れないうちは、この方法がとんでもなく苦難の道に思えるだろうが、何度か練習すれば、それほど難しく感じなくなる。本連載でも、第3回でソースコードからのコンパイル方法を紹介する。
2.インターネットからポーティングされたバイナリを入手
この方法は、先ほどの方法に比べると圧倒的に簡単にインストールできる。なぜなら、自分の使う環境に合わせて、あらかじめコンパイルされているからだ。バイナリを入手してしまえば、あとはOSごとに用意されているバイナリのセットアップツールを用いてインストールすればいい。
バイナリを入手する場所はOSなどによって異なるが、Sun Solarisの場合はSUNSITE(http://sunsite.sut.ac.jp/indexj.html)のhttp://sunsite.sut.ac.jp/sun/solbin/などを訪ねるといいだろう。そのほかのOSについては、ベンダのサイトや公式ページ上の関連プロジェクトページ(http://www.apache.org/related_projects.html)を訪ねてほしい。
ただし、この方法とこの後に述べる2つの方法の場合、必ずしも現時点で最新のバージョンが使えるとは限らない点に注意してほしい。なぜならば、ポーティング作業や雑誌が出版されるまでのわずかな時間であっても、Apacheはどんどん進化しているからだ。それほど敏感に最新のバージョンを使う必要はないが、自分にとって有益な機能が追加されていないか、情報をチェックするくらいのことはしてほしい。
3.製品付属のバイナリを使う(Linuxの場合)
筆者の知る限り、すべてのLinuxディストリビューションには、Apacheのバイナリとソースコードの両方が付属している。LinuxをOSとして使うのであれば、こうした製品付属のバイナリを利用するのも1つの手だ。大抵の場合、Linuxのインストールとともにインストーラでインストールできるから、ほかの方法に比べて最も簡単だといえる。
4.雑誌の付録などでCD-ROMを入手
最後は、雑誌や書籍の付録CD-ROMから入手する方法だ。最近の雑誌や書籍は、CD-ROMを付属させるものが少なくない。そうしたCD-ROMにApacheが含まれていれば、それを使ってインストールすることができる。Apacheを入手するためだけだとすればコストがかかってしまうが、雑誌や書籍にはインストール方法まで説明されている。
Apacheに関する情報源
ソースコードと同じく、常に最新の情報を入手しておくことも重要だ。Apacheに関する情報は、検索エンジンで検索すれば怒涛のごとくヒットする。何か困ったことがあれば、こうしたインターネット上の情報を検索するだけで、大抵の問題は解決できるだろう。
ここでは、そうした情報の中でも必須といえる情報源を紹介しておく。
Apache公式ページ
http://www.apache.or.jp/(日本)
http://www.apache.org/(海外)
いうまでもなく、Apacheの公式ページは最重要の情報源である。現在、日本におけるサイト運営は、日本Apacheユーザ会(仮)の有志によって行われている。海外のニュースもすぐに翻訳されて、日本のサイトに反映されているからありがたい。日本Apacheユーザ会ではコアメンバーの募集も行っているようなので、興味があれば応募してみてはいかがだろうか。
先に紹介した日本Apacheユーザ会では、Apacheに関する意見や情報を交換するためのML(メーリングリスト)を有志によって運営している。興味があれば参加してみるといいだろう。
ただし、単純に質問をするためだけに加入するのは感心しない。MLの参加者は皆ボランティアなのだから、相互に助け合う、ギブアンドテイクの精神が大切なのである。はじめは質問する側でも、いつかは回答する側に回る気持ち、回答に対して感謝する気持ちを大切にしたい。どうしても質問したいのであれば、せめて過去に同じ質問がなかったかを調べてからにしたい。過去のやりとりについては、Apache メイリングリストサポートページ(http://apacheml.ecc.u-tokyo.ac.jp/)に掲載されており、検索サービスも用意されている。よほど特殊なケースでもなければ、この検索サービスで同じような問題を見つけることができるだろう。
JAPACHE(ジャパッチ)とは、Apacheとそれに関係するドキュメントを翻訳するプロジェクトで、インフォサイエンス社(http://www.infoscience.co.jp/)がボランティアで行っている。
このサイトに掲載されているのは、いうまでもなく日本語に訳されたドキュメント一式である。ここに掲載されているドキュメントを印刷すれば、Apacheの立派なマニュアルが一冊できあがる。新しいバージョンについても順次翻訳して掲載しているから、ときどき訪ねてみるといいだろう。
Apacheにできること
冒頭でも述べたとおり、いまやWebサーバソフトウェアは、ただファイルを送信できるだけでは満足されない。高いレスポンス性能、質の高いサイトを素早く構築できる機能、低コストで安定した運用を行える品質、すべてを兼ね備えることが望まれているのだ。もちろん、これらを支えるのはハードウェアの役割でもあるが、ソフトウェアの占める役割も決して小さくはない。
これまで説明したとおり、Apacheは高いレスポンス性能と、安定した品質を開発当初から掲げている。それでは、それらのほかに必要とされる機能について、Apacheはどのような答えを出しているのだろうか。ここでは2つの大きな機能的特徴を例に、Apacheの優れた機能の一部を紹介しようと思う。
CGI・SSI・SSLのサポート
CGI(Common Gateway Interface)は、WebブラウザとWebサーバ上にあるプログラムの間で、値のやりとりなどをサポートする。この技術は、主にPerlで記述されたプログラムの実行に使われ、CGIを使ったプログラムのことをCGIプログラムと呼ぶ。CGIプログラムは、Apacheに限らずほとんどのWebサーバソフトウェアで実行できる。ちなみに、Apacheではmod_cgiによって実行される。
SSI(Server Side Include)は、HTML中に埋め込まれた特別な命令を実行し、HTMLを動的に変化させるための技術だ。この技術を使うと、例えばWebページの上下部分を別のファイルで作成しておき、それを本体から読み込むことができる(図4)。複数のWebページで1つのパーツを共有できるから、Webページのデザイン変更が容易になる。
CGIとSSIは、どちらも動的なWebページを構築する技術として非常にポピュラーな技術である。これに対し、SSL(Secure Socket Layer)は、HTTPによる通信を暗号化する技術である。SSLを使う場合、Webサーバとクライアント間の通信は、HTTPS(デフォルトのTCPポートは443)で行われる。この技術は、プライバシーや情報の保護のために多くのサイトで採用されている。
モジュールによる機能拡張
Apacheが高機能を誇れる理由の1つが、モジュールと呼ばれる仕組みによって、容易に機能を拡張できることにある。動的なHTMLを出力するCOBOLプログラムを実行したければ、mod_cobolというモジュールを自分で開発すればいい。そうすれば、Apacheはさらに高機能になり、同じニーズを持つユーザーの役に立つのである。
ただしほとんどの場合、新たにモジュールを作る必要はない。なぜならば、すでに多くのモジュールが公開され、ほとんどのニーズをサポートしているからである。モジュールに関する情報は、先に紹介した公式ページなどで得られる。
ちなみに、モジュールを使うにはApacheのコンパイル時に宣言しておかなくてはならない。バイナリでインストールする場合には、使えないモジュールがあることに注意してほしい。
残念ながら、ここでApacheの機能をすべて解説するわけにはいかないが、Apacheが単なるWebサーバソフトウェアではないことは理解できたと思う。現在のWebサイトは、単に静的なページを表示しているだけではない。ビジネス用途であろうと、一般消費者向けであろうと、Webサイトは1つのアプリケーションへと進化を遂げているからだ。
情報の検索や商品の購買は当然のものになり、ページをカスタマイズしたり、以前の情報を記憶しているサイトも珍しくなくなりつつある。Webサーバソフトウェアは、ファイルを送信するための環境から、アプリケーションプラットフォームへと進化を余儀なくされている。Apacheは、そうした進化に後れをとることなく、むしろリードするだけの機能を備えているのだ。
だれもが認めるApacheの実力
RDBMSで有名なオラクル社は2000年、彼らの新しいアプリケーションサーバ製品となるOracle iASを発売した。なにを隠そう、この製品のコアを支えているのがApacheなのである。彼らはWebサーバ部分にApacheを採用し、アプリケーションサーバとしてのモジュールを追加して製品を構成している。すなわち、PL/SQL(mod_plsql:補足1)やOracle Servlet Engine(mod_ose)といった、彼らの独自技術をApacheのモジュールとして開発しているのだ。この新しい製品は、来るべきOracle9i Application Server(補足2)にバンドルされる予定で、21世紀のオラクル社製品の中核をなすものと考えられる。
オラクル社のような巨大ベンダに採用されたということは、Apacheの実力が認められたと喜ぶべきであろう。Oracle iASやOracle9i ASは、オラクル社の提供するほかの製品(ERPや開発ツール)とも密接な関係を持つだけに、これからますますApacheの注目度は上がり、Apacheの知識が欠かせないものになっていくだろう。
補足1 PL/SQLはオラクル社独自の言語。SQLを手続き型の言語に拡張し、サーバ側でのデータ処理を記述できるようにしている。オラクル社がこれまでに提供してきたアプリケーションサーバでは、PL/SQLで作成したストアドプログラムを実行し、動的にHTMLを生成させる方法が主流だったのである。もちろん、この方法はOracle iASでも有効で、mod_plsqlと呼ばれるApacheのモジュールを介して実行されるようになっている。
補足2 オラクル社の新しいデータベースOracle9i ASは、単なるRDBMSの域を越えた製品となる予定だ。それというのも、RDBMSとアプリケーションサーバが1つの製品として出荷されるからである。その布石となるOracle iASにApacheが採用されたということは、次に出荷される製品にも、当然Apacheの技術が使われるものと思われる。
次世代のApache(Apache 2.0)
現時点(2000年11月23日)でのApacheの最新バージョンは、1.3.14となっているが、すでに次期バージョンApache 2.0の開発版が公開されている。Apache 2.0では、マルチスレッドの対応など、いろいろな新機能が盛り込まれる予定だが、リリース時期は未定となっている。いち早く新バージョンに触れてみたいという方は、Apacheの公式ページでApache 2.0の情報とソースを入手するといいだろう。
まとめ
今回はApacheの概略を紹介してきた。まだApacheに触れたことがないという方であれば、最新バージョンにこだわる必要もないし、最初から難しく考える必要もない。まずはLinuxなどの環境を用意し、Apacheをインストールしてみることから始めよう。
次回は、Webサーバの基礎について最低限の知識を紹介する。この連載が終わるころには、Apacheの設定を自分で行い、自分だけの手で1つのWebサーバを立ち上げられるようになっていただきたいと思っている。どうか最後までお付き合いいただきたい。
- Apacheパフォーマンス・チューニングの実践
- Apacheパフォーマンス・チューニングのポイント
- ログローテーションとAnalogの導入
- Apacheのログを活用しよう
- SSLによる安全なWebサイト作り
- ユーザー認証によるアクセス制限(データベース認証編)
- ユーザー認証によるアクセス制限(ベーシック認証編)
- IP認証によるアクセス制限のテクニック
- バーチャルホストによる複数サイトの同時運用
- SSIの仕組みと有効化・制限の設定
- 仮想ディレクトリとマッピングの設定
- 絶対外せない基本設定とサーバの動作
- ApacheのSSL対応化と環境設定
- Apacheの基本インストール
- Webの仕組みとWebサーバの構造
- Apacheについて知ろう
Copyright © ITmedia, Inc. All Rights Reserved.