投稿日:2004年05月05日 作成鷹の巣

No.15864 ApacheでCGIが動作しません。httpd.confの設定箇所は?



ApacheでCGIが動作しません。httpd.confの設定箇所は?

No.15864 投稿時間:2004年05月05日(Wed) 15:45 投稿者名:nanako URL:

お初の投稿です。
私はapacheでwebサーバを構築しているのですが、どうしてもcgiが動きません。
どこかhttpd.confでおかしいところがあると私は思っているのですが、そこが見つけられません。
どうか皆さんのお力で助けてください。
参考までにhttpd.confをアップロードしておきましたので、ぜひご教授ください。
http://f16.aaacafe.ne.jp/~exceler/httpd.conf


参考URL

No.15865 投稿時間:2004年05月05日(Wed) 20:40 投稿者名:Reboot URL:

> お初の投稿です。
> 私はapacheでwebサーバを構築しているのですが、どうしてもcgiが動きません。
> どこかhttpd.confでおかしいところがあると私は思っているのですが、そこが見つけられません。
> どうか皆さんのお力で助けてください。
> 参考までにhttpd.confをアップロードしておきましたので、ぜひご教授ください。
> http://f16.aaacafe.ne.jp/~exceler/httpd.conf

リンク先のページが表示されないので、httpd.conf の設定内容が分かりません。
設定は下記のページが参考になるのでは。
http://www.apache.jp/docs/howto/cgi.html#configuringapachetopermitcgi

ところで perl はインストールしてあるのですか?。


CGIで動作させると、画像(gif,png)が表示されません。

No.15866 投稿時間:2004年05月05日(Wed) 21:06 投稿者名:nanako URL:

早速ありがとうございました。
参考urlですが、一応アップしたのですが、パーミッション設定がうまくいかずでなくなってしまいました。
とにかくRebootさんが参考ページを出していただいたのでそこを参考に再設定しなおしてみました。
多分原因は、ScriptAliasが/home/*/public_htmlとなっていたためだと思います
その下の<Directory /home/*/public_html>と設定していたためどうやらご認識していたように思います。

ScriptAlias /home/hoge/public_html
<Directory /home/*/public_html>

と直したところ、きちんと動作しましたが、Userつまりhttp://www.hoge.net/~hoge/cgi-bin/hoge/hoge.cgiでCGIを動作させると、画像がうまく表示されるのですが、http://www.hoge.net/cgi-bin/hoge/hoge.cgiで動作させると、画像(gif,png)が表示されません。この辺の設定はどのようにしたらよいのでしょうか。


ScriptAliasで指定したディレクトリにあるファイルはすべてCGIとして処理されます。

No.15869 投稿時間:2004年05月06日(Thu) 05:53 投稿者名:APACHE URL:http://kemuri-net.dip.jp/~server/worm.txt

> と直したところ、きちんと動作しましたが、Userつまりhttp://www.hoge.net/~hoge/cgi-bin/hoge/hoge.cgiでCGIを動作させると、画像がうまく表示されるのですが、http://www.hoge.net/cgi-bin/hoge/hoge.cgiで動作させると、画像(gif,png)が表示されません。この辺の設定はどのようにしたらよいのでしょうか。

>
その画像に直接アクセスするとおそらくINTERNAL SERVER ERROR(インターナルサーバーエラー)になると思います。
まぁScriptAliasについて調べればわかるのですが
ScriptAliasで指定したディレクトリにあるファイルはすべてCGIとして処理されます。
※画像だろうが何だろうが関係なくファイルはすべてCGIとして処理。

なのでScriptAliasの影響のないディレクトリに画像を起き呼び出す必要があります。


AliasならばCGIにとらわれることなく動くようです。

No.15872 投稿時間:2004年05月06日(Thu) 08:59 投稿者名:nanako URL:

APACHEさんありがとうございました。
画像が表示されないことについては
ScriptAlias /cgi-bin/ /home/hoge/public_html/cgi-bin/
を次のようにすることによって解決できました。
Alias /cgi-bin/ /home/hoge/public_html/cgi-bin/

Alias ならばCGIにとらわれることなく動くようです。
ありがとうございました。


何か変ですね?

No.15877 投稿時間:2004年05月07日(Fri) 00:14 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

> APACHEさんありがとうございました。
> 画像が表示されないことについては
> ScriptAlias /cgi-bin/ /home/hoge/public_html/cgi-bin/
> を次のようにすることによって解決できました。
> Alias /cgi-bin/ /home/hoge/public_html/cgi-bin/
>
> Alias ならばCGIにとらわれることなく動くようです。
> ありがとうございました。

UserDirで複数ユーザで動かすようにしていて、Aliasでcgi-binを特定ユーザ用のディレクトリ
にアサインするというのは、何か変な解決方法ですね。
実際は、一人しかいないのにUserDirを使っているなら話は別ですが・・・。
下記を参考にされたらどうですか。

http://www.aconus.com/~oyaji/tips/apache_tips3.htm
http://www.aconus.com/~oyaji/faq/apache_cgi5.htm


先ほどの設定以外に何か手立てはあるのでしょうか。

No.15878 投稿時間:2004年05月07日(Fri) 00:34 投稿者名:nanako URL:

> UserDirで複数ユーザで動かすようにしていて、Aliasでcgi-binを特定ユーザ用のディレクトリ
> にアサインするというのは、何か変な解決方法ですね。
> 実際は、一人しかいないのにUserDirを使っているなら話は別ですが・・・。

おやじさんありがとうございます。
httpd.confの設定では次のようになっていま

Alias /cgi-bin/ /home/root/public_html/cgi-bin/
<Directory /home/*/public_html/cgi-bin>
AddHandler cgi-script .cgi .pl
Options ExecCGI
</Directory>

