iis上配置cgi

来源:互联网 发布:mysql insert多条数据 编辑:程序博客网 时间:2024/06/05 18:09

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 脚本)编写,则既可为目录提供执行权限,也可为其提供脚本权限。要使用脚本权限,必须将脚本解释程序标记为脚本引擎。

  注意:

默认情况下,IIS_WPG 组不具备启动 CGI 进程的权利。如果创建了新帐户并将其添加到 IIS_WPG 组以运行工作进程标识,还必须授予此帐户两种启动 CGI 进程的用户权限。这些用户权利是“调整进程的内存配额”和“替换进程级令牌”。有关如何修改用户权利的详细信息,请参阅 Windows Server 2003 帮助和支持中心中的“编辑本地安全设置”或“编辑组策略对象上的安全设置”。

如果要开发新 CGI 应用程序,Microsoft 提供了几种选择。要加快执行速度,请考虑开发 Internet 服务器 API (ISAPI) 扩展。为便于开发,请考虑开发 ASP.NET 应用程序。

本节包含下列信息:

在 IIS 6.0 中安装 CGI 应用程序:介绍如何在 Web 服务器上安装 CGI 应用程序。

配置并发 CGI 请求的最大数:介绍如何配置最大的并发 CGI 请求数。

配置 CGI 应用程序超时:介绍如何配置 CGI 应用程序的超时值。

在 IIS 6.0 中安装 CGI 应用程序 (IIS 6.0)

  要点:

只有本地计算机上 Administrators 组的成员才能执行以下过程。作为安全性最佳操作,请使用不属于 Administrators 组的帐户登录计算机,然后使用 runas 命令以管理员身份运行 IIS 管理器。在命令提示符下,键入runas /User:Administrative_AccountName"mmc %systemroot%/system32/inetsrv/iis.msc"

过程

安装和配置 CGI 应用程序

1.

为 CGI 程序创建目录。为了增加安全,请将 CGI 程序与内容文件分开。没有必要将目录命名为 Cgi-bin,虽然您可以这么做。详细信息,请参阅使用虚拟目录。

2.

如果 CGI 程序是脚本,那么请获取并安装相应的脚本解释程序。例如,要运行 Perl 脚本,要有 Perl 解释程序。Windows 操作系统不提供 Perl、SED 或 AWK 的版本。因此,您必须从第三方开发商处获取这些解释程序。

3.

如果 CGI 程序为 .exe 文件,应为目录提供执行权限。如果 CGI 程序是脚本,则既可为目录提供执行权限,也可为其提供脚本权限。详细信息,请参阅Access Control in IIS 6.0。

如果选择为目录提供脚本权限,则必须在该目录的属性中将脚本解释程序标记为脚本引擎。只有标记为脚本引擎的解释程序才能够在该目录中执行。可执行文件(.dll 和 .exe 文件)无法直接执行,即浏览器请求无法通过在 URL 中包含程序名来启动 Web 服务器中的可执行文件。通过启用“仅脚本”权限并选中“脚本引擎”复选框,可以将内容文件(如 .htm 或 .gif 文件)作为 CGI 脚本安全地放在同一个目录中。内容文件可以在浏览器中显示,同时可以执行脚本,但是不能运行未授权的程序且不在浏览器中显示脚本命令。

4.

对于 CGI 脚本,应在脚本的文件扩展名和脚本解释程序之间创建应用程序映射。

IIS 可将文件扩展名映射到解释程序。例如,如果使用 Perl 脚本(该脚本存储在以 .pl 为扩展名的文件中),请将 .pl 扩展名映射到运行 Perl 脚本的程序。请将 .bat 和 .cmd 文件映射到命令解释程序 (Cmd.exe)。详细信息,请参阅在 IIS 6.0 中设置应用程序映射。

5.

设置 NTFS 权限。如果使用 NTFS 访问权限,请验证所有需要运行程序的用户都具有对该目录的执行权限。如果网站接受匿名用户,请确保匿名用户(IUSR_computername 帐户)具有执行权限。

IIS 支持大多数的标准服务器环境变量。

为更加安全起见,Web 服务器不将命令解释程序的特殊字符传递给映射的 CGI 应用程序。在默认情况下,以下字符不能包含在调用 CGI 应用程序的 URL 中:

