저는 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.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
이는 웹 서버에 대한 인증을 구성하지 않았음을 의미합니다.
당신이하고 싶은 것은 당신이 다음과 같은 것을 가지고 있는지 확인하는 것입니다
<Directory /usr/local/apache2/cgi-bin>
Require all granted
</Directory>
데비안에는 기꺼이 사용하려는 경우 이 모든 작업을 수행하는 고급 구성 시스템이 있습니다 ;-)
이렇게 하려면 먼저 추가한 내용을 삭제(또는 주석 처리)하세요. 그 다음에:
a2enmod cgi
service apache2 restart