配置 Apache 2.4 以允许在 Debian Jessie 上使用 CGI

配置 Apache 2.4 以允许在 Debian Jessie 上使用 CGI

我是 Sysadmin 和 Apache 配置的新手。试图让 AWStats 运行,但在故障排除中,我们不得不尝试在端口 8888 上运行一个简单的 Hello World(html 输出)脚本,并且遇到了 403 禁止的墙。

这不是脚本:

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

我想也许我遗漏了配置 Apache 以允许 CGI 的一些内容。

模块 1. 注意:如果 Apache 已经构建了共享模块支持,则需要确保该模块已加载;在 apache2.conf 中,您需要确保 LoadModule 指令未被注释掉。正确配置的指令可能如下所示:

LoadModule cgi_module modules/mod_cgi.so

我不知道它是否是使用共享模块支持构建的。使用 apt-get 安装。在配置文件中找不到 LoadModule 行。如果我将上面的行添加到apache2.conf,Apache 将不会重新启动。

脚本别名 2. 配置文件中有一个ScriptAlias,由AWStats 放置在那里。添加这个指令ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/似乎没有做任何事情。我什至尝试将我的 hello(或者我应该说 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>

请注意,在 Debian 中,有一个高级配置系统,如果您愿意使用的话,它可以为您完成所有这些工作;-)

为此,请首先删除(或注释掉)您已添加的内容。然后:

a2enmod cgi
service apache2 restart

相关内容