Windows Azure 网站服务高级功能探索


Windows Azure的网站服务一直是本人十分推崇的服务,它就是微软的AppEngine。如果单纯比较"App Engine"本身,网站服务在易用性、可扩展性、IDE集成、可定制性及UI方面都领先业界其他的类似平台,比如Google的AppEngine和AWS的Beanstalk。不过网站服务毕竟出自微软,在外围服务上并没有像其他厂商一样支持大量的开源组件服务,这是网站服务可以和其他服务互补的地方。


那么,网站到底好在哪里呢?下面我们就逐一分析


基本功能

站点管理

这个不用多说,Windows Azure可以在几秒内创建、删除一个网站,然后会立即分配一个URL,用户就可以访问了

持续代码发布及版本控制

Windows Azure的代码发布机制有很多,可以直接发布(使用FTP,Git, Visual studio或是Webmatrix等工具),也可以间接发布,即开发者先把代码发布到源代码控制器或者网盘中,然后同步到Azure上,目前支持的有微软自己的TFS以及外部的包括GitHub, Codeplex,DropBox等等 下面这篇文章介绍了如何使用WebMatrix向网站发布Wordpress  http://blog.csdn.net/shaunfang/article/details/16857095

Azure网站的一个特点,就是支持持续的代码发布。任何一次到Git或者TFS的提交,都会立即触发一次代码发布过程。这保证了网站上托管的代码永远是最新版本。用户也可以将代码回滚到之前的版本。如果不希望每次提交就同步网站,可以提交代码到其他分支。网站服务只会同步主分支下的代码

代码编辑

可以在管理门户上直接点击页面底部的Webmatrix进行在线代码编辑,Webmatrix也可将全站镜像到本地编辑,然后上传修改后的代码

运行环境选择

目前网站服务支持.NET 3.5/4.5, PHP 5.3/5.4/5.5, Nodejs 0.6.17/0.6.20/0.8.4. 通过配置界面可以修改选中的运行环境。值得一提的是,不同程序可以同时运行在同一个网站里面,比如,在同一个URL目录下可以既有asp又有php。这是因为后台的webserver是IIS,它可以根据请求的后缀选择相应的handler处理请求

生产、测试环境切换

用户可以针对同一个应用创建两个网站,一个做生产,一个做测试,并且可以随时切换二者的URL

环境变量

Azure为各种Web程序提供了环境变量接口,这样一些常用的配置参数可以直接在Azure界面上修改,而无需每次更新代码。要访问这些变量,需要在程序里面调用Azure的API

兼容性

Azure在云端的网站服务器就是IIS,因此云端的网站迁移回本地,或者把本地的网站迁移到云端无需任何代码修改。需要修改的场景,是需要访问Azure的环境变量(见上)

系统监控

Azure提供了基本的Web性能监控能力和可用性监控,并且可以提供异常报警

弹性伸缩

用户可以动态改变网站的运行实例数(进程数或虚拟机数)和规格。甚至可以通过性能指标和时间设置策略实现自动伸缩

Web作业

可以定义定期任务在后台执行,任务类型可以是exe,bat,cmd,powershell,php,bash,python,nodejs

备份

可以将网站数据连同所对应的数据库一同进行快照备份,可以定期备份

调试与诊断

可以控制日志输出级别,进行日志保存

对于.NET,支持Visual Studio远程调试,可以在代码上设置断点,然后在云端执行。Visual studio可以查看断点处的各种变量,就如同本地调试一样,也可以单步执行


高级隐藏功能

除了上述功能外,Azure网站还有大量的高级功能,这些功能不一定人人都需要,但是却十分强大。

后台编译

Azure可以从源码控制站点checkout代码,如果是脚本语言还好,直接可以用,比如PHP。但如果代码需要编译(ASP.NET),那不是没法直接用么?Azure提供了后台自动编译的能力。对于asp.net站点应用,编译是在客户端完成的,编译后的代码会上传到源码管理站点上,此时azure上无需再次编译。如果是asp.net项目,那么checkin的只是源码,每次客户端提交代码后,azure会首先checkout代码,然后立即调用msbuild进行编译,而这个过程,对用户是透明的。用户只要保证代码能正常编译即可。

IIS远程管理

用过IIS的都知道IIS有一个管理工具,可以进行图形化的配置管理。现在,azure网站同样可以支持该管理工具进行远程管理。只需要在IIS管理器上连接远程站点

然后输入网站的URL(需加端口号443)

再输入管理id(跟ftp的用户密码一样),就可以连入

IIS Manager可以通过图形化的方式修改web.config,这样我们就不需要为如何手动编写web.config而烦恼了。特别是像URL重写这种功能,IIS管理器可以为我们提供强大的规则设计器和测试功能,而不用我们去成为正则表达式的专家

日志流监控

