私は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>
Shebangは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を設定するのに何かが欠けているようです。
基準寸法 1.注:Apacheが共有モジュールサポートを構築した場合は、モジュールがapache2.confにロードされていることを確認し、LoadModuleディレクティブがコメントアウトされていないことを確認する必要があります。正しく設定されたディレクティブは次のとおりです。
LoadModule cgi_module modules/mod_cgi.so
共有モジュールのサポートで構築されたかどうかはわかりません。 apt-getを使用してインストールします。構成ファイルにLoadModule行が見つかりません。上記の行をに追加すると、apache2.conf
Apacheは再起動されません。
スクリプトエイリアス
2.設定ファイルには、AWStatsによって配置されたScriptAliasがあります。このディレクティブを追加してもScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
何も起こらないようです。私はhellp(またはhellpと言うべきでしょう)スクリプトを/usr/local/apache2/cgi-bin/
Still 403に移動しました。
オプションの明示的な使用 追加してみましたが
Options +ExecCGI
AddHandler cgi-script .cgi
指示に<Directory /var/www/>
。
すべて役に立たない。次のステップのアイデアはありますか?
答え1
[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
これは、Webサーバーの認証を構成していないことを意味します。
あなたがしたいことは、あなたが次のようなものを持っていることを確認することです
<Directory /usr/local/apache2/cgi-bin>
Require all granted
</Directory>
Debianには、それを使用したい場合にこれらすべてを行う高度な設定システムがあります;-)
これを行うには、まず追加した内容を削除(またはコメントアウト)します。それから:
a2enmod cgi
service apache2 restart