配置 Apache 2.4 以允許 Debian Jessie 上的 CGI
我是系統管理員和 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
我想也許我在配置 Apache 以允許 CGI 時遺漏了一些東西。
模組
- 注意:如果 Apache 已經建構了共享模組支持,您需要確保模組已載入;在您的 apache2.conf 中,您需要確保 LoadModule 指令沒有被註釋掉。正確配置的指令可能如下所示:
LoadModule cgi_module modules/mod_cgi.so
我不知道它是否是使用共享模組支持建構的。使用 apt-get 安裝。在配置文件中找不到 LoadModule 行。如果我將上面的行添加到
apache2.conf
,Apache 將不會重新啟動。ScriptAlias 2. 配置文件中有一個ScriptAlias,由AWStats 放在那裡。添加這個指令
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
似乎沒有做任何事情。我什至嘗試將我的 hello(或者我應該說 hellp)腳本移動到/usr/local/apache2/cgi-bin/
靜止的 403 中。顯式使用選項 甚至嘗試添加
Options +ExecCGI AddHandler cgi-script .cgi
到
<Directory /var/www/>
指令。一切都無濟於事。下一步有什麼想法嗎?
[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