jseek.org is study memo |
さて、前回は基本設定ということでした。そして、皆さんが設定すべきファイルとして
下のようなmyorig.confを ご用意いただいたと思います。
ServerName サーバのIPアドレス
|
インストール(CGI設定追加編)
今回はこの設定に「CGIを使えるようにする」という設定を加えていきたいと思います。
まず、今回CGI機能の追加にあたり、一般的なお話として
サーバにアカウントを持つユーザに対してホームページ公開ディレクトリで
そのままCGIを設置することができるということを目指します。
このときの前提としてユーザがホームページの公開のためにHTMLファイルなどを
置くディレクトリは
/home/アカウント名/public_html
|
このような場所にファイルをおくと、標準では
http://サーバのFQDN/~アカウント名/
|
としてファイルが公開されます。
このことから、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>
|
となります。ここで、アカウント名のところが「*(アスタリスク)」となっている理由ですが、
「*」はすべてのという意味をもっていて、すべてのアカウントに対して、今回の
機能を提供しようといういうことです。
これでCGIを実行することができるようになったわけですが、
ちょっと一般的な追記を行っておきたいと思います。
その一般的な追記とは、指定ディレクトリに対するアクセス制限です。
まず、指定したディレクトリに対するアクセスを許可するには「Allow」という
記述子を記述します。具体的には
Allow from 許可対象
|
と書きます。ここでの許可対象はクライアントのIPアドレスでもFQDNでもかまいません。
そして、「すべて」に対して許可を行い時には許可対象に「all」と書きます。
逆にアクセス拒否を行いたい場合には、Allowのところを「Deny」とすることにより
アクセス拒否を実現できます。
そしてこの設定にはもうひとつ追記が必要なのですが、その内容とは
「アクセス許可」「アクセス拒否」の設定の反映の順番です。この順番を指定するための
記述子はOrderです。この記述子に指定した順番でアクセスに関する設定を
反映させていきます。ここで記述例を示します。
Order allow,deny
|
この設定では、「許可設定を先に行い、例外的に拒否設定を反映させる」ということを
あらわしています。
ということで、基本設定から、ここまでの説明すべての設定を行ったmyorig.confを
下にしめしておきますね。
Server サーバのIPアドレス
|
ここまでの設定ができたら、基本設定編と同じく
# /usr/local/apache2/bin/apachectl stop
|
として、apacheを再起動し、設定を反映させましょう。
みなさん意図通りCGIを実行することができましたか?