.
.
.
.
.
TOPページ(Alt+B)
.
Apache Web Server

Apache(アパッチ)は今日のインターネットで最も人気が高いWebサーバーソフトウエアです。その利点はその高速性はもちろん、誰でも無償でダウンロードして使えること、Windows環境でも利用可能であること、絶えずアップグレードと改善が行われている等が挙げられます。反面、UNIXにルーツを持ち商用プログラムとは異なるため、インストールや設定が必ずしも簡単ではありません。ここではWindows環境にこのApacheをインストールして動作させるまでをみてみましょう。またそれぞれの設定ファイルの詳細に付いてもみていくことにしましょう。

実行に必要な動作環境

実行にはCPUの速度よりも、可能な限り大容量のRAM(メモリ)を搭載していることが有利となります。また、TCP/IPが使用可能なネットワークデバイス(LANボード等)を装着していなければなりません。OSはWindows95/98/Me/NT/2000/XPどれでも構いませんが、Windows版ApacheはもともとNT4向けに開発されたため、NT4での実行に最高のパフォーマンスを得られます。また、NT4で実行の場合にはServicePack3以上をインストールしておきます。

Apacheの入手先

・Apache Webサイト http://httpd.apache.org/download.cgi

2003年11月現在の最新バージョンは apache_1.3.29-win32-x86-src.msi です。尚、MSI形式をインストールするにはWindowsインストーラーを必要とする場合があります。同ページ下部にインストーラーの配布先へのリンク(Microsoft公式Webサイト)がありますので、一緒にダウンロードしておきます。

また、CGIの実行環境を構築するためにPerlインタープリタも入手しておきます。ここではActivePerlという人気の高いPerlインタープリタを入手します。

ActivePerlの入手先

・ActivePerl Webサイト http://www.activestate.com/activeperl

2013年3月現在の最新バージョンは ActivePerl 5.16.2 です。Windows用のMSIバイナリをダウンロードします。

Apacheのインストール

ダウンロードが完了したらMSIバイナリをダブルクリックして実行します。ダイアログボックスの確認メーセージに従ってセットアップしていきます。[Typical]を選択するとソースコードはインストールされませんが特に問題はないのでこちらを選択します。デフォルトのインストール先は C:\Program Files\Apache Group\Apache となりますが、C:\Apache にインストールしたほうがよいでしょう。これはWindowsNTのサービスとして実行するためと、名前に空白が入っているディレクトリから実行できないバグのあるCGIの存在報告があるためです。

インストールウイザード

インストールが完了したら念のためマシンを再起動します。

インストール完了後のディレクトリ基本構造は

Apache
cgi-bin CGIプログラムの格納場所。
conf 各種設定ファイルが格納されている。
htdocs 公開するWebサイトファイルの格納場所。
icons Apacheが表示するアイコンが格納されている。
logs リクエスト、エラー等を記録するログファイルの格納場所。
modules Apacheに機能を追加するモジュールが格納されている。
proxy Proxyキャッシュファイルを格納する。

で構成されます。

ActivePerlのインストール

こちらもMSIバイナリをダブルクリックして実行します。一番上の[Modify]を選択し、ダイアログボックスの確認メーセージに従ってセットアップしていきます。インストール先は C:\Perl とするとよいでしょう。

セットアップ画面

インストールが完了したらWindows95/98/Meはマシンを再起動します。NT/2000/XPでは再起動の必要はありません。その後、パスが通っているかどうか確認するためDOS窓を開いて perl -v と入力します。Perlのバージョン情報が表示されたらインストールは成功です。尚、この環境(C:\Perlにインストール)ではPerlインタープリタバイナリまでのパスは C:\Perl\bin\perl.exe となり、Perlスクリプト作成時の先頭行は

#!C:/Perl/bin/perl  または #!C:\Perl\bin\perl.exe