| ( , ; % < >
<h1 style="margin: 0px; padding: 0px;"><a target=_blank name="t4" style="color: rgb(51, 102, 153);"></a>配置并发 CGI 请求的最大数 (IIS 6.0)</h1><div style="height: 18px;"></div><p>为了防止性能下降并减少 Web 服务器上可能存在的安全隐患,可以配置同时运行的并发 CGI 请求的最大数。</p><div class="alertType"><img height="10" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/important.gif" width="10" border="0" alt="" style="border: none; max-width: 100%;" />  要点:</div><p>只有本地计算机上的 Administrators 组成员,才能执行以下过程。作为安全性的最佳操作,请使用不属于 Administrators 组的帐户登录计算机,然后使用 <strong>runas</strong> 命令以管理员身份运行 IIS 管理器。在命令提示符下,键入 <strong>runas /</strong><em>User:Administrative_AccountName</em><strong>"mmc %systemroot%/system32/inetsrv/iis.msc"</strong>。</p><div class="alertType"><img height="10" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/important.gif" width="10" border="0" alt="" style="border: none; max-width: 100%;" />  要点:</div><p>注册表编辑器使用不当可能导致需要重新安装操作系统的严重问题。因为注册表编辑器会跳过标准安全保护(禁止您输入存在冲突或者有可能降低性能或损坏系统的设置),所以在更改注册表时一定要格外小心。Microsoft 无法保证解决由于错误使用注册表编辑器而引起的问题。有关如何编辑注册表的信息,请参阅注册表编辑器帮助中的“更改项和值”主题。</p><a target=_blank name="EQB" style="color: rgb(51, 102, 153);"></a><h2 style="margin: 0px; padding: 0px;"><a target=_blank name="t5" style="color: rgb(51, 102, 153);"></a>过程</h2><h3 style="margin: 0px; padding: 0px;"><a target=_blank name="t6" style="color: rgb(51, 102, 153);"></a>配置并发 CGI 请求的最大数</h3><table cellspacing="0" cellpadding="0" border="0" class="numberedList "><tbody><tr valign="top"><td class="listNumber" nowrap="nowrap" align="right"><p>1.</p></td><td><p>从“开始”菜单,单击“运行”。</p></td></tr><tr valign="top"><td class="listNumber" nowrap="nowrap" align="right"><p>2.</p></td><td><p>在“打开”框中,键入 <strong>Regedit.exe</strong>,然后单击“确定”。</p></td></tr><tr valign="top"><td class="listNumber" nowrap="nowrap" align="right"><p>3.</p></td><td><p>定位至注册表中的以下位置:HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/W3SVC/Parameters。</p></td></tr><tr valign="top"><td class="listNumber" nowrap="nowrap" align="right"><p>4.</p></td><td><p>从“编辑”菜单中,指向“添加”,单击“DWORD 值”,然后添加以下注册表值:</p><p>名称:<strong>MaxConcurrentCgisExecuting</strong></p><p>类型:<strong>REG_DWORD</strong></p><p>数据:如果该注册表项不存在,则 IIS 使用默认值 256。根据需要,可以将该值设置在 0 和 4294967295(无穷大)之间。使用如果使用的值较小,则表示在 Web 服务器上并发运行的 CGI 请求数较少,但是,使用较大的值可能会降低性能。</p></td></tr><tr valign="top"><td class="listNumber" nowrap="nowrap" align="right"><p>5.</p></td><td><p>退出注册表编辑器。</p></td></tr></tbody></table>
<h1 style="margin: 0px; padding: 0px;"><a target=_blank name="t7" style="color: rgb(51, 102, 153);"></a>配置 CGI 应用程序超时 (IIS 6.0)</h1><div style="height: 18px;"></div><p>设置 CGI 应用程序的超时值时,需要手动设置 CGITimeout 配置数据库属性。 </p><p>有关该配置数据库属性的信息,请参阅 <a target=_blank href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/iis/c49c897e-7afa-4963-aa39-dd03920c1e9c.mspx" style="color: rgb(51, 102, 153); text-decoration: none;">CGITimeout 配置数据库属性</a>。</p><p>可以在全局级别、单个站点级别和站点元素级别上设置 CGITimout 属性。为此,可以灵活地对整个 CGITimeout 级别进行配置,然后为各个站点和站点元素自定义设置。</p><p>如果要在运行 IIS 时编辑该设置,请确保启用“配置数据库运行时编辑”设置。详细信息,请参阅<a target=_blank href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/zh-chs/library/iis/e6c04028-7db3-4564-9912-04e82c52d5ca.mspx" style="color: rgb(51, 102, 153); text-decoration: none;">在 IIS 6.0 中启用运行时编辑功能</a>。</p><p></p><p>转自:<a target=_blank href="http://blog.csdn.net/hurtmanzc/article/details/1752603">http://blog.csdn.net/hurtmanzc/article/details/1752603</a></p>
0 0