天天看点

用Windows IIS和阿里云NAS提供Web和FTP服务

阿里云文件存储服务nas(阿里云nas)是阿里云在2016年正式推出的公有云上的网络文件系统实现。阿里云nas主要面向阿里云 ecs 实例、hpc、docker、弹性web和batchcompute 等计算节点提供文件存储服务。通过标准的文件访问协议,用户无需对现有应用做任何修改,即可在云上使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。阿里云于2016年发布了支持nfs网络文件系统访问协议的阿里云文件系统(nas)。2017年3月,又增加了smb文件系统访问协议的支持,正式对外公测。

 本文介绍如何结合阿里云nas的smb协议支持和ecs windows虚拟机,使用windows内置的互联网信息服务(iis)来提供web和ftp服务。

为了丰富文件系统的协议支持和满足客户的兼容性需求,阿里云nas在今年3月提供smb(server message block)文件系统访问协议的支持,并开始公测。与nfs相比,smb文件系统访问协议更加适合于windows客户端,各个版本的windows对smb协议的支持更加完善,绝大多数windows应用程序不经修改即可通过smb协议访问阿里云文件存储服务。因此,阿里云建议应用集中运行在ecs windows实例上的用户优先考虑使用smb文件系统。阿里云是目前市场上唯一一个全面支持nfs和smb协议的公有云厂商。阿里云nas支持smb 2.0及以上的smb协议版本,对应支持windows vista /

windows server 2008及以上的各windows版本,不支持windows

xp / windows server 2003及以下的各windows版本。做出这一选择的主要原因是smb

1.0与smb 2.0 及以后的版本相比,由于协议设计的巨大差异在性能和功能的上有严重的不足,同时只支持smb1.0或更早协议版本的windows产品都已经完全退出微软支持的生命周期。如果用户创建新windows实例,我们推荐至少选择windows 2008 r2以上的版本。

 windows server目前仍然是非常流行的网站建构平台。到2017年2月止,全球仍然有超过43%站点的web server采用微软iis (来自netcraft february 2017 web

server survey),很多网站和博客系统也是基于内容管理系统例如wordpress、joomla等和iis在windows平台一起实现的。在阿里云现有的用户中,有不少用户选择用阿里云ecs提供的独享windows虚拟机来提供网站服务。通过将网站内容资源集中存储在一个高可靠,高吞吐,按量付费的阿里云 smb share上,iis可以象访问本地文件系统一样访问阿里云nas上的数据,从而让用户的网站可以实现存储和计算服务的分离,同时计算资源和存储资源都可以支持按需弹性扩容, 通过阿里云提供的负载均衡服务由多个虚拟机来共同承载一个弹性容错的网站架构。一个简单的示意图如下:

用Windows IIS和阿里云NAS提供Web和FTP服务

iis提供的ftp服务也同样存在着非常广泛的需求:很多web站点的管理员通过ftp来远程管理web站点的内容;同时也有很多客户希望利用windows虚拟机上的ftp服务在广域网和阿里云之间传输和共享文件。

这里我们以iis 7.5 (windows server 2008 r2)的设置为例,来展示如何通过阿里云nas在阿里云上提供提供单节点的web和ftp服务。其它windows服务器版本如windows

server 2008和windows server 2012的安装和部署也类似。对于windows

 <b>需要着重指出的是,在公网环境里提供</b><b>web 和ftp service的阿里云ecs虚拟机由于服务的开放性容易受到安全攻击。我们在这里给出的设置步骤着重于说明如何在功能上连接web服务与nas存储,虽然有安全性的考虑但不能作为完整的安全配置和实现方案。用户需要承担安全方面的所有最终责任,从系统级别(如设置防火墙、ecs实例安全组和及时安装操作系统补丁)和服务级别(如使用阿里云的各个安全产品)来全面保障自己网站服务和数据的安全性。</b>

 <b>iis安装</b>:

 以windows server 2008 r2为例,通过服务器管理器添加iis角色并安装iis的过程如下面几张图所示。在不同windows操作系统上安装iis的详细过程请参阅下面的微软在线文档:

