レポ
クラウドで
伸びる人沈む人

連絡特定商取引将来設計運営方針&メルマガSEの彼女は?
成功レポート集 Fedora9インストール! EclipseでJava Oracleバックアップのアーキテクチャ ゼロからHPでCGI 便利ネット知識
無料レポ&講習 IT業界の実態 linux処方箋 Java処方箋 Oracle処方箋 Perl処方箋
Apache(httpd)でホームページ(Web)関連の設定を行うNo3(SSI,CGI)

<概要>


さてさて、引き続き、Aapache(httpd)に必要な設定をみていきますね。


ホームページ上でプログラムを動かすようにしてみます。
SSIとCGIと呼ばれるものです。


Apacheのデフォルトの設定では、SSIもCGIも動きません。


ではいってみます。

<SSIとCGIの共通設定(ファイル一覧に注意して)>


前回、ファイル一覧が表示しないように設定しました。



この設定オプションを今回も使います。
前回は、設定ファイル(/etc/httpd/conf/httpd.conf)の
Options Indexes FollowSymLinks をコメントアウトすることで、一覧画面が表示しないようになりました。


つまり #Options Indexes FollowSymLinks となっていると思います。

このIndexes は、ファイル一覧表示可という意味があります。
だから、ここをコメントアウトすると、ファイル一覧表示不許可となります。



今回のように、SSIとCGIを使うようにするためには、
設定ファイル(/etc/httpd/conf/httpd.conf)を

#Options Indexes FollowSymLinks

↓変更後

Options Includes ExecCGI FollowSymLinks

とします。

・Includesは、SSI許可
・ExecCGIは、CGI許可
とい意味があります。


ちなみに、
Options ALL FollowSymLinks
とすると、全てのオプションを許可にしてしまいます。


SSIもCGIも使えるようになりますが、ファイルの一覧表示も許可されてしまいます。




<実行例:SSIとCGIの共通設定>

# vi /etc/httpd/conf/httpd.conf

<Directory "/var/www/html">
・・
中略
・・
#Options Indexes FollowSymLinks ←デフォルトの設定は、コメントアウトになっていない(私は前回コメントアウト)

</Directory>


↓変更



<Directory "/var/www/html">
・・
中略
・・
Options Includes ExecCGI FollowSymLinks ←SSIとCGIの使用可

</Directory>

<まだCGIとSSIは動かない>


さて、上記の設定をしても、まだCGIとSSIは動きません。


ちなみに、本当に動かないか試してみましょう。
以下のコードをファイルにして、サーバーの中にいれてみましょう。


CGIのサンプル
ファイル名:hello.cgi


#!/usr/bin/perl
print "Content-type: text/html \n\n";
print "Hello";



SSIのサンプル
ファイル名:ssi_sample.html


今日は
<!--#config timefmt="%a, %b %d, %Y" -->
<!--#echo var="DATE_LOCAL" -->
です。


●ファイルをつくったら、サーバーに入れて試してみましょう。
 以下のように動きません。

<画面:動かないCGIのサンプル>



ソースコードがそのまま表示されてしまうか、ダウンロードを求めてくると思います。

<画面:動かないSSIのサンプル>



「今日は」の後に、SSIでつくった日付がはいりませでした。

<CGIファイルを指定する>


CGIを動かすには、
Apacheの設定で、CGIファイルの拡張子を指定する必要があります。


設定ファイル(/etc/httpd/conf/httpd.conf)の

#AddHandler cgi-script .cgi
↓変更後
AddHandler cgi-script .cgi .pl

とすると、うまくいきます。

※ .pl もプログラムの拡張子としてよく使用するので、あわせていれておきました。

<実行例:CGIファイルを指定する>

# vi /etc/httpd/conf/httpd.conf

・・
中略
・・
#AddHandler cgi-script .cgi

↓変更

AddHandler cgi-script .cgi .pl ←拡張子cgiとplをCGIファイルと指定しました


[root@www html]# /etc/rc.d/init.d/httpd restart ←再起動
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

<画面:CGIファイルを指定する>



CGIファイルを指定することにより、Helloと表示されるようになりました。

<SSIファイルを指定する>


同じくSSIを動かすには、
Apacheの設定で、SSIファイルの拡張子を指定する必要があります。


設定ファイル(/etc/httpd/conf/httpd.conf)の

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

↓変更後

AddType text/html .shtml .html .htm
AddOutputFilter INCLUDES .shtml .html .htm

とすると、うまくいきます。

※ つまり、変更前の設定だと、拡張子shtmlしか指定していないのである。
デフォルトでは、shtmlだけSSI可能とすることで、サーバーの負担を減らす設定になっている。

<実行例:SSIファイルを指定する>

# vi /etc/httpd/conf/httpd.conf

・・
中略
・・
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml


↓変更(htmlとhtmもSSIが動くようにする)

AddType text/html .shtml .html .htm
AddOutputFilter INCLUDES .shtml html .htm



[root@www html]# /etc/rc.d/init.d/httpd restart ←再起動
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]

<画面:SSIファイルを指定する>



こんどは、日付が表示されました。

<おまけ perlのシンボリックリンクを貼ろう>


上のhello.cgiのソースに
#!/usr/bin/perl とあります。


これは、perl の実行場所を示しているのですが、サーバーによっては、
/usr/local/bin/ の場合もあります。

そこで、
#ln -s /usr/bin/perl /usr/local/bin/perl
をしておくことをお奨めします。

よくわからない方は、管理者のコマンドでとにかく
#ln -s /usr/bin/perl /usr/local/bin/perl を実行してしまいましょう。

<実行例:perlのシンボリックリンクを貼ろう>

# ln -s /usr/bin/perl /usr/local/bin/perl


クラウドで伸びる人沈む人 ||Copyright © 2005-2019 SearchMan,All Rights Reserved.