第1回 Apacheについて知ろう

いまや、ApacheがWebサーバのデファクトスタンダードであることに異論を唱える人はいないだろう。しかし、ほとんどの人は「デファクトスタンダードだから」Apacheを使っているのではないだろうか。なぜApacheなのか? まずはこの点を再確認してみよう。

Index
ApacheによるWebサーバ構築
1 Webサーバの必要性
2 Apacheはなぜ注目されるのか
3 Apacheの入手方法
4 Apacheに関する情報源
5 Apacheにできること
6 誰もが認めるApacheの実力
7 次世代のApache(Apache 2.0)
8 まとめ

Webサーバの必要性

 日本のインターネット利用者数はすでに2000万人(全世界では約2億人)を突破し、世帯普及率は約25%に達したが、なお急成長を続けている。従って、それだけの利用者に応じられるだけのWebサーバが必要であり、いうまでもなくインターネットに欠かせない存在となっている。

ちなみに、日本国内のサーバ数(JPドメインDNSへの登録数:Webに限らない)は、いまや236万台を超えて世界で第2位を誇っている。もちろん、この数にいまはやりの.com(ドットコム)で登録しているサイト(企業)やDNSに登録されていないサーバは含まれない。

 Webサーバの大半を所有するのは、個人でなく法人(企業)になるわけだが、社外への情報発信手段としてWebは欠かせないものとなっている。特に新興企業では、何はともあれWebサイトを立ち上げることが自社のアピールや信頼につながるとさえいわれているほどである。それを裏付けるかのように、中小規模の企業でもインターネット普及率は高水準になり、大企業ではもはや当然のごとく100%に達している。

 また、すでにインターネットに接続され、自社内で(Webやメール)サーバを有する企業は軒並み回線速度やサーバを増強している状況である。人気サイトのサーバ構成においては、複数のサーバコンピュータを負荷分散機で連携させ、あたかも1台のサーバコンピュータのように振る舞わせることも珍しくなくなった(図1)。

図1 Webサイト機器構成例。負荷分散機を使えば、サーバ群を1台のサーバのように振る舞わせることができる

 このように、インターネット(特にWeb)に対する投資が重要なものとなれば、少なからずWebサーバ自体への投資も必要になることはいうまでもない。数年前ならいざ知らず、いまとなってはWebサーバは当たり前の存在であり、必要性などを語る必要さえなくなっているといえる。

 そうなると、Webサーバで発信する情報の質、つまり内容が重視されるのが必然の流れだろう。利用者が必要としない情報を並べ立てたところで、そんなサイトは見向きもされなくなるだけだ。そのうえ、利用者はスピーディに情報を獲得することを重要視しているから、高いレスポンスを確保しなくてはならない。

 レスポンスが良く、内容が充実していて、必要としている情報を素早く取り出せる。そんなWebサイトを素早く構築し、低いコストで維持することが最も重要な課題とされていることであり、これからのWebサーバに求められていることなのだ。

■Webサーバの役割とApacheの関係

 Webサーバとは、本稿のようなHTMLファイルや、それに付随する画像などのファイルをクライアントコンピュータに配信するサーバコンピュータのことを指す。このとき、クライアントコンピュータではNetscape NavigatorやInternet ExplorerのようなWebブラウザが動作している。サーバコンピュータから配信されるHTMLファイルを解析し、そのほかのファイルと組み合わせて画面上にWebページを表示するためだ。

 順序は前後してしまうが、Webブラウザの利用者は閲覧したい情報をURLで指定する。URLには、情報を取得するサーバコンピュータ(www.atmarkit.co.jpなど)と、そのサーバコンピュータから配信してもらうファイル(index.htmlなど)の指定が含まれている。URLによるリクエストを受信したサーバコンピュータは、自分の保存しているファイルの中から指定されたファイルを取り出し、クライアントコンピュータに配信する。このとき、クライアントコンピュータとサーバコンピュータの間では、HTTPやHTTPSと呼ばれるプロトコルが使われているのである(図2)。

