在Apache上启用CGI脚本

2020年12月31日19:40:17 发表评论 60 次浏览

了解如何启用CGI脚本在Apache Web服务器上运行。本教程包括有关添加必要的Apache配置以允许CGI脚本运行以及如何在目录和CGI文件上设置正确权限的分步说明。

要求

  • 安装并运行了具有CentOS 7或Ubuntu 16.04和Apache的云服务器。

注意:默认情况下, Apache已在标准Linux安装中安装并运行。如果你的服务器是使用最小安装创建的, 则在继续之前, 你将需要安装和配置Apache。

在Apache配置中启用CGI脚本

概述:为了在具有Apache的Linux服务器上运行CGI脚本, 需要设置两件事:

  • 需要将Apache配置为允许CGI脚本运行。
  • 该脚本需要上载到正确的位置, 并具有正确的权限。

CentOS 7上CGI脚本的Apache设置

打开httpd.conf用于编辑的文件:

sudo nano /etc/httpd/conf/httpd.conf

找到以下内容:

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

在此部分中添加以下两行:

Options +ExecCGI
AddHandler cgi-script .cgi .pl .py

第一行告诉Apache执行CGI文件, 这些文件将上传到/ var / www / cgi-bin目录。第二行告诉Apache任何以结尾的文件.cgi, .pl, 要么.py被视为CGI脚本。

该部分现在显示为:

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Require all granted
</Directory>

保存并退出文件。然后重新启动Apache, 以使更改生效:

sudo systemctl restart httpd

Ubuntu 16.04上CGI脚本的Apache设置

在Ubuntu 16.04上, 默认情况下将Apache配置为允许在指定的位置执行CGI脚本/ usr / lib / cgi-bin目录。你将不需要更改任何Apache配置。

但是, 必须先启用Apache的CGI模块, 然后才能运行CGI脚本。为此, 你将需要创建一个符号链接:

sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/

然后重新启动Apache, 以使更改生效:

sudo systemctl restart apache2

上载CGI脚本并设置权限

要验证服务器上的CGI脚本功能, 建议从测试脚本开始。创建文件test.cgi在服务器指定的cgi-bin中, 将其打开以进行编辑:

  • CentOS 7:须藤纳米/var/www/cgi-bin/test.cgi
  • Ubuntu 16.04:须藤nano /usr/lib/cgi-bin/test.cgi

将以下内容添加到此文件:

#!/usr/bin/perl
print "Content-type: text/html\n\n"; 
print "<h1>Hello world</h1>";

保存并退出文件。

接下来, 为文件提供正确的可执行权限:

  • CentOS 7:须藤chmod 755 /var/www/cgi-bin/test.cgi
  • Ubuntu 16.04:须藤chmod 755 /usr/lib/cgi-bin/test.cgi

使用域名或IP地址在浏览器中查看脚本:

http://example.com/cgi-bin/test.cgi
http://192.168.0.1/cgi-bin/test.cgi

你将看到" Hello world"。

解决CGI脚本错误

404错误:这意味着找不到URL。检查脚本是否已添加到正确的目录中。

  • CentOS 7:默认的CGI目录是var / www / cgi-bin /
  • Ubuntu 16.04:默认的CGI目录是/ usr / lib / cgi-bin

服务器500错误:这意味着脚本没有正确的权限。检查脚本是否具有可执行文件(chmod 755)权限:

jdoe@localhost:/etc/apache2# ll /usr/lib/cgi-bin/test.cgi
rwxr-xr-x 1 jdoe jdoe 85 Jul 22 16:53 /usr/lib/cgi-bin/test.cgi*

该文件的正确权限是rwxr-xr-x.

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: