クラウドで 伸びる人沈む人 |
|
|
|
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の共通設定> <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ファイルを指定する> ・・ 中略 ・・ #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ファイルを指定する> ・・ 中略 ・・ 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のシンボリックリンクを貼ろう> |