web-dev-qa-db-ja.com

Debian JessieでCGIを許可するようにApache 2.4を構成する

SysadminとApacheの設定は初めてです。 AWStatsを実行しようとしていますが、トラブルシューティングでは、ポート8888で単純なHello World(html出力)スクリプトを実行しようとし、403 Forbiddenの壁にぶつかっています。

スクリプトではありません。

mikekilmer@glitchbox:/var/www/html$ Perl /usr/lib/cgi-bin/hello.pl
Content-type: text/html

<HTML>

<HEAD>
<TITLE>Hello, world!</TITLE>
</HEAD>

<BODY>
<H1>Hello, world!</H1>
</BODY>

</HTML>

シバンはPerlへのパスに一致します:#!/usr/bin/Perl

主な構成設定は次のとおりです。

<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>

<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

ディレクトリとファイルの権限は755と644で、所有権はroot:root(cgi-binおよびPerlファイル上)です。

Apacheのhtml/index.htmlが表示されます: http://www.infiniteglitch.net:8888/manual.html/howto/cgi.html

これはエラーログの内容です:[Sat Jun 06 05:53:24.412867 2015] [authz_core:error] [pid 28374:tid 140381836453632] [client 108.205.62.183:55886] AH01630: client denied by server configuration: /usr/local/Apache2

CGIを許可するようにApacheを構成するときに何かが足りないのではないかと思います。

Module1.注:Apacheが共有モジュールサポートでビルドされている場合、モジュールがロードされていることを確認する必要があります。 Apache2.confでは、LoadModuleディレクティブがコメント化されていないことを確認する必要があります。正しく構成されたディレクティブは次のようになります。

LoadModule cgi_module modules/mod_cgi.so

共有モジュールのサポートで構築されたかどうかはわかりません。 apt-getでインストールされます。構成ファイルでLoadModule行が見つかりません。上記の行をApache2.confに追加すると、Apacheが再起動しません。

ScriptAlias2. AWStatsによって配置された構成ファイルに1つのScriptAliasがあります。このディレクティブScriptAlias /cgi-bin/ /usr/local/Apache2/cgi-bin/を追加しても、何も実行されなかったようです。こんにちは(またはhellpと言います)スクリプトを/usr/local/Apache2/cgi-bin/ 403に移動しようとしました。

明示的にオプションを使用

Options +ExecCGI
AddHandler cgi-script .cgi

<Directory /var/www/>ディレクティブに。

まったく役に立たない。次のステップのアイデアはありますか?

3
MikeiLL
[Sat Jun 06 05:53:24.412867 2015] [authz_core:error] [pid 28374:tid 140381836453632] [client 108.205.62.183:55886] AH01630: client denied by server configuration: /usr/local/Apache2

つまり、ウェブサーバーの認証が設定されていません。

あなたがしたいことはあなたが次のようなものを持っていることを確認することです

<Directory /usr/local/Apache2/cgi-bin>
    Require all granted
</Directory>

Debianには、もしあなたがそれを使っていたなら、あなたのためにこれをすべて実行してくれる高度な設定システムがあることに注意してください;-)

これを行うには、最初に、すでに追加したものを削除(またはコメントアウト)します。次に:

a2enmod cgi
service Apache2 restart
5
Wouter Verhelst