国内的Windows Azure很快就要正式商用了,许多小伙伴们也有计划把现有的网站迁移到Windows Azure上去。但是国内相关的中文文档还是比较缺乏的,所以今天我就写了个超详细教程来教大家如何把ASP.NET网站部署到Windows Azure上。demo用的网站是带有数据库的,并且最后还会演示如何绑定一个.com域名到网站上。

我写的内容基本都是在Channel9上看来的,并且自己亲自实践过许多次的。大家现在阅读的这个博客就是用同样的方法部署到Windows Azure上的。所以不必担心文章坑爹。我的博客不像国内的许多网站那样,发表的内容都没自己测过,非常没有责任心。

下面进入正题。

1. 部署数据库

首先,假设我们的网站已经开发好了。这是一个带有一个SQL Server数据库的ASP.NET网站。第一步我们要做的,是把数据库部署到Windows Azure上去。

你需要的工具:SQL Server 2012 Management Studio。注意,仅仅要求SSMS为2012版,你的数据库引擎版本没有限制。

1.1 在Windows Azure上创建一个数据库服务器

在SQL DATABASES页面中,点击SERVERS选项卡进入SQL服务器列表页面。这里我已经有个服务器了,但是我还是教大家怎么创建一个新的。

1.2 点击页面最下方工具栏上的ADD按钮

1.3 在弹出的对话框中输入SQL服务器的用户名和密码

REGION选择China North,这是有原因的,为了省钱,稍后会解释。最下面的勾“ALLOW WINDOWS AZURE SERVICES TO ACCESS THE SERVER”一定要勾选,意思是允许你Azure上其他服务访问这个数据库,而不用给他们一个个在防火墙中指定IP地址。我们稍后要创建的网站也属于“AZURE SERVICES”的范畴,所以一定要勾选这个选项。

1.4 大约4秒后,数据库创建完成。

服务器的名字是Azure随机分配的,不能改。这里我们的服务器叫 yfb2xnprey

1.5 接下来,在CONFIGURE选项卡中,我们要把自己当前的IP地址加到防火墙规则里。

这仅仅是为了迁移数据库使用一次。用完以后为了安全建议大家删掉这个IP。IP地址支持单个的,也支持地址段,大家可以根据自己需要设置。

1.6 接下来,我们就要迁移数据库了。

打开SSMS 2012,按图中的格式填写服务器名称和你之前设置的用户名、密码。注意,用户名后面一定要有一个“@服务器名称”!

1.7 成功连接到SQL Azure服务器

因为是刚刚创建的新服务器,所以里面一个数据库都木有。

1.8 接下来,用SSMS直接向Azure迁移数据库。

连接到你本地服务器。在你要迁移的数据库上点右键,选择Tasks - Deploy Database to SQL Azure

在向导中再次点击Connect按钮,连接到SQL Azure服务器。然后输入新数据库的名称。“Edition of SQL Azure”根据自己需要选择,一般小型网站选择Web,1GB是最省钱的。然后点击Next开始部署。

部署完成后你能看到成功的结果

现在,回到Windows Azure管理平台中,也能够看见迁移后数据库了。

1.9 准备新的连接字符串

点击刚才创建的“Infodiaos”数据库,打开数据库管理页面,然后点击“View SQL Database connection strings...”

在弹出的窗口中,复制ADO.NET的连接字符串。

接下来,在你的ASP.NET项目里,打开Web.Release.Config文件。如图所示,把connectionStrings节点根据自己网站的配置还掉。这个Web.Release.Config文件里的配置会在用“Release”模式编译网站的时候自动把最终的web.config换掉。“xdt:Transform="Replace"”的意思是在编译网站时候把connectionStrings节点整个换掉。

对这部分感兴趣的小伙伴们可以看看大微软的这篇文章:http://www.asp.net/mvc/tutorials/deployment/visual-studio-web-deployment/web-config-transformations

至此,数据库部分就搞定了。

2. 部署网站

2.1 在Windows Azure上创建新网站

在Windows Azure管理平台最下方的工具栏上,点击"New"

选择Compute,Website,Custom Create。这是为了防止QUICK CREATE把我们不想要的设置默认撸进去。

在弹出的对话框中,输入网站在azure里的二级域名。如果文本框旁边出现绿色的对勾,就表示这个域名是可以用的。当然,这不是我们最终的域名。稍后会教大家绑定自己的域名上去。

REGION里面,要选择China North,也就是要和数据库在同一个地理位置,这样的话,同一个数据中心里的传输是不计费的。那为什么刚才数据库一定要选China North而不是China East呢?因为目前中国的网站服务TMD只能选North....

DATABASE里面啥都不要选,我们稍后要手动搞这部分。

网站创建完成后,在web sites的列表里就能看见正在运行的空站点了。目前是Free模式的,这个是相当有限制的模式,不能绑定域名,稍后我们会更改。

2.2 将数据库链接到网站

为了方便管理,我们通常将数据库链接到网站中。注意,这里的链接仅仅是对于Azure管理平台来说的,并不是程序里的数据库连接。

切换到LINKED RESOURCES页面,点击“LINK A RESOURCE”。

然后选择“Link an Existing Resource”

选择“SQL Database”

选择我们的数据库,并且确认用户名和密码

完成连接后,应该能看到数据库已经被成功挂在网站下了。

2.3 从Visual Studio部署网站

最方便的部署方式是通过Visual Studio,直接Web Deploy到服务器上。当然,你也可以手动拷贝文件到Azure提供的FTP上。不过我这里只演示Web Deploy。FTP大家可以自己开荒。

在网站的DASHBOARD右侧,点击“Download the publish profile”。下载VS用的发布文件。

然后回到Visual Studio,在网站项目上点击右键,选择“Publish”,然后导入刚才下载的Profile文件。

之后,点击“Validate Connection”验证配置是否正确。如果正确,会看见一个绿色的√。

然后在Settings页面里,选择“Release”模式,这样才会把之前在Web.Release.Config里配置的连接字符串换进去。

同时,建议勾选“Remove additional files at destination”,这样会删除Azure默认网站的文件,完全干净的部署我们的网站。

最后,确认发布的文件后,点击“Publish”发布网站。

发布完成后,VS会自动打开目标网站的地址。这是Azure免费网站的二级域名。我们马上要把它换成自己的域名。

2.4 绑定域名

如果你自己申请了域名(.cn垃圾域名除外),可以很方便的和Azure Website绑定。

首先,Free模式的网站是不支持自定义域名的,所以我们要在SCALE里把网站设置成"SHARED"或“STANDARD”,当然,这两种就要收费了。

之后,在CONFIGURE选项卡中,你就能看到绑定域名的地方了。

点击“manage domains”。

同时,我们要在域名的DNS设置里加两个CNAME记录。这个因人而异,我是DNSPOD的域名解析,加完以后如图:

@-CNAME-infodiaos.chinacloudsites.cn

awverify-CNAME-awverify.infodiaos.chinacloudsites.cn

等待DNS记录生效后,切回到Windows Azure的管理界面就可以完成添加了。

绑定后的网站就是这样了,可以使用自己的域名,看上去非常的牛逼,而且国际域名不用备案哦。.CN的小伙伴们哭了吧!

最后感谢各位读者的支持!

祝大家2014新年快乐!