<a href="https://technet.microsoft.com/zh-cn/library/hh831475(v=ws.11).aspx">安装 iis 和 asp.net 模块(windows server 2012 和2012 r2)</a>

 1. 用户在服务器管理器中选择添加web服务器(iis)角色。

用Windows IIS和阿里云NAS提供Web和FTP服务

       2. 用户选择为web服务器安装的角色服务,处理基本的http功能以外,我们还包括了ftp服务及扩展,asp服务等,用于后面提供ftp over ssl服务和演示动态网页脚本的使用。

用Windows IIS和阿里云NAS提供Web和FTP服务

         3. 用户选择安装,下面是安装完成的提示界面。 

用Windows IIS和阿里云NAS提供Web和FTP服务

<b>nas smb文件系统的创建和设置</b>:

 用户的web服务资源及配置文件可以集中存储在阿里云nas的一个smb share上。在创建了一个支持smb的阿里云nas文件系统之后,用户通过设置权限组来保证当前web服务器可以读写访问smb share对应的文件系统。用户可以使用vpc或者经典网络来连接nas文件系统和web服务器。创建和使用阿里云nas

 在创建smb 文件系统之后,用户可以在文件系统的缺省share

“myshare”下面进一步创建目录如www来存储网站文件。我们在myshare\www下创建两个简单的文件并在后面以它们为例来说明整个操作流程:静态网页index.html和动态asp脚本test.asp。前者显示“hello world!”,后者动态获取并显示当前时间。

&lt;html&gt;

  &lt;head&gt;

     &lt;title&gt;hello world in html&lt;/title&gt;

  &lt;/head&gt;

  &lt;body&gt;

     &lt;center&gt;&lt;h1&gt;hello world!&lt;/h1&gt;&lt;/center&gt;

  &lt;/body&gt;

&lt;/html&gt;

<b>index.html</b>

     this page was last refreshed on &lt;%= now() %&gt;.

&lt;/body&gt;

<b>test.asp</b>

用Windows IIS和阿里云NAS提供Web和FTP服务

出于安全和管理的考虑,我们在系统里还加入了一个新用户“iis_user”。在后面的例子中,在提供ftp服务或者在windows server2016上运行时,我们选择通过该用户而不是系统管理员来进行数据访问。

session中映射的网络驱动器如(z:\)是不可直接使用的,否则会出现访问失败的错误。

用Windows IIS和阿里云NAS提供Web和FTP服务

通过用本地浏览器访问localhost或者127.0.0.1的index.html和test.asp,我们可以确认iis现在已经可以正常进行web服务了。服务器用户可以进一步设置阿里云安全组和windows防火墙来进行web访问安全的限制。

用Windows IIS和阿里云NAS提供Web和FTP服务
用Windows IIS和阿里云NAS提供Web和FTP服务

对于windows server 2016的用户来说,由于微软在该产品周期做的几个改动,目前需要通过以下的两个额外设置来让iis和阿里云nas的smb服务正确协同工作。

1.  用户需要改动smb

client的一个注册表项来支持对smb share的匿名访问。如下图所示,用户需要运行注册表编辑器regedit来修改下面的注册表值。

 hkey_local_machine\system\currentcontrolset\services\lanmanworkstation\parameters\allowinsecureguestauth

 具体来说,在用户打开注册表编辑器之后,需要找到hkey_local_machine\system\currentcontrolset\services\lanmanworkstation\parameters, 然后用右键选取新建dword(32位)值。

如果通过命令行修改,命令如下:

reg add hkey_local_machine\system\currentcontrolset\services\lanmanworkstation\parameters /v allowinsecureguestauth /t reg_dword /d 1

用Windows IIS和阿里云NAS提供Web和FTP服务

用户接着创建并编辑该值allowinsecureguestauth<b>并将其设置为</b><b>1。</b>

