Sorry,this site is Japanese only!
 jseek.org is study memo

Apache2

さて、前回は基本設定ということでした。そして、皆さんが設定すべきファイルとして
下のようなmyorig.confを ご用意いただいたと思います。

 

 ServerName サーバのIPアドレス
 ServerAdmin サーバ管理者のメールアドレス

 

 

インストール(CGI設定追加編)

今回はこの設定に「CGIを使えるようにする」という設定を加えていきたいと思います。
まず、今回CGI機能の追加にあたり、一般的なお話として
サーバにアカウントを持つユーザに対してホームページ公開ディレクトリで
そのままCGIを設置することができるということを目指します。

このときの前提としてユーザがホームページの公開のためにHTMLファイルなどを
置くディレクトリは

 

 /home/アカウント名/public_html

 

このような場所にファイルをおくと、標準では

 

 http://サーバのFQDN/~アカウント名/ 
  (もしくは http://サーバのFQDN/%7Eアカウント名/ )

 

としてファイルが公開されます。

このことから、CGIの利用を設定するディレクトリが標準で一般公開するための
ディレクトリとして設定されていることがわかります。
そして、標準では、このディレクトリに置かれたものは、一意に「ファイル」として
扱われます。CGIについては、単にファイルという認識をされては
動くことがままなりませんので、このディレクトリにCGIが置かれたら
「CGIとして認識して」「実行する」ということを指定します。

ここで「ディレクトリに指定をかける」というような表現がでてきました。
これを行うためのタグとしてapacheには

 

 <Directory 指定対象のディレクトリ>〜〜〜</Directory>

 

というものが存在します。ここで、「〜〜〜」は指定したディレクトリに対する
指示をさしています。

そして、今回行う指示は「CGIは実行」「cgiという拡張子をもつファイルはCGIであると認識する」
です。

まず、前者について、は標準では許可されないためオプションの設定となります。
こういったオプションを指定するための記述子として「Options」というものがあります。

そして、「CGIの実行」を意味するオプションは「ExecCGI」です。つまり、これらを組み合わせると

 

 Options ExecCGI

 

となります。

次に「拡張子がcgiとなっているものをCGIとして認識する」という話ですが
apache自身はCGIという存在をしっており、この存在のことを
cgi-scriptという名前で覚えています。

そして、拡張子cgiを持つものを、CGIとして扱うという宣言を行うには
次のような宣言を行います。

 

 AddHandler cgi-script .cgi

 

この二つを指定した地点ではじめてCGIを実行することができるようになります。

つまり
「 /home/アカウント名/public_html 」 に対して.cgiという拡張子をもつものを
おくとCGIとして実行する
という指令は

 

 <Directory /home/*/public_html>
 Options ExecCGI
 AddHandler cgi-script .cgi
  </Directory>

 

となります。ここで、アカウント名のところが「*(アスタリスク)」となっている理由ですが、
「*」はすべてのという意味をもっていて、すべてのアカウントに対して、今回の
機能を提供しようといういうことです。

これでCGIを実行することができるようになったわけですが、
ちょっと一般的な追記を行っておきたいと思います。

その一般的な追記とは、指定ディレクトリに対するアクセス制限です。
まず、指定したディレクトリに対するアクセスを許可するには「Allow」という
記述子を記述します。具体的には

 

 Allow from 許可対象

 

と書きます。ここでの許可対象はクライアントのIPアドレスでもFQDNでもかまいません。
そして、「すべて」に対して許可を行い時には許可対象に「all」と書きます。

逆にアクセス拒否を行いたい場合には、Allowのところを「Deny」とすることにより
アクセス拒否を実現できます。

そしてこの設定にはもうひとつ追記が必要なのですが、その内容とは
「アクセス許可」「アクセス拒否」の設定の反映の順番です。この順番を指定するための
記述子はOrderです。この記述子に指定した順番でアクセスに関する設定を
反映させていきます。ここで記述例を示します。

 

 Order allow,deny


この設定では、「許可設定を先に行い、例外的に拒否設定を反映させる」ということを
あらわしています。

ということで、基本設定から、ここまでの説明すべての設定を行ったmyorig.confを
下にしめしておきますね。

 

 Server サーバのIPアドレス
 ServerAdmin サーバ管理者のメールアドレス

  <Directory /home/*/public_html>
  Options ExecCGI
  AddHandler cgi-script .cgi
  Allow from all
  Order allow,deny
  </Directory>


ここまでの設定ができたら、基本設定編と同じく

 

 # /usr/local/apache2/bin/apachectl stop
 # /usr/local/apache2/bin/apachectl start


として、apacheを再起動し、設定を反映させましょう。
みなさん意図通りCGIを実行することができましたか?