三陸牡蠣復興支援プロジェクト「SAVE SANRIKU OYSTER」



Apacheサーバの設定

設定ファイル「httpd.conf

Apacheのインストールは完了しました。次に、Apacheの諸設定を行います。設定では、ドキュメントルートの変更などを行います。設定を変更するには、「Apache」フォルダ内の「conf」フォルダの中にある「httpd.conf」ファイルの記述を変更します。

このファイルは、「スタート」→「プログラム」→「Apache HTTP Server」→「Configure Apache Server」の中の「Edit the Apache httpd.conf Configuration File」をクリックしても開く事が出来ます。

なお、このページでは必要最小限の事しか書きませんので、詳しく知りたい場合はApacheのドキュメントをご覧下さい。

ドキュメントルートの変更

DocumentRoot ディレクティブ(301行目付近)
DocumentRoot "C:/Apache/htdocs"

#DocumentRoot "C:/Apache/htdocs"
DocumentRoot "C:/html/public_html"

上のような感じで、ドキュメントルートの変更を行う事が出来ます。

なお、フォルダの区切り文字が「\(円マーク)」ではなく「/(スラッシュ)」である事に注意して下さい。Apacheの設定では、フォルダの区切り文字には、アドレスバーに入力するのと同じ様に「/(スラッシュ)」が使われます。

また、ドキュメントルートの最後に「/」を付けて、「DocumentRoot "C:/html/public_html/"」のように書くと問題があるそうなので、書かないようにしましょう。

ちなみに、「ディレクティブ」とは、「ディレクトリ」ではなく「ディレクティブ」で、「命令」という意味です。

また、行の先頭に「#(シャープ)」を置くと、その行はコメントアウトされ無視されます。

更に、以下の個所も変更します。

<Directory> ディレクティブ(326行目付近)
<Directory "C:/Apache/htdocs">
    ……
</Directory

#<Directory "C:/Apache/htdocs">
<Directory "C:/html/public_html">
    ……
</Directory

これは、指定したディレクトリ内のディレクトリに関する設定をするところです。

ここでは仮に「C:/html/public_html」と設定しましたが、実際に公開するサーバが、例えば「/hodenasu/ndegasu/public_html」のようになっている場合は、これに合せて「C:/hodenasu/ndegasu/public_html」となるように構成して設定すると後々都合が良くなります。

モジュールの追加

まず、「モジュール」とは、“着脱可能な部品”といったイメージのもので、モジュールを追加する事は、Apacheに様々な機能を付加するという事になります。Apacheはデフォルトで様々なモジュールを含んでおり、殆どモジュールで構成されているような感じです。PHPもその1つのモジュールであり、追加する事によって、PHPが使えるようになります。

ここから先は、PHPをインストールしてから設定するのが“筋”なのですが、ここで書いちゃいます。

LoadModule ディレクティブ(192行目付近)
#LoadModule unique_id_module modules/mod_unique_id.so

[ PHP4 の場合の設定]

#LoadModule unique_id_module modules/mod_unique_id.so

LoadModule php4_module C:/php/sapi/php4apache.dll

[ PHP5 の場合の設定]

#LoadModule unique_id_module modules/mod_unique_id.so

LoadModule php5_module C:/php/php5apache.dll
AddModule ディレクティブ(240行目付近)
AddModule mod_setenvif.c

[ PHP4 の場合の設定]

AddModule mod_setenvif.c

AddModule mod_php4.c

[ PHP5 の場合の設定]

AddModule mod_setenvif.c

AddModule mod_php5.c

この変更により、ApacheにPHPの機能を持たせる事が出来ます。が、実際にはまだPHPのモジュールをインストールしていないので、エラーになります。

上記の2つのディレクティブについては、Apacheを起動させた状態で「http://localhost/manual/mod/」にアクセスすると、モジュールに関するマニュアルがご覧になれます(オイ)。


「・・・。アレェ?ドキュメントルート変更したのになんでそのアドレスにアクセスすっと、サーバルートの中にあるマニュアル見れんだ?おかしくねぇ?オイ!コノ野郎!なんでドキュメントルートじゃない所のファイルが見れるんだよ!」


「お客様!マニュアルをご覧になって下さい!」


「キーッ!ってなる。。。」


これは、「httpd.conf」ファイルの597行目付近の「Alias /manual/ "C:/Apache/htdocs/manual/"」の設定によるものです。詳しくはマニュアルをご覧になって下さい。

ディレクトリインデックスの設定

例えば、「http://www.shigeweb.jp/index.htm」というファイルがあった場合、「http://www.shigeweb.jp/」とアドレスバーに入力してアクセスしても見る事が出来ます。

これは、「index.htm」というファイルが「ディレクトリインデックス」として設定されているためです。ファイル名を省略してディレクトリ(フォルダ)にアクセスした場合、そのディレクトリの「ディレクトリインデックス」が開かれます。

デフォルトでは「index.html」のみがディレクトリインデックスとして設定されているので、PHPファイルがインデックス(最初に表示させたいページ)である場合、いちいちファイル名まで入力しないといけません。それでは不便なので、「index.php」などのファイルもディレクトリインデックスとして設定します。

DirectoryIndex ディレクティブ(387行目付近)
<IfModule mod_dir.c>
    DirectoryIndex index.html
</IfModule>

<IfModule mod_dir.c>
    DirectoryIndex index.php index.htm index.html
</IfModule>