用Windows IIS和阿里云NAS提供Web和FTP服务

  2.  除了注册表项外,用户还需要在iis的网站设置中指定一个本地用户来访问网站在阿里云nas上的资源。具体的步骤如下面两图所示,用户选取网站的基本设置,再通过“连接为”设置特定用户,这里我们选用前面设置的用户“iis_user”。

用Windows IIS和阿里云NAS提供Web和FTP服务
用Windows IIS和阿里云NAS提供Web和FTP服务

 很多iis用户希望用ftp来共享文件或进行网站内容发布。在这里我们介绍如何通过iis

设置ftp over ssl服务 (又名ftp-ssl, s-ftp, ftp secure)。

 <b>安装</b><b>ssl证书</b>:

             1.  用户 在iis的服务器部分选择“服务器证书”,申请和管理服务器证书。

用Windows IIS和阿里云NAS提供Web和FTP服务

2.  用户指定服务器证书的名称。

用Windows IIS和阿里云NAS提供Web和FTP服务

3.  配置和创建成功ssl证书。

用Windows IIS和阿里云NAS提供Web和FTP服务

 <b>ftp站点设置</b>:

 1. 用户在iis的网站部分选择“添加ftp站点”,和web服务一样,物理路径需要使用unc格式的smb share路径。在这个例子里,我们仍使用前面用过的web service的www目录。用户可以根据需要选取myshare上其它目录,也可以通过设置多个ftp站点利用不同的端口来提供对不同目录的访问。

用Windows IIS和阿里云NAS提供Web和FTP服务

2. 用户绑定提供ftp服务的ip地址,并分配端口号。这个例子里,我们出于安全的考虑没有使用标准的21端口而是用2222端口来提供ftp的控制信息通道。<b>需要格外注意的是,我们选择需要</b><b>ssl证书才能连接这个ftp站点,并指定使用前面创建的ssl证书。</b> 

用Windows IIS和阿里云NAS提供Web和FTP服务

3. 用户指定身份验证方式为“基本”,并且将读写权限提供给用户iis_user。如果需要的话,这里也可以选取更多的授权用户。

用Windows IIS和阿里云NAS提供Web和FTP服务

 4. 处于安全考虑,用户可以如下图所示,在通过在iis中打开服务器级别“ftp防火墙支持”来限制ftp数据通道的端口范围,并选取“应用”。

用Windows IIS和阿里云NAS提供Web和FTP服务

  在这之后,为了该端口范围立即生效,需要在服务器管理器中重启ftp服务。

用Windows IIS和阿里云NAS提供Web和FTP服务

5.   处于安全考虑,建议用户通过阿里云的安全组设置来限制ftp客户端的访问。在下面的例子里,我们将已经设置的ftp控制及数据端口范围只授权给一个客户端ip访问。需要的话用户也可以授权给多个ip或者一个多个网段。

用Windows IIS和阿里云NAS提供Web和FTP服务

6. 下面几张图展示了通过ftp客户端winscp利用ftp over ssl来访问我们的ftp站点的过程。

接受服务器证书,只在客户端第一次连接ftp站点才发生。

用Windows IIS和阿里云NAS提供Web和FTP服务

  设置协议类型,端口号和登录信息。

用Windows IIS和阿里云NAS提供Web和FTP服务

  登录后要求输入密码,即授权用户所在iis服务器上的密码。

用Windows IIS和阿里云NAS提供Web和FTP服务

  数据连接建立,服务器读取和传输远程目录信息。

用Windows IIS和阿里云NAS提供Web和FTP服务

  用户完成初步连接,可以进行文件的上传下载。

用Windows IIS和阿里云NAS提供Web和FTP服务

本文通过例子介绍了如何结合阿里云nas的smb协议支持和ecs windows虚拟机,使用windows内置的互联网信息服务(iis)来提供web和ftp服务。阿里云nas服务还在不断发展和演进中,后续会提供更好的协议服务和性能支持。