Internet Infomation Server (IIS) | FTP | Web

IIS7_Welcome

解决在 SBS2011 上因压缩模块导致的 HTTP 500.19 故障问题

        前一篇与大家分享了因开启 32BitApponWin64 后出现的 HTTP 503 故障问题(http://goxia.maytide.net/read.php/1678.htm),而本篇还是与 IIS 和 ASP 有关。接二连三出现问题也并不是 gOxiA 所希望看到的结果,但是之前在调试那个 ASP 程序时确实很不顺利,在 503 故障解决之后紧接着就是 500.19 故障。

        大家知道 500.19 是常见故障,导致该问题的出现原因有很多,如果仅是单纯看错误摘要“无法访问请求的页面,因为该页的相关配置数据无效”,是很难确定故障原因的。

        所以我们需要将重点放在详细错误信息中,以本案为例,参考下图可看到在详细错误信息中提示“模块 DynamicCompressionModule”出现错误,错误代码为“0x8007007e”。

3

        检查了 Windows Server 2012 Essentials 环境,发现该 ASP 程序所在网站也启用了压缩模块,但访问是正常的。此外在 iis.net 上找到一篇相关的帖子 http://forums.iis.net/t/1149768.aspx/1/10,貌似与 SBS2011 上集成的服务应用有关,尤其是 WSUS,涉及文件“suscomp.dll”,suscomp.dll 是 WSUS 的专用压缩模块。

        起初,gOxiA 参考帖子直接将加载的 suscomp.dll 语句注释掉以禁用加载,之后测试 ASP 程序确实就正常了,但这样以来就要牺牲掉 WSUS 的压缩模块。suscomp.dll 属于全局类型的模块,它根据压缩的类型(动态或静态)由 IIS 的 compdyn.dll 和 compstat.dll 进行调用,所以在 IIS 管理器的站点模块管理中也找不到对应的配置信息,所以单独对站点禁用该模块是不可能的。

4

        此外想单纯通过禁用站点的压缩功能也是不行的,因为相关的模块还是被加载了,只要加载就会导致故障的出现。

image

        所以要彻底解决这一故障的唯一办法就是将对应站点中的动态和静态压缩模块全部给删除掉,不予以加载。要直接为单独某个站点删除模块,是不行的!会提示错误“锁定冲突”……

image

        为此,要修改 IIS 服务设置,即在 IIS 管理器里选中当前服务器,通过内容窗体中的“模块”进入其设置,找到对应的模块(如:DynamicCompressionModule),在任务窗体中点击“解除锁定”,之后才能在对应站点中对模块进行删除。

image

image

        因为涉及到的是全局的 suscomp.dll 模块,所以为了保证 ASP 程序正常访问,除了要删除 动态压缩模块以外,同时还要删除静态压缩模块(StaticCompressionModule)。现在 ASP 程序便可正常访问了,而且也不会影响到 WSUS 服务。(PS:不能再拖了,要尽快完成 SBS2011Std 到 WS2012Ess 的升迁工作!!!)

IIS7_Welcome

解决因开启 32BitApponWin64 后出现的 HTTP 503 故障问题

        自从离开 Hosting 行业,好久没有做过 IIS 方面的排错,今天算是遇到了一个,感觉会很常见,所以记录下来以备后用。用户购买了一套 ASP+Access 的小程序(PS:别问为什么还要买这么老旧的架构程序!),配置到用户的 Windows Server 2012 Essentials 环境中运行正常,操作过程并无什么特别,只是为其应用池开启 32位程序支持即可,整个过程非常顺利。

        反而在之后配置到 gOxiA 的 Windows Small Business Server 2011 Standard 环境中后一直无法正常运行,IE 访问时提示“Service Unavailable”,经典的 HTTP 503 故障。起初检查 IIS 配置没有发现异常,但是看到对应的应用池会被停掉。于是打开事件查看器查阅日志,发现了很多来源为“IIS-W3SVC-WP”的错误,其内容大致如下:

由于配置问题,无法加载模块 DLL “C:Program FilesMicrosoftExchange ServerV14ClientAccessOwaauthexppw.dll”。当前配置仅支持加载为 x86 处理器架构构建的映像。……”此外,除了 exppw.dll 文件外还有 kerbauth.dll 也出现错误。

1

        综上分析,应用程序池的 32位应用支持是正常打开了,但是却无法加载 64位的 DLL 文件。而关闭“enable32BitAppOnWin64”后应用程序池恢复正常,但无法访问 ASP 程序。那么原因应该是出在应用程序池和加载模块的问题上。“exppw.dll”和“kerbauth.dll”文件都属于服务器上的 Exchange Server 2010 所有,这两个文件本身肯定是没有问题的。

        看来还是要锁定到应用程序池方面,应用程序池本身是64位的,只是开启了32位应用支持,所以应用程序池在设置后是正常运行状态。当触发访问请求时,该应用程序池会启动一个新的32位模式的进程,来接受 ASP 类型的访问请求,此时就会导致 32位应用程序池进程(w3wp.exe)与加载的 64位 DLL 出现系统策略上的冲突,被系统强行终止,最终出现前面所述的故障。

        要解决这个故障貌似挺难的,难不成跑了64位应用(Exchange Server 2010)的服务器就不能跑 32位 的 ASP 程序了?!看来只能网上找找是否有相关的资料,这还真的找到了!参考资料:http://blogs.msdn.com/b/rakkimk/archive/2007/11/03/iis7-running-32-bit-and-64-bit-asp-net-versions-at-the-same-time-on-different-worker-processes.aspx

        文中末尾提到可以修改“applicationHost.config”文件,为加载的 DLL 指定对应架构模式的 ISAPI Filter 来运行。即,在每个 DLL 加载配置行尾附加“preCondition”参数,如果该 DLL 是 32位那值为“bitness32”,而 64位的则是“bitness64”。修改后的结果可以参考下图:

2

        针对本例,我们需要修改的有两个:“exppw.dll”和“kerbauth.dll”。最后测试一下结果,网站已经能够正常访问,至此故障消失问题得到了解决!同样,有遇到类似故障的都可参考此法解决。

logo-windows-server-2008-r2

HOWTO:使用 Web Deploy 便捷发布网站程序

IIS7_Welcome

        gOxiA 最近找了一个 .NET 的开源网站程序,改吧改吧当作企业网站来用,该网站程序需要 SQL Server,由于改动比较简单所以没打算使用复杂的开发环境,WebMatrix 就成了不二之选!借助 Web Deploy 技术,在发布网站的同时还能将数据库一并发布,简单快捷,并且无需在 Web Server 上安装 FTP。

        Web Deploy 是 IIS 的一个插件,最新版本是 v3.0 Beta,本篇日志将以 Web Deploy 2.0 为例与大家分享,Web Deploy 可以从 Microsoft Download Center 获得,下载地址如下:

Web deploy 2.0 简体中文版:http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=cfa66d50-90ce-49cba-b021-fefbd7a302ab

        Web Deploy 的安全访问机制和访问接口都依赖于 IIS 的“管理服务”组件,所以要使用 Web Deploy 必须先安装  IIS 的“管理服务”。为此,首先打开“服务器管理器”添加角色服务,整个安装过程非常简单不再复述,可参考下图:

11-1

        在“管理服务”安装完毕后即可执行 Microsoft Web Deploy 2.0 的安装程序,过程依旧非常简单一路“下一步”即可,过程可参考下图:

22-12-23

        Web Deploy 安装完毕后,便可进行下一步的配置过程。首先请确认“管理服务”是否已经在运行,如下图所示:

9

        之后进入“IIS 管理器用户”添加一个账号,这个账号是基于 IIS 的,并非 Windows 账号,所以在安全方面会更强一些。

4

        下来,就可以为需要使用 Web Deploy 的站点添加管理账号了。选中一个站点,进入“IIS 管理器权限”,在操作窗体中点击“允许用户…”,之后从 IIS 管理器中添加用户即可。

56

        最后,便可在 WebMatrix 中的发布设置中选择“Web Deploy”,其中“服务器”填写 Web Server 的 IP 地址,“用户名”、“密码”即是之前在“IIS 管理器用户”添加的信息,而“网站名称”需要填写的是与 IIS 里站点对应的名称,如果当前 WebMatrix 站点配置有数据库,那么还可以在发布设置下通过 Web Deploy 配置数据库信息,使发布网站的同时也将数据库传递给 Web Server。

7

        上述步骤完成后点击“验证连接”,因为当前 Web Server 使用了自签名证书,所以会有如下图的警告提示,我们只需复选“为 WebMatrix 的将来会话保存此证书”,并点击“接受证书”便可继续连接。

8

        Web Deploy 的功能非常强大,除了 WebMatrix,还能利用微软的 Visual Studio 实现更为便捷、高效、智能的网站发布。由于 gOxiA 不是专业的开发人员,所以 Web Deploy 更多的经验恐怕无法与大家分享。

        最后,关于 Web Deploy 使用“IIS 管理器用户”时的目录安全权限方面的经验再与大家分享一下,根据实际的测试当使用“IIS 管理器用户”进行 Web Deploy 发布时,目录权限要添加“Local Service”账号有修改权限。此外,如果你希望使用 WebMatrix 来检查网站兼容性,那么还需要为 Web Server 上的网站所在目录添加“Service”账号有读取权限。

logo-windows-server-2008-r2  Internet Information Services (IIS)

在 IIS 7.x 上启用 32bit 应用支持

IIS7_Welcome

        一个朋友的公司近期要新上线一套 Web 应用系统,这几天开始进行评估测试。这套网站基于 DotNET 2.0 开发,使用的是 MSSQL 数据库。于是我们选择了 Windows Web Server 2008 R2 作为操作系统,SQL Server 2008 R2 Express 作为数据库。系统环境的准备工作都很顺利,由于网站是成品所以需要先上传数据并通过浏览器进行安装。没想到在打开网站时提示如下图的错误信息:

v5mall_64bit_error_1

        从错误信息看,是没能找到 V5Mall.Run64.dll 文件。于是首先想到的是去网上搜索一下是否有相关解决方案,并让朋友尽快联系官方技术支持。一天过去了,对方也没给回复,网上找到的相关信息也都来自其官方论坛,说是因为权限问题导致的,但这点可以排除,我的设置是没问题的。比较离谱的是看到论坛最终的解答是让更换虚拟主机提供商!说此问题是因为虚拟主机提供商的服务器与他们的网站程序不兼容。我晕!这个解决办法明显不适合我们,并且也不是个解决办法!已经习惯了国内开发商的产品和服务质量……还是自己动手吧。

        冷静分析了一下故障错误,既然提示“无法加载 DLL “V5Mall.Run64.dll”:找不到指定的模块。(异常来自 HRESULT:0x8007007E)。”那么首先检查是否有“V5Mall.Run64.dll”这个文件。经查网站下确实无此文件,并且官方也未提供。但是该网站程序又可以运行在“其他”服务器上,如:Windows Server 2003。说明网站程序确实与当前系统环境有兼容性问题,而这个兼容性问题应该是 64bit 操作系统所致。

        回忆起自己曾摘抄过一篇文章《Configuring IIS to Run 32-bit Applications on 64-bit Windows (IIS 6.0)》,既然如此那 Windows Web Server 2008 R2 上的 IIS 7.5 也能够启用 32bit 应用支持,这样就可以避免程序去调用“V5Mall.Run64.dll”,使应用以 32bit 方式运行。

        在 IIS 7.x 中,要“启用 32bit 应用程序支持”,需要对“应用程序池”进行配置。将“enable32BitAppOnWin64”设置为“True”。这样便将应用程序池的工作进程设置为 WOW64 模式,而在 WOW64 模式下,工作进程将仅加载 32 位应用程序的 32 位进程。为了避免影响其他网站,可为 32bit 应用程序的网站单独创建一个应用程序池。下面 gOxiA 将引导大家如何在 IIS 7.x 下启用 32bit 应用程序支持。

  • 为 32bit 应用程序的网站单独创建一个应用程序池,操作过程省略……;
  • 打开“Internet 信息服务 (IIS) 管理器”在左侧窗体中展开服务器列表,找到该网站对应的应用程序池;
  • 选中应用程序池,并在右边操作窗体中点击“高级设置…”;
  • 在“(常规)”设置中找到“启用 32 位应用程序”,并将其设置改为“True”

v5mall_64bit_error_2

        最后确定并完成操作。在 64bit 的 Windows 操作系统上,IIS 7.x 中“启用 32 位应用程序”的默认设置是“False”,为了方便配置和应用,可以通过“设置应用程序池默认设置…”进行统一的修改,这样以后新建的网站应用程序池都将启用 32bit 应用程序支持。

        此外,我们也可以利用命令行进行设置,命令行参考如下:

appcmd set apppool /apppool.name:My32bitApp /enable32bitapponwin64:true

        大家如果也有类似的故障错误,可以用此办法解决。

msweb-logo WebMatrix

        WebMatrix 是生成、测试和部署网站的最简单方式。WebMatrix 安装只需要几分钟,并会将 Web 服务器、数据库和编程框架完美集成到单一集成体验中。从 WebMatrix 连接到 Visual Studio 或 SQL Server Express 以利用 Microsoft 专业工具和服务器。

webMatrix_start

        WebMatrix 在今天发布了正式版本,正如前面官方的介绍一样,WebMatrix 的特点即一站式和简化的开发过程。WebMatrix安装后的体积非常之小,仅仅 25M 左右!但是却包含了一个 IIS 核心的轻量级 Web 服务器 – IIS Developer Express,支持简单的管理;一个基于文件的轻量级数据库 – SQL Server Compact Edition,也可以连接到其他 SQL Server 版本,以及 .NET 开发框架。

WebMatrix_Main

        上图是 WebMatrix 启动后的向导页面,除了我们可以自己建立网站以外,还能够从 Web 库或模板创建网站。WebMatrix 同时还支持 PHP,只需简单的几步点击, PHP 即可安装并自动完成配置。

WebMatrix_PHP

        纯代码方式的页面开发,快速轻巧!也可以连接到 Visual Studio 使用高级开发环境。

WebMatrix_editpage

        更多功能和操作体验可以安装上 WebMatrix 试试!gOxiA 在第一时间安装上了 WebMatrix,简单试用之后无法掩饰自己的激动心情,火速转告需要在 Windows Client 上使用 Web 开发环境的兄弟姐妹们……实在是太方便了!有了 WebMatrix,我们无需再在 Windows Client 平台上搭建复杂的 Web 环境,只需要 WebMatrix 即可轻松开始我们的 Web 开发旅程。

        即可访问:Microsoft WebMatrix

Tags: , ,

silverlight_banner

        Silverlight 相信对于微软爱好者来说并不陌生,简单讲 Silverlight 是一种新的 Web 呈现技术,能在各种平台上运行。借助该技术,您将拥有内容丰富、视觉效果绚丽的交互式体验,而且无论是在浏览器内、在多个设备上还是在桌面操作系统中,您都可以获得这种体验。Microsoft .NET Framework 3.0 中的呈现技术 XAML(可扩展应用程序标记语言)遵循 WPF(Windows Presentation Foundation),它是 Silverlight 呈现功能的基础。对 Silverlight 的解释引自《Silverlight 入门》,如果您对该技术感兴趣可通过前面的链接获取相关的入门资讯。

        从 Windows Server 2008 内置的 IIS 7 开始,默认支持 Silverlight,我们能够直接在网站中放置 Silverlight 供用户使用,但是之前的版本如 Windows Server 2003 下的 IIS 6 则需要手工添加 Silverlight 的相关 MIME 类型,才能正确解释 Silverlight。为此,我们需要在 IIS 6 中添加以下相关的 MIME类型:

  • .xaml                application/xaml+xml
  • .xap                 application/x-silverlight-app
  • .manifest          application/manifest
  • .application      application/x-ms-application
  • .xbap               application/x-ms-xbap
  • .deploy            application/octet-stream
  • .xps                 application/vnd.ms-xpsdocument

        操作过程可以参考下图:

setup_iis_mime

        如果希望了解如何通过脚本来为 IIS 6 自动添加 MIME 类型,可以参考:How to: Configure IIS 5.0 and IIS 6.0 to Deploy WPF Applicaitions

        最后推荐几个 Sliverlight 学习站点:

The Official Microsoft Silverlight Site

Silverlight 中文社区

Silverlight 爱好者

银光中国 – Silverlight 资源社区

博客园 – Silverlight 学习与研究

[IIS] Microsoft Web Platform Installer

[ 2009/08/21 11:45 | by gOxiA ]

msweb-logo  Microsoft Web Platform Installer

        Microsoft Web Platform installer 是一个款免费的工具,使用它可以轻松地为我们安装和部署 Web 平台以及应用。gOxiA 在测试评估 Windows Server 2008 R2 时对该软件进行了体验,效果令人称道!

        刚才说过 Web Platform Installer 可以安装和部署 Web 平台和应用,有图有真相!这里就不再文字复述,而且 Web Platform Installer 也不断再丰富其资源。

Windows_Web_App_gallery

        下面是支持的 Web Applications,我们知道近几年微软和 PHP 的关系非常微妙,微软在全力地支持 PHP,在 Windows 上的 PHP 性能指标甚至已经超越了它的原生平台。所以,在 Web Applications 下除了常见的 .NET 程序外,还包含了一些 PHP 程序,其中就有我们常见的 Blog 程序 — Wordpess。Web Applications 目前涉及到了 6大类,能够满足不同人群的需要。

web_applications

        而下面这张图展示的受支持的 Web Platform,不过发现并为提供 MySQL 的支持,要知道 PHP+MySQL 可是黄金组合,不过发现微软提供了 Microsoft SQL Server Driver for PHP 1.0,看来有意要将 PHP+SQLServer 凑成一对儿!要想通过 Microsoft Platform Installer 来安装 MySQL 恐怕近期内是不用想了,貌似 MySQL 并不愿意合作!所以如果你要使用 MySQL 还是乖乖的先单独下载和安装吧。不过即使如此,大家也不必担心!一旦使用 Microsoft Platform Installer 来安装涉及到 MySQL 的 Web 应用程序时 Microsoft Platform Installer 会提供相关的数据库配置向导来协助你完成 web 应用的安装。

web_platform

        说了这么多好的,也来揭揭短!Microsoft Platform Installer 目前的下载速度真不如微软其他的网站,不知道是不是最近国际光缆故障问题所致!这一点 gOxiA 保留态度,以观后效,嘿嘿!此外提供的 Web Applications 还是不够海量,起码国内的程序还没一个能看到的,也许微软对其要求比较严格,适当的 Open 一下,重视一下中文地域用户还是很有必要的!或许是国内的 Web 开发者们对此不屑一顾,因为在 Microsoft Platform Installer 网站上对开发者们提供了登录入口!希望国内的 Web Developers 不要错失良机哦!

       Microsoft Web Platform Installer                                     Windows Web App Gallery

main-webpi-download main-webapp-download

WS08-R2_v_rgb 在 IIS7 上配置 FTP7 使用 IIS管理凭据 方式进行验证

        在 Windows Server 2008 R2 发布后,gOxiA 就开始着手于相关的测试和评估。IIS 是重点测试和评估之一!而今天与大家分享的是如何在  IIS7 上配置 FTP7 使用 IIS管理凭据 方式进行身份验证。提到 MSFTP 服务,恐怕知道的人多,但是真正使用的人少!特别是 IDC 环境下多数会选择 Serv-U FTP Server,gOxiA 从 Windows Server 2008 开始就不再使用 Serv-U,原因很简单!Serv-U 不是免费的,此次 Serv-U 默认存在安全隐患。况且开放 FTP 也是为了方便自己维护网站,下载上传资料用!所以用系统自身的软件不是更好!维护也相对容易很多!但是,使用过 MSFTP 的朋友知道从  FTP7 开始,微软才为 MSFTP 设计提供了对非 Windows 身份验证功能的支持,也就是说如果我们要访问 MSFTP 则不必再在系统里添加用户帐号,而可以使用 IIS 来统一管理单独的凭据!现在我们再也不用担心,使用 MSFTP 会存在用户帐号安全隐患的问题。

        这是一篇 Step by Step,所以其中涉及到的相关原理及知识内容不作过多介绍!我们将通过 IIS7 提供的 IisManagerAuth 身份验证模块来实现 IIS管理凭据的 FTP 帐号。具体步骤如下:

        在开始配置之前,我们需要修改相关目录的目录安全权限,这一步骤是必须的,否则在登录 FTP 的时候会出现错误。如下图所示,我们会看到由于权限不足导致无法读取配置文件的错误提示。而无权限读取的文件是位于 inetsrv\config 下的 redirection.config 文件。经过 gOxiA 的测试发现即使为该文件添加了相应的权限但仍提示登录失败,最终要配置 config 目录权限,赋予 Network Service(FTP7 进程的默认帐户)有读取权限后才能正常登录。

msftp_loginfail

        为了简单的演示目录权限的设置过程,gOxiA 参考了 IIS.net 中相关文章的命令行,其中涉及到的 cacls 可以直接运行就可以得到参数帮助。要执行的命令行如下:

cacls c:\windows\system32\inetsrv\config /G "Network Service":R /E

        配置了 config 目录权限后,请确保 “Network Service”对该目录下的 administration.config 和 redirection.config 文件有读取权限,否则请执行如下命令行:

cacls c:\windows\system32\inetsrv\config\administration.config /G "Network Service":R /E

cacls c:\windows\system32\inetsrv\config\redirection.config /G "Network Service":R /E

cacls_config

        之后创建一个 FTP 的默认目录,注意请添加“Network Service”有完全控制的权限。

        下面,我们开始配置 IIS7,创建一个 FTP 站点,为其启用 IisManagerAuth,并创建一个 IIS管理凭据的帐户,使其具备 FTP 相应的访问权限。

        FLV 即 Flash Video(Flash 视频),目前主要用于一些在线视频网站,当然也有一些个人网站或企业网站使用到该格式,但是默认情况下 IIS 并未对该格式提供支持,所以系统管理员需要对 IIS 的 MIME 配置进行修改,添加 FLV 文件类型。为此,我们需要执行如下的步骤:

  • 打开“Internet 信息服务(IIS)管理器”,选中当前 IIS 服务器,鼠标右键单击“属性”,之后单击“MIME 类型”;
  • 在“MIME 类型”配置窗体中单击“新建”;
  • 在“扩展名”中填入“flv”,在“MIME 类型”中填入“flv-application/octet-stream”并单击“确定”;
  • 完成添加后,重新启动 IIS 即可!

FLV_via_IIS

Tags: ,


        FTP 应用之所以回归 Microsoft FTP Publishing Service 主要的原因是使用了 IIS7,在此介绍一下!当前的网站是建立在 Windows Server 2008 Web 之上的。虽然网站主要使用 PHP 脚本,但是 Web 平台我依旧钟情于 IIS,特别是全新的 II7 。不知道长期关注本 Blog 的朋友是否发现访问速度有所提升呢?本站依靠 IIS7 的 PHP FastCGI 技术,有效的将 PHP 脚本解析速度足足提升了一倍还多。

        早先本打算使用 Windows Server 2008 Web RTM 版 IIS7 内置的 FTP 服务,但是发现该 FTP 服务器版本是 6.0,而 FTP7.0 RTM 是之后发布的,到目前为止 FTP7.0 还没有发布中文版。即使如此,我还是决定安装 Microsoft FTP Publishing Service for IIS7(FTP7.0),毕竟 FTP 主要是自己更新网页上传图片使用,如果再单独安装第三方的 FTP Server,除了资源上的占用和兼容性的问题,恐怕还要多操心安全问题了!

        FTP7 的安装很简单,从 Microsoft Download Center 下载了 Microsoft FTP Service for IIS 7.0,根据向导一路回车便完成了安装。建立了一个 FTP 站点,本地进行了连接测试。之后通过 ISA 将其发布出去,问题来了!外部的用户无法访问,检查发现 FTP7 并未在 Windows Firewall 中添加通过策略,于是手工增加 TCP 21 Port !外部访问异常,通过 FTP 客户端连接登录偶尔出现无法列表目录,配置 Windows Live Write 的图片上传时,无法通过 FTP 浏览目录。经测试发现是被动模式连接失败,无法打开被动端口。
分页: 1/5 第一页 1 2 3 4 5 下页 最后页 [ 显示模式: 摘要 | 列表 ]