http://www.hoge.net/cgi-bin/joyful/joyful.cgi
http://www.hoge.net/~hoge1/cgi-bin/joyful/joyful.cgi

このようにしたいと思っているのですが、先ほどの設定以外に何か手立てはあるのでしょうか。
参照webを示していただいたのですが、私は初心者なのでよくわかりません。
もしよろしければ、詳細を教えてください。


やりたいことがよく分かりませんが・・・。

No.15888 投稿時間:2004年05月07日(Fri) 23:50 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

> httpd.confの設定では次のようになっていま
> 
> Alias /cgi-bin/ /home/root/public_html/cgi-bin/
> <Directory /home/*/public_html/cgi-bin> 
> 	AddHandler cgi-script .cgi .pl 
> 	Options ExecCGI 
> </Directory> 
> 
> http://www.hoge.net/cgi-bin/joyful/joyful.cgi
> http://www.hoge.net/~hoge1/cgi-bin/joyful/joyful.cgi
> 
> このようにしたいと思っているのですが、先ほどの設定以外に何か手立てはあるのでしょうか。

 申し訳ありませんが、上記のアクセス方法だけでは、今一やりたいことが見えてきません。
やりたいことを具体的に示していただければ、お手伝いできるかもしれませんが・・・。
 上記のアクセス方法をみると、

1.このサーバ上には複数のユーザがいて、http://www.hoge.net/~hoge1/・・・のようなアクセス方法(
  UserDirの使用)で、各ユーザ毎のコンテンツを配信したい。
2.その時、各ユーザにCGIを開放するのではなく、cgi-bin配下においたサーバ共通のCGIを使わせたい。
  (複数ユーザで共有できるようになっているCGIはあまりないので疑問ですが?)
3.そのCGIは、サイトのメインのアクセスでも使用したい。
 と読めるのですが・・・。

 実態は、一人しかユーザは存在しないにもかかわらず、UserDirを使わなければいけないと思っているだけ
ではありませんか?

 因みに、2項が疑問ですが(使用しようとしているCGIが、例えばカウンタだとして、一つのCGIでユーザ毎の
カウンタを動作できるのか?)、要求条件が上記のとおりだとすると、上記設定は全て消して、下記でできるはずです。
OSが分からないのでLinuxとします。cgi-binのパスはapache2.0系をソースから入れた場合ですので、自分の
環境に合わせてください。AddHandler image/gif .gif 以下は、cgi-binディレクトリ配下で画像等をcgiとして
動作させないための設定で、前回リンク先参照のこと。

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews SymLinksIfOwnerMatch IncludesNoExec (ExecCGIは不要)
#    <Limit GET POST OPTIONS PROPFIND>
#        Order allow,deny
#        Allow from all
#    </Limit>
    <LimitExcept GET POST OPTIONS PROPFIND>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

#ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" (これはコメントアウトすること。矛盾する)
ScriptAliasMatch ^/cgi-bin/(.+) /usr/local/apache2/cgi-bin/$1
ScriptAliasMatch ^/~([a-zA-Z0-9_-ハ+)/cgi-bin/(.+) /usr/local/apache2/cgi-bin/$2

<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    AddHandler image/gif .gif   
    AddHandler image/jpeg .jpeg .jpg .jpe
    AddHandler image/png .png
    AddHandler text/html .html .htm
</Directory>

> 参照webを示していただいたのですが、私は初心者なのでよくわかりません。
> もしよろしければ、詳細を教えてください。

 かなり噛み砕いて書いたつもりですが、わかりませんか? 恐らく、言葉の意味がわからないのだと思うのですが・・・。
 後、皆さんも書かれてますが、Apacheのドキュメントを一度じっくり読んで、自分なりにテストしてみると、
いろいろ見えてくると思いますよ。


そのとおりにやりましたらできました。

No.15894 投稿時間:2004年05月08日(Sat) 10:55 投稿者名:nanako URL:

おやじさんありがとうございました。
そのとおりにやりましたらできました。
今httpd.confを読み直し勉強しなおしています。
本当ならば意味を理解してこの掲示板で質問すべきだったかもしれませんね。
今回は本当にありがとうございました。


まずは良かったですね。

No.15897 投稿時間:2004年05月08日(Sat) 13:07 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/

> そのとおりにやりましたらできました。
> 今httpd.confを読み直し勉強しなおしています。
> 本当ならば意味を理解してこの掲示板で質問すべきだったかもしれませんね。
> 今回は本当にありがとうございました。

まずは良かったですね。是非動いておしまいにしないで、動かすという意識で
勉強されたらいいと思います。どこぞの設定のとおりやったら動いたではなく、
設定を参考にして動かしたといえるといいですね。
ScripTAliasMacthの右側は正規表現を勉強すれば、設定の意味も分かるでしょうし
応用もできます。
運用/セキュリティポリーシーをはっきりさせるといいです。

・ユーザは一人か?複数か?
・複数ユーザの場合、ユーザは信頼できるか?(身内だけか、不特定か? CGIのしっかり
設置・設定できるか? オリジナルCGIを設置したりしないか? 悪意はなくてもシステム
を壊すこともできるので。)
・上記を踏まえ、CGIの設置をユーザに開放するか? 管理者が設置代行するか?
(ディレクトリ構成やftpの設定に影響)

等々を考えれば、対策しなければならない範囲が見えてきて、それをhttpd.confの設定
でどうやるのか調べていけば自ずと設定も固まってくるはずです。


ありがとうございました。

No.15901 投稿時間:2004年05月08日(Sat) 22:29 投稿者名:nanako URL:

私も管理者として、学ぶべきことをしっかり学びたいと思います。
管理者がしっかりしなければシステムは悪意ある人にさらされて大きなダメージを受けかねませんし。
今回のことでセキュリティーに関しての意識が高まりました。
よく勉強していきます。
また鷹の巣さんのWEBページも大いに参考にし、今後のサーバ管理に役立てていこうと思いました。


一つのCGIでユーザ毎のカウンタを動作

No.15903 投稿時間:2004年05月09日(Sun) 00:24 投稿者名:Reboot URL:

揚げ足を取るつもりではありません。いや~おやじさんでも知らないことがあるのかなと思いまして…。(^^;)

> 因みに、2項が疑問ですが(使用しようとしているCGIが、例えばカウンタだとして、一つのCGIでユーザ毎の
> カウンタを動作できるのか?)…

ケントウェブさんの Dream Counter (CGIのみで動作し、1つのカウンタプログラムで複数ユーザの複数ページに
設置が可能です。また時計表示やカレンダ表示も可能です。もちろん画像連結もサポート。)
フロバイターやレンタルサーバでよく使われています WWWCOUNT も複数サイトの複数のページのカウントをひとつの
プログラムでしますよね。(設定によっては、自動的にログファイルを作るので、利用者はタグを書き込むだけです。)

参考になればと思い投稿致しますが、本件には関係ありませんね、余計なお節介でした。m(_ _)m


もう解決されたみたいですが、参考までに。

No.15896 投稿時間:2004年05月08日(Sat) 12:03 投稿者名:聞疑始 URL:http://homeserver-streaming.com/

もう解決されたみたいですが、参考に・・・
http://www.hoge.net/~hoge/・・・このような設定をされるのでしたら、
http://www2j.biglobe.ne.jp/~apollo/server/apacconfig2.html
↑こちらが参考になると思います。

CGIの実行を下記の設定でされてますが、私は私しか使わないので、
上記のuserタイプや下記のScriptAliasも使っていません。
>ScriptAlias /cgi-bin/ /home/hoge/public_html/cgi-bin/
>を次のようにすることによって解決できました。
>Alias /cgi-bin/ /home/hoge/public_html/cgi-bin/

難しいことはわかりませんが、私はCGIはどこのディレクトリでもOKという設定にしていまする。
つまりScriptAliasを使っていません。
● 775行目付近の #AddHandler cgi-script .cgi → AddHandler cgi-script .cgi (#を外す)
をして、あとはCGIを使いたい各々のディレクティブ指定のOptionsで、ExecCGIを書けばOKです。
逆に使いたくないときは、書かなければいいんでする。
ディレクティブって↓こんなとこをいうんですね。
<Directory /home/*/public_html>
Options Indexes FollowSymLinks MultiViews ExecCGI Includes
AllowOverride None
Order allow,deny
Allow from all
</Directory>

そうすると、CGIも画像もみーーんな使うことが出来ます。
といっても、Options指定を間違うと駄目かも・・・

簡単な設定を突っ走ってますが、こんな方法なら
↓にその変をやったドラマを書いています。
http://homeserver-streaming.com/server/
ちなみに、私が始めての設定でバッチリできた参照サイトは、上にも書いてますが
「ActivePerlとApacheでパソコンをサーバに」の
http://www2j.biglobe.ne.jp/~apollo/server/apacconfig1.html
です。
このとおりすればまずは出来ました。
あっ、Windowsですm(__)m


|目次|掲示板|過去ログ目次|▲頁先頭|