Debian Jessie에서 CGI를 허용하도록 Apache 2.4 구성

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>

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이고 소유권은 루트:루트(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.confApache가 다시 시작되지 않습니다.

스크립트 별칭 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

이는 웹 서버에 대한 인증을 구성하지 않았음을 의미합니다.

당신이하고 싶은 것은 당신이 다음과 같은 것을 가지고 있는지 확인하는 것입니다

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

데비안에는 기꺼이 사용하려는 경우 이 모든 작업을 수행하는 고급 구성 시스템이 있습니다 ;-)

이렇게 하려면 먼저 추가한 내용을 삭제(또는 주석 처리)하세요. 그 다음에:

a2enmod cgi
service apache2 restart

관련 정보