如何让apache支持cgi脚本

1、准备工作
  首先,我假设你已经安装好Apache而且你的Apache能提供静态网页供浏览。Apache的安装会自动附上静态的HTML测试页,也就是说如果能看到那测试页,就代表你的Apache能正常运作了。基本安装下的Apache仅能提供静态的HTML网页。然而,你可以通过使用模块(modules)来提升它的功能。在原始的设定下,Apache的编译会包含mod_include 及 moc_cgi 这两个模块。你可以在bin子目录下执行./httpd -l来查看你的Apache是否装有这两个模块。执行的输出会是一长串Apache现在安装的所有模块。如果mod_include及moc_cgi 这两个模块不在清单里,你必须重新编译服务器。重新编译时,确定依照如何含括 mod_include、moc_cgi 模块的说明。此外你还必需有提供实时网页的Server-Side Includes(相关资料网址:http://www.oreilly.com/catalog/apache/excerpt/ch10.html)。有了 server-side includes (SSI)支持,你就能制作出实时的动态网页。接下来,我先从服务器的SSI支持设定开始,然后进入CGI的编写。
  2、Apache的设定
  首先你必须先找到Apache这个设定文件。Apache的原始安装目录在 Unix下是/usr/local/apache,在Windows下则是 c:Program FilesApache。接着在conf子目录下你会找到httpd.conf 文件。这就是Apache的设定档。这个设定文件是个纯文字文件,所以你可以使用一般的文字编辑器,如vi或Notepad 等,来编辑。首先要注意的是在这个设定档里有些行的起始文字是#符号,这表示这行的文字全为批注。适当地在你的设定档内做批注是个好习惯,因为那帮你记得你曾做了哪些设定以及为什么。
  3、执行 SSI 程序
  开启设定文件并寻找以下这些文字:
#
# To use server-parsedHTMLfiles
#
#AddType text/html .shtml
#AddHandler server-parsed .shtml

  删除AddType及AddHandler这两行指令前的#符号。AddType指令会要求服务器在传回任何附属档名为.shtml的网页时,以 text或HTML做为传回文件的内容格式。AddHandler 则是用来指示服务器将文件内容送交给mod_include 处理。之后,mod_include 就会判断该如何响应这样的文件。接下来,寻找以下文字:
  在这行文字及对应的 间会有一行选项行(options line)。原始的设定是:
  Options Indexes FollowSymLinks MultiViews
  在这行尾端加上Includes ,结果看起来会是这样:
  Options Indexes FollowSymLinks MultiViews Includes
  这是要求Apache在htdocs子目录里执行 server-side includes 程序。为了让这些修改生效,我们必须重新启动服务器。在 Unix 下重新激活,执行kill -HUP `cat /usr/local/apache/logs/httpd.pid`。在 Windows 下,执行Apache-k restart。现在我们来试试刚才的设定结果。在/usr/local/apache/htdocs 目录里新增一个文件 test.shtml。这个文件必须要包含以下程序代码:
  The file hello.txt is long and it was last modified on
  这段 SSI 程序会去读取一个称为 hello.txt 文件,并将该文件的大小以及最近一次的修改日期输出到网页上。显然的,我们还必须在 htdocs 目录下新增这个hello.txt 文件。在我的hello.txt 文件里只有一行文字:HOW ARE YOU!。完成新增这些文件后,打开你惯用的浏览器并开启http://localhost/test.shtml网页。如果你服务器的安装并不是通过root用户,你可能必须改为开启http://localhost:8080/test.shtml。之后将得到如下结果:
 HOW ARE YOU! The file hello.txt is 1k bytes long and it was last modified on Wednesday, 02-Aug-2000 20:18:28 PDT
  另外一种可以激活支持SSI程序的方法称为XbitHack设定(相关资料网址:http://www.apache.org/docs/mod/mod_include.html#xbithack )。这个方法的由来是当你将文本文件的使用者可执行位(user-executable bit)设为可执行状态后,Apache会将那些文件视为 SSI 程序文件。
  要激活这样的功能必须将以下指令(directive)放在所有目录的 .htaccess 文件里:XbitHack status on (or full) status 的值可以设为on 、off 或是full。on 的设定会强制服务器将所有使用者可执行的文件视为SSI项。Off则使服务器完全忽略使用者可执行的设定状态。若是设定为Full,服务器会视所有使用者可执行档为SSI项,同时也会检查组可执行(group-executable bit)。如果组可执行项设定为可执行时,传回header的last modified time的值就会被设定为该文件最近一次被修改的时间。这样的设定可以让客户端的浏览器及代理服务器(proxy)进行缓存(caching)。不过在使用这样的功能时必须要小心。例如说,如果你的网页有提供轮替式广告看板你就不会想要设定群组可执行位为开启的状态,因为那么做会让第一个下载的广告被快取起来,导致使用者再也看不到其它页的广告。
  4、执行CGI程序
  在Apache原始安装里,cgi-bin子目录下附有两组CGI程序,test-cgi 以及printenv,只不过这两组程序有潜在的安全漏洞。但是由于我们只是要做设定测试,并且我们不会将这样的原始安装设定直接放在主运行服务器(live server),所以我们还是会激活其中一组CGI程序,看看Apache当初是如何被设定来执行这组程序。最后我们会自己撰写一支简单的CGI程序。
 首先,要确定这组程序是能执行的。进入cgi-bin子目录,确定程序文件被设定为使用者(服务器执行时使用者)可执行以及使用组(服务器执行时使用组)可执行。对 Windows系统来说,这一步应该是非必要的。接着,对服务器要求这样的内容:
  http://localhost:8080/cgi-bin/test-cgi
  注意:只有在通过非root使用者进行服务器安装的情况下才需要指定8080端口(port)。这支Apache内建的test-cgi程序会列出CGI程序会存取的变量值。激活CGI支持是设定在httpd.conf设定文件内的ScriptAlias 指令区段。这个指令区段的原始设定值是:
  ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
  这行指令是告诉Apache如果要求的网页路径是以cgi-bin为起始,这些文件可在/usr/local/apache/cgi-bin/ 目录下找得到。这行指令同时也告诉Apache要在这个目录下执行文件。在下面我准备了一个会输出How are you!的简单CGI程序。我将它命名为 how.sh。
#!/bin/sh
echo Content-type: text/html
echo
echo How are you!

  修改这个文件的权限使其成为可执行文件并且向你的服务器提出以下的要求:
  http://localhost:8080/cgi-bin/how.sh
  虽然这组CGI是采用shell script来编写,其实它可以用任何适用于该系统的语言来撰写。至于关于CGI程序的撰写如果有机会我会和大家作更深入的探讨。
本文来自: 脚本之家(www.jb51.net) 详细出处参考:http://www.111cn.net/article/20531.htm

时间: 2024-11-10 07:27:09

如何让apache支持cgi脚本的相关文章

让Apache支持cgi、SSI、shtml的配置方法_Linux

1.首先明确,只能够指定某个确定的目录,支持cgi,即运行该目录执行cgi程序:否则不太安全.寻找: 复制代码 代码如下:     #    # "C:/Program Files/Apache Group/Apache/cgi-bin" should be changed to whatever your ScriptAliased    # CGI directory exists, if you have that configured.    #    <Director

Apache 支持CGI程序和SSI程序的设置方法_Linux

由于Apache具有相当高的可移植性,它支持超过30种操作系统,包括Unix.Windows 及Darwin等系统,所以目前在网络上已注册的网域里大部份是使用Apache网页服务器.目前ApacheSoftware Foundation 正致力于发展现在已进入alpha测试阶段的Apache2.0.在这里,网页教学网和大家探讨如何修改服务器选项让服务器能提供简单的动态网页内容,也就是支持CGI程序及 Server-Side Include(SSI)程序. 1.准备工作 首先,我假设你已经安装好A

让Apache支持shtml实现include文件解析的配置方法_Linux

1. 确认加载include.so模块,将注释去掉: LoadModule include_module libexec/apache2/mod_include.so 2. AddType部分去掉这两段注释: AddType text/html .shtml AddOutputFilter INCLUDES .shtml 3. Directory目录权限里面找到 Options Indexes FollowSymLinks 增加Includes修改为: Options Indexes Follo

让apache 支持 shtml 配置方法

什么是SSI? SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思.从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针.SSI具有强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能. 如何使你的Apache服务器支持SSI? Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置.我这里以windows平台的Apache

如何在98上支持cgi,php,asp,mysql

如何在98上支持cgi,php,asp,mysql 首先安装win98的pws,在安装perl(下载perl),在安装php4(下载).asp呢?pws本身就有了. pws,98盘中就有 eNet软件站点 全部软件 安装mysql(下载mysql) 在注册表HEKY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\parameters\Script Map 中加入 .cgi "c:/perl/bin/perl.exe %s %s&quo

编写Python CGI脚本的教程

  这篇文章主要介绍了编写Python CGI脚本的教程,CGI是Python和服务器软件连接的接口,需要的朋友可以参考下 你是否想使用Python语言创建一个网页,或者处理用户从web表单输入的数据?这些任务可以通过Python CGI(公用网关接口)脚本以及一个Apache web服务器实现.当用户请求一个指定URL或者和网页交互(比如点击""提交"按钮)的时候,CGI脚本就会被web服务器启用.CGI脚本调用执行完毕后,它的输出结果就会被web服务器用来创建显示给用户的

CGIProxy 2.1.4发布 CGI脚本

CGIProxy 是作为Internet代理的一个Perl CGI脚本.你可以通过它来检索你自己无法检索的机器资源,用户可以从任何服务器中保持为匿名用户,支持HTTP和FTP,以及可选的SSL.常见功能包括:审查规避.类似VPN的设置.匿名代理.个人代理.​​纯文本浏览选项(节省带宽).选择性的cookie和脚本移动.简单的http://www.aliyun.com/zixun/aggregation/8238.html">广告过滤功能.服务器访问限制设置.编码的目标URL和Cookie.

如何创建和使用Python CGI脚本

如何创建和使用Python CGI脚本 你是否想使用Python语言创建一个网页,或者处理用户从web表单输入的数据?这些任务可以通过Python CGI(公用网关接口)脚本以及一个Apache web服务器实现.当用户请求一个指定URL或者和网页交互(比如点击""提交"按钮)的时候,CGI脚本就会被web服务器启用.CGI脚本调用执行完毕后,它的输出结果就会被web服务器用来创建显示给用户的网页. 配置Apache web服务器,让其能运行CGI脚本 在这个教程里,我们假设

apache中的.htaccess与配置apache支持.htaccess方法

apache中的.htaccess与配置apache支持.htaccess方法 .htaccess文件的功能:"分布式配置文件"提供了针对目录改变配置的方法,即:在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录.作为用户,所能使用的命令受到限制.管理员可以通过Apache 的AllowOverride指令来设置.子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令. 一.错误文档的定位 (1)常用的客户端请求错误返回代码: 401 Author