図2 Webの概要

 当然のことながら、ただサーバコンピュータを用意しただけでこうしたサービスを提供できるわけではない。サーバコンピュータ上に、Webのサービスを提供するソフトウェアをインストールし、適切な設定を施してやる必要がある。本稿で解説するApacheは、Webサーバ上で稼働し、Webサービスを提供するソフトウェアなのである。

Apacheはなぜ注目されるのか

 ところで、本稿を読んでいただいているからには、皆さんも少なからずApacheに興味があるのだろうと思う。そして、すでにご存じのことと思うが、Apacheは多方面から大きな注目を集めている。では、なぜそれほどまでに注目されるのか。Apacheの特徴とは何かをここでご紹介しよう。

■無料で使える

 Apacheは、簡単にいってしまえばタダで使えるソフトウェアである。Linuxの普及によって、ライセンスフリーのソフトウェアも珍しくなくなってきたが、コストがかからないのは非常にありがたいことだ。なにしろLinuxとApacheを使えば、ハードウェアと人件費だけでWebサーバを構築できるのだ。

 ちなみに、Apacheに次いでよく利用されているMicrosoft IISは、ライセンスフリーとはいいきれない。確かにIIS自体は無償で入手できるが、Windows NT Server(Windows 2000 Server)を購入しなければ利用できないわけで、Windows NT Serverのライセンス料に含まれているとも考えられるからである。それに将来にわたって無償で提供されるという保証もない。

■無保証・無対応

 無料である代わりに、Apacheの品質について保証する団体もなければ、問題を解決する義務を持つ組織もない。疑問点があったとしても、それに対して責任を持って回答してくれる機関もない。すなわちApacheは無保証で、ノンサポートのソフトウェアでもあるのだ。

 とはいえ、この点をそれほど問題視する必要はない。Apacheのソースコードは、Linuxと同じく多くのボランティアによってメンテナンスされている。疑問や問題点があれば、Apacheのコミュニティに相談すれば、素早く確実な回答と対応が得られるだろう。

 こうした対応の早さや蓄積された多くのノウハウは、世界的に大手のベンダでもかなわないほどだ。それでも心配で、ちゃんとしたサポートを得たいのであれば、有料でサービスを提供している企業に相談してみるといい。すでに、日本でもいくつかの企業がApacheの有償サポートサービスを提供している。