と指定する必要があります(大文字小文字は問わない)。どうしてもUNIXと同じPerlのパスで使いたい場合(#! /usr/local/bin/perl等)は、まずCドライブ直下にusrというディレクトリを作成し、さらにその中にlocal、さらにbinと作成し(C:\usr\local\bin)、作成したbinディレクトリの中にC:\Perl\binディレクトリ中にある「Perl.exe」、「Perl5.16.2.exe」、「Perl56.dll」、「PerlEz.dll」、「PerlMSG.dll」、「PerlSE.dll」をそれぞれコピーします。その後、Autoexec.batでパス指定されている"SET PATH=C:\Perl\bin"のところを"SET PATH=C:\usr\local\bin"と修正し、再起動します。(但し、**.pmなどのライブラリは使用できません)ApacheでCGIスクリプトを実行するにはApacheでCGIを参照ください。

Apacheの起動

Apacheを起動するには[スタート]-[プログラム]-[Apache httpd Server]-[Control Apache Server]-[Start]を選択します。同様に終了するには[Stop]、再起動するには[Restart]を選択します。無事にスタートするといわゆるDOS窓が開いて

Apache/1.3.27 (Win32) running.......

と表示されます。うまく起動できない場合にはコマンドラインでの起動を試みます。

・Apacheのコマンドライン機能一覧

-C "指示子" サーバーが設定ファイルを読む前に、指定した指示子を処理するよう指示する。
-c "指示子" サーバーが設定ファイルを読んだ後に、指定した指示子を処理するよう指示する。
-D 名前 指示子で使用できる名前を指示する。
-d ディレクトリ サーバーの起動時に別のServerRootを指定する。
-f ファイル名 別のServerConfigFileを指定する。
-h 指定できるオプション一覧を表示する。
-i Apacheを起動する、またはNTのサービスとしてインストールする。
-k オプション Apacheの停止と再起動を指示する 停止はshutdown、再起動はrestartを指定する。
-l コンパイル時に組み込まれたモジュールの一覧を表示する。
-L 指定可能な指示子を一覧表示する。
-t 設定ファイルの文法をチェックする。
-u Apacheのサービスを削除する(WindowsNTのみ)。
-v Apacheのバージョンと制作日を表示する。
-V Apacheのコンパイル設定を表示する。

MS-DOSプロンプト

ここまででApacheの準備は完了しました。ここから更に詳しくApacheの設定をみていきますが、そんな暇はない、何が何でも取りあえず今直ぐ動かしたいという方は簡単Apacheを参照してください。

Apacheの設定

Apacheはテキスト形式の設定ファイルをWindowsのメモ帳などを使って編集します。WindowsスタイルのGUI(グラフィカルユーザーインターフェイス)はありません。設定ファイルを編集して保存したらその設定を有効にするためにApacheを再起動します。設定ファイルは C:\Apache\conf ディレクトリ内のhttpd.conf、srm.conf、access.confの3つで構成され、それぞれコメントと指示子の2要素で成り立っています。ただ、srm.conf、access.confは現在使用することを推奨されていません。全ての要素をhttpd.confにまとめたほうが混乱も少ないだろうとの理由です。従って編集が必要なのはhttpd.confのみとなります。

形式: <指示子> 引数 引数

例: ServerType  standalone

指示子と引数の間は空行で区切ります。尚、Perlと同様#(シャープ)はコメントとして扱われます。またパスを表示する\マークは/(スラッシュ)を使い、パスを指定するときは安全のためパス全体を引用符(")で囲みます。

例: #AccessConfig conf/access.conf  #でコメントアウト(無効化)している

例: ServerRoot  "C:/Apache" パスは引用符(")で囲む

各指示子を良く見ると、先頭が大文字で始まり、残りは小文字という規則性に気づくかも知れません。しかし、これは一般的な申し合わせ事項であり、特に絶対に守らなければならないということではありません。

httpd.conf

httpd.confは指示子と呼ばれるコマンドとその引数で設定され、指示子とその引数を追加したり、削除したり、あるいは組み合わせたりして、Apacheの動作を制御していきます。この指示子には大きく分けて2種類のカテゴリに分類されます。

コア指示子 Apacheのコアコードに影響する指示子
モジュール指示子 Apacheに機能を追加するモジュールプログラム

コア指示子

コア指示子には、サーバー全体の設定に影響するサーバー設定指示子と、特定のディレクトリ、ファイル、ロケーション等にのみ適用するコンテナ指示子があります。そして更に適用範囲の狭い、ディレクトリごとの指示子もあります。

サーバー設定指示子

サーバー設定指示子は、サーバーを設定するためと、サーバー上のファイルや他のオブジェクトを処理する方法を管理します。この指示子はコンテナ指示子内以外の場所ならどこにでも指定することができます。各指示子についての詳細はApacheの設定ファイル(httpd.conf)を参照ください。

コンテナ指示子

コンテナは<Directory ディレクトリ>・・・</Directory>というHTMLタグに似たタグの組み合わせから成り、サーバーの特定のファイルやディレクトリにのみ適用され、Apache全体には適用されません。コンテナ指示子に関しての詳細はコンテナ指示子を参照ください。またこの中のOptions指示子ではさまざまなオプションを指定することができます。

ディレクトリごとの指示子

ディレクトリごとの指示子はサーバー上の個々のディレクトリに適用できます。対象となるディレクトリを指定するには<Directory>ブロックを使うか、対象ディレクトリ内に特別な設定ファイルをおきます。この特別な設定ファイルの名前を .htaccess といいます。つまり、対象ディレクトリに.htaccessという名前のファイルがあれば、Apacheはその中に書かれてある指示子はそのディレクトリだけに適用される設定とみなします。デフォルトでは、Apacheは全ての.htaccessファイルを検索し、その中に特別な指示子が指定されていないかどうかを調べます。この一連の処理はサーバーパフォーマンスの大幅な低下を招く可能性があり、従ってこれを無効にするには明示的に

AllowOverride None

と指定する必要があります。

モジュール指示子

Apacheにはサーバー設定指示子以外にサーバーの機能を拡張するために指定できるサーバー処理系指示子(モジュール指示子)というものがあります。デフォルトでは20個近いモジュールが組み込まれており、それ以外にも多くのモジュールが用意されてあり、LoadModule指示子によりそれらを追加することができます。モジュール指示子とその機能についての詳細はApacheのモジュール一覧を参照ください。(モジュール:Apacheに機能を追加する小さなプログラムのこと)

・モジュールはこれ以外にも世界中の開発者がそれぞれ独自に開発しており、それらはApacheモジュールの登録サイトであるApache Module Registry https://modules.apache.org/ にて配布されています。

MIME(マイム)

Apacheはファイルをファイル名拡張子によって判断します。例えば

・名前が.htmまたは.htmlで終わるファイルはHTMLファイルである。
・名前が.jpegまたは.jpgで終わるファイルはJPEG画像ファイルである。

Apacheはこのような情報(MIME)をmime.typesというファイルに格納しています。このファイルはhttpd.conf等と同様に C:\Apache\conf ディレクトリにあります。もしもここに指定されていない未知のファイル名が発生した場合にはDefaultType指示子で指定されたファイル(text/plain:プレーンテキスト)として認識します。
新しいタイプの形式を追加するにはAddType指示子を使います。

形式: AddType MIMEタイプ 拡張子 拡張子・・・

例: AddType image/jpeg .jpe .jpg .jpeg

尚、Windows版では拡張子の前に.(ドット)を指定しますが、UNIXの場合は指定してはいけません。

また、同じようなものにmagicというファイルがあります。こちらはApacheがファイルの内容を見てその種類を判別できるようにするための情報が収められています。

Apacheのログファイル

Apacheではデフォルトでlogsディレクトリにアクセスログとエラーログが記録されます。ログファイルには

アクセスログファイル access.log サーバーへのリクエストをすべて記録する。
エラーログファイル error.log エラーのあったリクエストを記録する。
サーバーログファイル server-status サーバーの動作に関する情報を記録する。
参照元ログファイル referer.log リクエストの発生元となったドキュメントのURLを記録する。
エージェントログファイル agent.log サーバーにアクセスするために使用したブラウザの種類を記録する。

があり、これらによりサーバーへのアクセス状態、サーバーの動作状態を監視することができます。ログファイルはApacheの稼動中は開いたままになるため注意が必要です。データがどんどん蓄積されて、急速に大きくなり、ハードディスク領域を大きく占有する可能性があるからです。ログファイルは定期的にローテーションさせるべきです。残念ながらWindows版Apacheには自動でローテーションさせるための機能が備わっていませんので、サーバーを一旦停止してログファイルを別のディレクトリ等に移動し、サーバーを再起動させる必要があります。サーバーが起動するとログファイルは新規作成されます。ログファイルのカスタマイズ等詳細についてはApacheのログファイルを参照ください。

ここでもう一度Apacheの設定ファイル(httpd.conf)を見てみましょう。それぞれの指示子がどういった役割を果たしているのか理解できるはずです。

TOPページ(Alt+B)

CopyRight (C) 2000-2013 by T.Shiraishi All right reserved 無断転載禁止/リンクフリー