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 浏览目录。经测试发现是被动模式连接失败,无法打开被动端口。
看来问题还是出在 Windows Firewall,单单开放 TCP 21 Port 并不能有效解决该问题,通过任务管理器发现进程列表中并没有 FTP Service 的进程,经查该服务通过 svchost.exe 调用,那么只有将 FTP 服务添加到 Windows Firewall 才能有效地打开相关的端口。通过服务管理器得知 FTP7 的服务名称为:ftpsvc,那么我们可以通过命令行来添加 ftpsvc 到 Widnows Firewall 例外。为此,执行如下命令行:
netsh advfirewall firewall add rule name="FTP7 Service" service=ftpsvc action=allow protocol=TCP dir=in
当然,我们也可以通过“高级安全 Windows 防火墙”进行添加,不过图形化的操作步骤确实比较繁琐。
最后,从外部进行标准模式和被动模式的连接测试,全部通过。问题解决!
我在防火墙中开了5664和5665也无法解决问题。