日志下载是很简单的功能。不过,我们调试程序的时候,我们希望能够看到日志的滚动输出,而不是每次下载日志文件。Azure网站提供了多种方式让我们查看日志的流式输出 1. Visual studio 可以打开网站的stream log
2. 通过命令行监控
这个功能就如同linux 的tail命令一样,可以实时查看云端的持续输出
3. 通过云IDE (visual studio online)或者Azure的后台管理界面监控。后面会详细解释

云IDE

Azure网站与Visual Studio Online进行了集成。VS Online是一个云IDE,提供纯Web界面的开发环境。其具体介绍,可参考http://blog.csdn.net/shaunfang/article/details/20055341

后台管理

Azure网站是一个PaaS环境,许多后台的配置信息被屏蔽了,用户从管理界面上看不到后台的详细配置。不过,这也带来一个潜在的问题,在某些场景下,程序员可能会希望了解后台的更详细的配置,比如所有的环境变量、云端所有隐藏的文件、所有安装的软件包。现在,Windows Azure开放了后台管理接口,用户可以连入这个接口。
连入的方式,是在网站URL中间加入SCM,比如http://phptest.chinacloudsites.cn/ 这个网站的相应后台管理界面,是https://phptest.scm.chinacloudsites.cn/.访问时,首先需要输入管理员账号和密码。这个登陆信息和FTP登陆信息一样,可以从网站的仪表盘页右侧得到,也可以自己进行设定
登陆后,会看到如下的界面

这个界面名为Kudu。Kudu是一个基于Azure网站的一个插件,其本来的功能,是为Azure网站提供Git代码同步的功能,后来,产品团队对功能进行了扩展,实现成为一个全功能的管理平台
在Kudu的首页,可以看到一系列REST接口的定义。通过这些REST接口,我们可以查询网站服务的环境配置、进程、文件系统、版本信息,并进行Web作业的提交
进入Environment页,可以看到所有的环境变量,包括Windows变量、IIS配置、OS配置等等。

进入Debug Console页时,有两个选择,一是使用cmd命令行,二是使用powershell命令行

进入后,我们会看到上下两个栏目,上面是目录和文件列表,下面是Web版的命令行界面。在文件列表里面,我们可以看到主机上的所有文件,点击三个小图标,我们可以切换驱动器。这里不仅能看到项目文件,比如网站代码和日志(与FTP看到的一样),还可以看到系统文件,包括全部Windows系统盘和临时数据盘上的文件。我们还可以上传、下载文件、编辑文件。需要注意的是,Windows系统盘内的文件是只读的,无法编辑。我们只能编辑网站目录里的文件以及临时盘上的数据

编辑界面如下。这样,我们就有了一个简单的Web版的文本编辑器

在下面的命令行工具里,我们可以执行各种命令。这个Web版的命令行基本上跟本地命令行一样。我们可以用help查看可用命令

我们可以进行文件拷贝,进行解压缩等等操作。
进入页面顶部的Diagnostic Dump,可以打包下载所有日志文件。进入Web Hooks页面,可以定义钩子程序。钩子程序在每次完成代码更新后会被系统触发。比如,我们希望系统每次从Git更新代码后通知用户,可以在这个地方定义一个URL。这样,每次部署完成系统都会调用这个URL

管理扩展

Kudu的功能并不是全部。用户可以自己编写扩展包自定义管理功能,比如进行同步、通知、监控、报警等等。扩展包是一些代码文件,可以安装在Kudu上。具体方法可以参考 http://www.windowsazure.com/en-us/documentation/articles/web-sites-transform-extend

一些常用的扩展有:

1. 实现多站点文件同步。下面的扩展包实现了两个Web站点之间的自动文件同步。这可以用来做异地镜像,比如在北京和上海各自建立一个网站,每次只在一个站点发布文件,另一个站点就会更新内容。结合智能DNS,我们可以实现广域网就近用户访问

https://github.com/projectkudu/KuduSync 

2. PHP管理。为PHP提供图形化管理界面

https://github.com/projectkudu/PHPManager 

这个扩展包可以图形化在线编辑PHP配置文件,无需手动下载、编辑php.ini。也可以进行php版本、配置、日志的查看



3. applicationhost.config定制。使用过IIS的用户可能会知道applicationhost.config这个配置文件,它和web.config结合,配置网站信息。其中applicationhost.config是server级别的配置,web.config是站点级的配置。使用网站服务时,我们只能修改web.config,而某些配置项是在applicationhost.config中被锁死的,无法编辑(applicationhost.config是保存在windows系统目录下,无法修改)。而网站扩展为我们提供了一种修改applicationhost.config的方法,就是在网站目录里面定义一个xdt文件。这个xdt是一个xml的差量文件,可以修改原xml生成新xml。具体方法可以参考

http://www.windowsazure.com/en-us/documentation/articles/web-sites-transform-extend/#transform




相关内容

    暂无相关文章