桃李不言,下自成蹊;软件工程师,非某语言的程序员

在微软的云端服务器部署一个“谷歌日历”

(很多同志在测试特殊字符哦,确实当内容出现单引号时脚本报错了。哈哈,已修正)
1:准备工作(准备工作我都是从Lab on hand一步学来的)

云计算最近以来更大厂商都吹的很热,微软推出了Windows Azure 的社区预览版服务(现在对我来说是个免费的虚拟服务器),大家可以通过以下这个网址进行申请。

Windows Azure的申请非常简单,填写好基本信息之后,即可以激活状态,已经不需要等待回信确认了。(当然之前你必须具备一个Windows live ID)。

image

一路同意继续之后,填写基本信息注册成为Conect的成员,会收到一封验证邮件,进去邮箱确认一下(用来收取Sql Azure 邀请的邮件),顺便把注册申请填掉

image

上面那个表格填好之后,Windows Azure就申请成功了。转到主页,会在左侧看到【产品密钥】的链接菜单

image  点击链接跳转到申请密钥的界面image

点击【申请新的产品密钥】

image

点击【获取密钥】,就可以得到新的密钥了

image

Copy 这个密钥

服务网址:http://windows.azure.com/

登录之后,一路同意之后 ,到达以下界面,把Copy的密钥填入到输入框中,点击继续,最后点接受 就成功创建Windows Azure 了

image

回到首页,可以看到我的项目列表多了一个项目

image

点击项目名称后点击右上角的新建服务image ,创建一个虚拟服务;

image

之后是起个名字,和一个好记的网址确认即可,成功之后可以看到如下界面,右侧的大方块是测试服务器,左侧是正式服务器,即你可以在部署到生产环境时先部署到测试环境。Ok之后切换到正式环境

image

 

至此我们就拥有一个可以支持ASP.NET MVC的环境了(后面的代码是用asp.net mvc编写)

SQL Azure的申请和上面类似的我就不讲了,申请的地址是

https://connect.microsoft.com/Survey/NominationSurvey.aspx?SurveyID=5719&ProgramID=2089&SiteID=547

只不过这个申请不会马上通过,可能需要等待1-2天时间,在你的邮件里面会收到一封包含产品密钥的邮件

 image

同样复制密钥,访问https://sql.azure.com/

同样可以看到一个新的项目,输入管理员账号和密码(新建),你就可以创建你自己的数据库了。但是你不能在页面上建表和建索引等等

image

不过你可以通过 SQL Server Management Studio 2008 链接到该服务器,点击上图中的Connection Strings 按钮查看链接字符串

image

copy 链接中的Sql ,可以不要tcp:

打开SSMS 2008 ,链接到服务器,输入你前面创建的账号和密码,

image

 

你会收到一个失败的提示,因为这样是连不上的。。哈哈

image

点击确定,关掉窗口连接到服务器的窗口,点击【新建查询】。

image 

这时还是弹出链接到服务器的对话框,输入服务器地址,输入账号密码,点击【选项】按钮,因为我已经创建了数据库了,所以我想直接使用它

image

点击[确定],链接到服务器,这时仍然会弹出一个警告框,但是已经链接上服务器了

image

 

查看一下SQL SERVER 的版本。

image

 

至此大家可以通过,通过SQL语句建表和建索引和建立存储过程等,也可以自行查询计划等操作

但是字段类型不支持image, text,二进制等等。。

如果大家觉得麻烦可以使用下面这个工具来迁移你一般的数据库到SQL Azure 

http://www.infoq.com/cn/news/2009/09/SQLAzureMW-Migrate-to-SQL-Azure

我还是可以接受sql 的方式,因为一直用Power Designer生成sql 语句建表的

 

至此我们的准备工作就OK 了

2:开发工具包

在正式开始工作之前,先要准备一些工具

  • VS 2008 sp1必须的
  • ASP.NET MVC本示例必须的
  • Windows Azure Tools for Microsoft Visual Studio July 2009 CTP 玩Windows Azure 必须的,一下地址可以下载得到

http://www.microsoft.com/downloads/details.aspx?FamilyID=8d75d4f7-77a4-4adf-bce8-1b10608574bb&displaylang=en

 

3:开始了