スペースで区切って、複数指定できます。左側のもの程優先順位が高く、「index.htm」と「index.php」の2つのファイルがあった場合、「index.php」の方が表示されます。

PHPファイルをPHPファイルとして認識させる

PHPスクリプトは、サーバがそのスクリプトが記述されたファイルがPHPファイルであると認識していないと、ソースがそのまんま送信してしまい、それが表示されてしまいます。

「index.php」という名前でサーバに置いても、サーバがそれをPHPファイルであると認識していなければ、「HTMLかなぁ?」と、HTMLとして送信してしまいます。ので、「ファイル名.php」というファイルをPHPファイルであると認識するように設定する必要があります。

AddType ディレクティブ(436行目付近)
<IfModule mod_mime.c>
    TypesConfig conf/mime.types
</IfModule>

<IfModule mod_mime.c>
    TypesConfig conf/mime.types

    AddType application/x-httpd-php .php .inc
    AddType application/x-httpd-php-source .phps
</IfModule>

この追記により、「ファイル名.php」と「ファイル名.inc」はPHPファイルとして認識されるようになります。

また、「ファイル名.phps」は、PHPソースコードファイルとして認識されるようになります。これがどういうことかというと、PHPファイルのファイル名を「ファイル名.phps」にし、それにアクセスすると、ソースコードが綺麗に色付けされて出力されるというものです。

ついでの設定1(CGIを使うための設定)

PHPは、CGIとして使う事も出来ます。CGI版PHPを使いたかったり、Perlスクリプトを使いたい場合は、CGIが動作するように設定する必要があります。

Options ディレクティブ(339行目付近)
<Directory "C:/html/public_html">
    Options Indexes FollowSymLinks MultiViews
</Directory>

<Directory "C:/html/public_html">
    Options Indexes FollowSymLinks MultiViews ExecCGI
</Directory>

これでCGIが機能するようになります。更に、以下の様に変更します。

AddHandler ディレクティブ(836行目付近)
<IfModule mod_mime.c>
    ……
    # To use CGI scripts:
    #
    #AddHandler cgi-script .cgi .pl
    ……
</IfModule>

<IfModule mod_mime.c>
    ……
    # To use CGI scripts:
    #
    AddHandler cgi-script .cgi .pl
    ……
</IfModule>

この変更により、「ファイル名.cgi」と「ファイル名.pl」はCGIとして認識され処理されます。PHPファイルであっても、ファイル名は「ファイル名.cgi」もしくは「ファイル名.pl」です(CGI版の場合)。

補足
  • PHPと関係ありませが、Perlを使うには別途「ActivePerl」をインストールする必要があります。
  • ActivePerlもCGI版PHPも、契約中のサーバで指定されている実行パスに合うように設置すると、スクリプトの記述(実行パスの指定)を変更する手間が省けて便利です。
    #!/usr/local/bin/perl
    
    #「C:\usr\local\bin\perl.exe」となるように設置する。
    
    print "<h1>Perl OK!</h1>";
    
    #!/usr/local/bin/php
    
    #「C:\php\php-cgi.exe」を
    #「C:\usr\local\bin\php-cgi.exe」に移動。
    #「C:\usr\local\bin\php.exe」にリネーム。
    
    <?= "<h1>PHP-CGI OK!</h1>" ?>
    
    CGI版のPHPを使うメリットって殆どないようだし、実運用サーバがCGI版しか提供していなかったり、Perlを使いたいという場合に設定しましょう。

ついでの設定2(アクセス制限)

自分のパソコンで自分だけで使ってるのにアクセス制限もクソも無いように思えますが、ネットに繋がっている状態でApacheが起動していると、もう既に立派な自家サーバとして成立しており、外部からアクセス出来てしまいます。

試しに、「<?=$_SERVER["REMOTE_ADDR"]?>」と記述したファイルをサーバにアップして得られた自分のパソコンのIPアドレスを、ブラウザのアドレスバーに「http://IPアドレス」と入力してアクセスすると、「http://localhost(もしくは「http://127.0.0.1」)」と同じ様にアクセス出来ると思います。自分のパソコンのIPアドレスを特定されなければアクセスされる事はありませんが、どういった経緯でかは別としてアクセスされる可能性はあるわけで、制限しておいた方が安心です(ネットに繋がなきゃいいんですが)。

OrderAllowDeny ディレクティブ(351行目付近)
<Directory "C:/html/public_html">
    ……
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all
</Directory>

<Directory "C:/html/public_html">
    ……
#
# Controls who can get stuff from this server.
#
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
</Directory>

「127.0.0.1」からのアクセスのみを許可するという設定です。「127.0.0.1」は自分自身を指す特別なアドレスなので、これで自分以外はアクセス出来なくなります。多分(オイ)。

設定ファイルの確認

設定が終ったら、誤りが無いかをチェックする必要があります。「スタート」→「プログラム」→「Apache HTTP Server」→「Configure Apache Server」の中の「Test Configuration」をクリックすると、「httpd.conf」の記述に誤りが無いかをチェックし、その結果をコンソール画面に出力します。

今回の設定では、ありもしないPHPモジュールをロードするように設定したため、エラーになります。

エラーが無ければ、Apacheサーバを再起動(起動済みなら)させます。

以上で、Apacheの設定の解説は終了です。次のページで、PHPのインストールと設定について解説します。

作成日:2004年06月02日 最終更新日:2004年11月17日
【印刷モード風モード で表示】