AKAI TSUKI

System development or Technical something

Apache2の設定メモ(CGI設定)

Apache2をインストールしました。
CGIを利用したいです。


で、cgiファイルを置いてみたのですが、動きませんT_T
cgiファイルのテキストの内容が表示されます。


というわけで、設定を見直します。


Ubuntuの場合は、apache2.confに設定を記述するようです。
さらに、apache2.confの中のInclude設定を見てみると以下のような設定があり

Include mods-enabled/*.load
Include mods-enabled/*.conf
Include httpd.conf
Include ports.conf
Include conf.d/
Include sites-enabled/

CGIに関する設定を確認するためにはsites-enabled/000-defaultを参照します。


"sites-enabled/000-default"は"sites-available/default"への
シンボリックリンクになっていますので、defaultファイルを見てみます。


私の環境(Ubuntu 11.10)では、以下のように(一部抜粋)なっていました。

        DocumentRoot /var/www
        
                Options FollowSymLinks
                AllowOverride None
        
        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        


設定を見ると、ScriptAliasで記述された箇所は
アクセスした際にcgiとして認識されて処理されるようです。


ただ、今回私がcgiを動かしたい場所は"/var/www/temp"の下なんですよね。。。
というわけで、このままでは動きませんT_T


apache2の設定を調べてみるとDirectoryの設定で
OptionsにExecCGIを設定する必要があるようです。

また、以下の設定が必要なようです。
AddHandler cgi-script .cgi


いまいち、"ExecCGI"と"AddHandler cgi-script .cgi"の関係をイマイチ理解してないのですが^^;
とりあえずどちらも設定しておけってことですかねぇ。。。
というか、設定ファイルをみたら、以下のように書いてありました。

# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#

設定しろと。


なので、以下のようにExecCGIを設定し、AddHandler cgi-scriptのコメントアウトを削除しました。

        
                Options ExecCGI Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        


apacheで設定を再読み込みします。

/etc/init.d/apache2 reload


そして、再度アクセスしてみます。
結果、Internal Server Errorが返ってきました。
うむ。とりあえず、CGIとして読み込まれたってことかな。。。^^;