程序员人生 网站导航

配置apache以支持cgi进程的运行

栏目:框架设计时间:2015-03-31 08:00:39

配置apache运行cgi程序可分为两种情况,1是ScriptAlias目录的CGI,2是ScriptAlias之外目录的CGI。

ScriptAlias目录的CGI

ScriptAlias指令使Apache允许履行1个特定目录中的CGI程序。当客户端要求此特定目录中的资源时,Apache假定其中文件都是CGI程序并试图运行。
ScriptAlias指令形如:

  1. ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/

ScriptAlias目录之外的CGI

由于安全缘由,CGI程序通常被限制在ScriptAlias指定的目录中,如此,管理员就能够严格地控制谁可使用CGI程序。但是,如果采取了恰当的安全方法措施,则没有理由不允许其他目录中的CGI程序运行。比如,你可能希望用户在UserDir指定的宿主目录中寄存页面,而他们有自己的CGI程序,但无权存取cgi-bin目录,这样,就产生了运行其他目录中CGI程序的需求。
1、用Options显式地允许CGI的履行
可以在主服务器配置文件中,使用Options指令显式地允许特定目录中CGI的履行:

  1. <Directory /usr/local/apache/htdocs/somedir>
  2. Options +ExecCGI
  3. </Directory>

上述指令使Apache允许CGI文件的履行。另外,还必须告知服务器哪些文件是CGI文件。下面的AddHandler指令告知服务器所有带有cgi或pl后缀的文件是CGI程序:

  1. AddHandler cgi-script cgi pl

2、.htaccess文件
.htaccess文件是针对目录进行配置的1种方法。Apache在提供1个资源时,会在此资源所在目录中寻觅.htaccess文件,如果有,则使其中的指令生效。AllowOverride 指令决定了.htaccess文件是不是有效,它指定了哪些指令可以出现在其中,或根本不允许使用。为此,需要在主服务器配置中如此配置:

  1. AllowOverride Options

在.htaccess文件中,需要如此配置:

  1. Options +ExecCGI

以使Apache允许此目录中CGI程序的履行。
最后可以编写1个cgi程序测试,如:

  1. #!/usr/bin/perl
  2. print "Content-type: text/html ";
  3. print "Hello, World.";
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