当装好Windows Azure Tools for VS 之后再新建项目的时候,就会有一个新的项目模板,我们还是新来创建一个空的解决方案

image

然后再添加新的项目 ,选择Cloud Service分类中的Cloud Service项目模板。

image

选择你的项目包含的角色,目前支持的有Asp.NET 角色 (就是一般的asp.net webform网站项目),workrole (这个牛b了,类似于windows 服务,可以做一些定时处理服务等),还有一个就是CGI网站支持(还支持PHP呢),不过我们这里一个都不选,因为我要建一个ASP.NET MVC的项目,但是项目模板中却没有。没关系接着往下走

image

 

 

创建完后,我们看到了一个新的项目已经产生了,如图所示

image

这时我们再在解决方案上新建一个MVC的网站项目

image

image

然后我们再AzureAZC的这个项目中的Roles文件夹上单击右键,来选择一个现有项目,我选择刚刚创建的MVC网站项目

image

image

完成之后AzureAZC项目中的两个config都相应的发生变化(其实就是加了几个配置节)

我们把解决方案的启动项目设置MVC网站项目,来看看我们的网站是否可以访问

image

一切Ok,然后我们再把,启动项目设成AzureAZC,通过工具来模拟该程序部署到云端是否可以正常浏览,点击运行image

经过一阵编译和等待,会得到一个失败的框,说Storage服务没有初始化,其实我没有用到该服务啊,哎,我们把这个给关掉。

image

 

打开AzureAZC的项目属性,Development选项卡,将Start Development Storage Service设置成False (当然如果你需要使用,那你可以查看帮助来初始化它,并配置相关的数据库等)保存后重新启动运行,就可以启动起来了 ,如下图所示

image

同时来看一下工具Development Fabric(Windows Azure SDK中的工具,前面装tool 的时候默认会安装,也是必须的),模拟部署的情况,

image

说明我们这个程序可以部署到云端了(有时你本地浏览OK,但是部署到云端却报错,因为两边的代码的执行权限和dll环境不同),

如你本地可以运行的MVC程序,必须做以下设置才能在云端部署,否则会告诉你找不到DLL

要将MVC所关联的三个DLL复制到bin目录才行。

image

image

 

接下来我们就是删除默认MVC项目中的默认页面,添加我们自己的JS,样式,Controller,View啊等等(ASP.NET MVC的开发请参考相关教程),删除不必要的配置节等

来看下整理后的代码:(下一篇来详细讲解这个过程)

image

重新运行程序,发现单独浏览没有异常,但是模拟部署到云端却报权限不够,原来是使用Entity Framework 的中代码执行权限不够(可能是读取xml配置,或者是序列化反序列化的时候吧,我也不知道),那就只有提升权限了,提升权限非常简单:打开文件ServiceDefinition.csdef

将配置节enableNativeCodeExecution 设置成true 即可,重新运行代码页不报错了

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="AzureCalendarMvc" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition%22>
  <WebRole name="AzureCalendarMvcWeb" enableNativeCodeExecution="true">
    <InputEndpoints>
      <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
    </InputEndpoints>
    <ConfigurationSettings />
  </WebRole>
</ServiceDefinition>

Release编译后在项目AzureAZC上选择发布,自动弹出Windows Azure的页面和发布的文件夹,其中有两个文件

OK了,这下我要正式部署了打开网页 https://windows.azure.com/

点击存在的仅有的项目,选择前面创建的host servicce 服务,点击部署按钮

image

上传发布后的文件s,并属于一个部署号,点击部署,进行上传,和初始化,该操作可能会耗时2-3分钟设置更长。

image

上传完毕后,点击run,运行起来 ,

image

然后是漫长的初始化过程,该过程需要5-10分钟甚至更长,如果半个小时还没有Start,那说明你的程序有问题,还是再调试调试吧

image

当状态变成Start 后,点击下方的随机生成的URL访问下看看效果,

 image

周视图:

image

 

日视图

image

 

月视图

image

快速添加

image

查看信息

image

觉得一切OK了,点击Swap按钮进行切换即可以在正式的url中访问刚才的部署了

文中的例子可以可以访问 http://xuanye.cloudapp.net/

posted @ 2009-09-10 23:24  假正经哥哥  阅读(6113)  评论(20编辑  收藏  举报