IIS安装CGI,iis6,IIS7安装CGI图解

cgi是一种很古老的技术了,今天又把他翻出来 ,主要是因为这是用c/c++开发webservice服务器端一个相对简单的方案,借助gsoap,可以很容易的生成相关的代码,借助于http server(iis或apache)的强大的功能,可以很容易的开发出一个简单的webservice,你不需要考虑安全的问题,多用户并发的问题,会话管理的问题,你只需要站在http server的肩膀上,实现你自己的业务功能就是了.下面是msdn里关于iis配置cgi的文章,摘过来以便于以后查阅.

配置 CGI 应用程序 (IIS 6.0)

IIS 6.0 支持通用网关接口 (CGI) 应用程序。本主题提供了有关在 Web 服务器上安装和配置 CGI 应用程序以及设置 CGI 脚本超时值的管理信息。

要点:
为了最大限度地减少服务器的攻击面,默认情况下,Windows Server 2003 上不安装 IIS 6.0。首次安装 IIS 6.0 时,IIS 6.0 将被锁定 -- 这表明只启用处理静态网页的请求,并且只安装万维网发布服务(WWW 服务)。IIS 上的所有功能都将关闭,包括 ASP、ASP.NET、CGI 脚本、Microsoft 的 FrontPage® 2002 Server Extensions 以及 WebDAV 发布功能。如果未启用这些功能,那么 IIS 将返回 404 错误。您可以通过 IIS 管理器中的 启用 Web 服务扩展节点启用这些功能。有关如何解决 404 错误及其他问题的详细信息,请参阅 IIS 6.0 中的疑难解答。

CGI 程序在 Web 服务器接收到包含 CGI 程序名和程序所需参数的 URL 时执行。如果将 CGI 程序编译为可执行 (.exe) 文件,则必须提供包含程序执行权限的目录,以便用户可以运行程序。如果 CGI 程序以脚本形式(例如 Perl 脚本)编写,则既可为目录提供执行权限,也可为其提供脚本权限。要使用脚本权限,必须将脚本解释程序标记为脚本引擎。

 

 

今天一个客户反映服务器不支持CGI,我上去看了一下。原来这客户只是安装了ActivePerl,默认安装有些地方没有配置清楚,所以CGI不能运行。我重新安装了ActivePerl,并检查了配置,就可以了。在这里把windows2003的iis6.0环境下的CGI配置做个教程,方便自己也方便大家。

第一步:下载ActivePerl,并安装。

这里可以选择安装路径,一般不用改用默认的c:\perl就行了,直接点next

 

这里是选择安装选项,一般就是用默认,直接点next,install安装,安装完成。

 

第二步:检查权限,添加CGI映射。
打开c:\perl目录的属性,点安全,查一下user账号对这个目录要有读取,读取和运行,列出文件夹三个权限,要不运行CGI程序时会提示输入用户名密码。

 

打开IIS管理器,WEB服务扩展,允许所有未知CGI扩展,Perl CGI Extension,Perl ISAPI Extension,PerlEx ISAPI Extension

 

然后回到网站属性,在主目录选项里点配置,添加CGI后缀映射。点添加,可执行文件后面输入C:\Perl\bin\perl.exe "%s" %s,或者直接把.pl的配置复制上来,扩展名是cgi,限制为GET,HEAD,POST,TRACE,点确定。

 

到这里CGI的配置就全部完成了,打开你的网站,CGI程序是不是就可以运行了。

如何解决IIS7出现“由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面”提示。

1.打开 Internet 信息服务(IIS)管理器
2.在“功能”视图中,双击“ISAPI 和 CGI 限制” 以确认 Web 服务扩展被设置为“允许”。

 

Tisp:
a、如果该扩展不在列表中,请在“操作”窗格中单击“添加”。
b、在“添加 ISAPI 和 CGI 限制”对话框中,在“ISAPI”或“CGI 路径”框中键入 .dll 或 .exe 文件的路径,或者单击“浏览”导航到相应文件的位置。
c、在“描述”框中,键入该限制的简要说明。
d 、(可选)选中“允许执行扩展路径”以使限制可以自动运行。
e、如果不选中此选项,则限制状态将为“不允许”,这是默认状态。您可以在以后选中此选项并单击“操作”窗格中的“允许”来允许该限制。 单击“确定”。

作者:lujjjh
链接:https://www.zhihu.com/question/19582041/answer/23337307
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

我理解的 CGI 是狭义上的 CGI,即不包含 FastCGI。

对一个 CGI 程序,做的工作其实只有:从环境变量(environment variables)标准输入(standard input)中读取数据、处理数据、向标准输出(standard output)输出数据。

环境变量中存储的叫 Request Meta-Variables,也就是诸如 QUERY_STRINGPATH_INFO 之类的东西,这些是由 Web Server 通过环境变量传递给 CGI 程序的,CGI 程序也是从环境变量中读取的。

标准输入中存放的往往是用户通过 PUTS 或者 POST 提交的数据,这些数据也是由 Web Server 传过来的。

就比如,我们刚学 C 语言时写的 Hello World,也可以作为一个合法的 CGI 程序。

现在用 CGI 的已经很少了,因为每个 CGI 进程只处理一个请求,换句话说,每个请求都需要创建一个 CGI 进程处理,CGI 程序处理完毕后就退出了。

FastCGI 正是对 CGI 的改进,而且改进了不是一点点。

从总体上看,一个 FastCGI 进程可以处理若干请求(一般 FastCGI 进程是驻留着的,但不排除 IIS 之类的 Web Server 限制其空闲时间,在一段时间内没有请求就自动退出的可能),Web Server 或者 fpm 会控制 FastCGI 进程的数量。

细节方面,FastCGI 是一套协议,不再是通过简单的环境变量、标准输入和标准输出来接收和传递数据了。一般来说,FastCGI 用 TCP 或者命名管道(Named Pipe)传输数据。

现在绝大多数 PHP 网站都是在用 FastCGI 的。

因此,这个问题的答案取决于题主对 CGI 的理解。

更多
  • 该日志由 于2017年02月17日发表在 网站建设帮助 分类下, 你可以发表评论,并在保留原文地址 及作者的情况下引用到你的网站或博客。
  • 本文链接: IIS安装CGI,iis6,IIS7安装CGI图解 | 帮助信息-动天数据
  • 版权所有: 帮助信息-动天数据-转载请标明出处
  • 【上一篇】 【下一篇】

    0 Comments.