■高い信頼性

 筆者も実際にApacheを顧客に導入した実績を持っているが、その信頼性に疑問を感じたことはない。むしろ有償で提供されているソフトウェアよりも信頼でき、圧倒的に便利だと感じることの方が多いくらいだ。

 Apacheがいかに優れたソフトウェアで高い信頼性を誇っているのかは、6割を超えるといわれる圧倒的なシェアが一番の証拠になるだろう。もちろん、多くの文献やWebで公開された資料を見ても、その信頼性の高さを裏付けるものばかりだ。そうした資料の1つとして、Netcraftのサイト(http://www.netcraft.co.uk/Survey/)を紹介しておこう(画面1)。

画面1 これによると、Apacheの2000年10月時点のシェアは、アクティブなサイトで60.02%。

 それでもまだ信じられないという方や、自分の目で確かめてみたいという方は、こちらのページ(http://uptime.netcraft.com/graph/)を訪ねてみるといい。このページでは、入力したホスト(「www.atmarkit.co.jp」など)で稼働しているWebサーバの種類を調べ、そのホストの連続稼働時間までも表示してくれる(画面2)。

画面2 www.atmarkit.co.jpについて調べてみたところ。ちゃんとApacheを使っているようだ(笑)。

 頻繁にリブートしているからといっても、一概にソフトウェアの問題とは限らないが、いくつかの有名なサイトについて調べてみれば傾向が見えてくる。その結論は自分自身で導き出していただくとして、ここではApacheが高い信頼性を持ち、連続稼働に耐え得るソフトであると主張しておきたい。

■高い安定性と軽快な動作

 高い安定性と軽快な動作。この2つも加わるからこそ、これだけの注目を集めているともいえる。そして、これだけの実績を作れるのも、高い安定性に支えられてのことなのである。これら2つの特徴に関しては、簡単に実証できないためここで説明するのは難しい。やはり、導入実績こそが最大の証拠、といわざるを得ない。もし機会があれば、皆さんも実際に導入して、その軽快さと安定性を試していただきたい。

■豊富な機能

 Apacheの機能については後ほど詳しく紹介するが、その機能は実に豊富で決して不足を感じさせない。それどころか、Microsoft IISやiPlanet Web Server(旧Netscape)のような、市販の製品をも凌駕するほど高機能なのである。

■多彩な動作環境

■コラム Apacheに必要なリソースは?

 一般的なソフトウェアのように、推奨CPUやメモリ量の提示はないものの、Apacheが非常に軽量なソフトウェアであることに違いはない。OSが起動した状態で、多少なりともマシンの資源に余力があれば、間違いなく起動してくれるだろう。

 しかし、起動したからといって、安定した動作をするとは限らない。Webサーバというものは、外部から大量のアクセスを受けるからである。Apacheは、大量のアクセスがあっても軽快に動作するように作られてはいるが、それでもやはり限界がある。大量のアクセスを受ければ、それだけCPUパワーやメモリを必要とするのだ。

 Apacheは、LinuxやUNIXプラットフォームはもちろんのこと、MacやWindows NT、OS/2でも動作する。後で紹介するJAPACHE(ジャパッチ)の言葉を借りれば、「VAXとDOS以外なら何でもOK」ということだから、それこそ動作環境の心配はないといえる。

 イントラネットのように、限られた人数で使うのであれば少々無理のあるサーバでも構わないだろう。しかし、インターネット上に公開し、一般からのアクセスを受け入れるのであれば、できる限り余裕のある構成をとっておくべきだろう。

 このように動作環境を選ばないという特徴は、遅かれ早かれ大きなメリットとしてわれわれに報いてくれることになる。なぜならば、動作環境の違いによって、設定や動作の違いを意識する必要がなくなるからだ。

 例えば、Windows NT環境で動作させていたサイトが、アクセスの増加で限界に達してしまったとしよう。このとき考えられるのは、ハードウェアを交換するか、冒頭で述べたように負荷分散機を使ってハードウェアを増設するかだ(図3)。このときApacheを使っていれば、どちらの手段であってもWebサイトに与える影響は軽微なものだ。ディレクトリの表現手法の違いなど、ごくわずかな修正を行うだけである。これがLinuxからSolaris、Linux(PC)からLinux(UNIX)への移行であれば、修正などはまったく必要ない。

図3 アクセス数増加への対応策

 また、もう1つのメリットとして、ノウハウを共有できることも挙げられる。イントラネット用(社内)のWebサーバはWindows NT、インターネット用(社外)のサーバはUNIXという場合であっても、どちらかで蓄えた知識がそのまま通用する。このことは、多数の顧客と契約し、それぞれの環境でサイトを構築しなければならないSI業者にとっても大きなメリットになるはずだ。

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ユーザ会ではコアメンバーの募集も行っているようなので、興味があれば応募してみてはいかがだろうか。

メーリングリスト
http://www.apache.or.jp/misc/announcelist.html

 先に紹介した日本Apacheユーザ会では、Apacheに関する意見や情報を交換するためのML(メーリングリスト)を有志によって運営している。興味があれば参加してみるといいだろう。

 ただし、単純に質問をするためだけに加入するのは感心しない。MLの参加者は皆ボランティアなのだから、相互に助け合う、ギブアンドテイクの精神が大切なのである。はじめは質問する側でも、いつかは回答する側に回る気持ち、回答に対して感謝する気持ちを大切にしたい。どうしても質問したいのであれば、せめて過去に同じ質問がなかったかを調べてからにしたい。過去のやりとりについては、Apache メイリングリストサポートページ(http://apacheml.ecc.u-tokyo.ac.jp/)に掲載されており、検索サービスも用意されている。よほど特殊なケースでもなければ、この検索サービスで同じような問題を見つけることができるだろう。

JAPACHE
http://japache.infoscience.co.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によって実行される。

図4 SSIの例。body.htmlの中でheader.htmlとfooter.htmlを読み込むようにしておくと、3つのファイルを組み合わせて1つのWebページを構成する

 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サーバを立ち上げられるようになっていただきたいと思っている。どうか最後までお付き合いいただきたい。