我们是Azure的新手,我们拥有一个庞大的现有网站(具有不同客户的多个实例),以及相关的Windows服务和SQL Server 2008数据库。
我们正在将开发中的网站迁移到Azure。我们正在创建一个Azure工作者角色来包装Windows服务执行的代码每小时运行但我主要关心的是部署,在理想的世界中我们将自动部署但是现在我们希望到达以下点我们可以为客户构建单个部署包,将数据库迁移脚本运行到Azure SQL数据库并迁移Web角色和站点,在此期间将显示一个保留页面,以便用户知道该站点当前正在更新。如果出现问题,如果有办法回滚也会很棒。
尽管我的研究无法找到上述过程的答案,但所有内容似乎都涉及部署数据库更改(这将包括用于数据迁移/更改的自定义脚本),然后从visual studio将网站发布到Azure,但我们想要为了多次部署,最好在我们/他们准备好迁移到下一个版本时构建我们针对每个客户站点/数据库运行的包,因为这可能并不总是同时发生。
我们当前的部署策略是一团糟,我们在IIS中停止应用程序,然后启动另一个,显示一个保持页面,说明该站点正在更新。然后我们停止Windows服务并手动复制覆盖现有网站和Windows服务的最新版本。然后,我们运行一个SQL脚本,对数据库进行任何更改,然后重新启动Windows服务和IIS应用程序。
这是不可持续的,但在我的研究中,我没有遇到过前进的最佳选择。我已经看过MSBuild,但这对我来说是全新的,并且找到一个从这种不熟悉的技术开始的地方证明是很难的。我还看了一下FluentMigrator并考虑从application_start运行我们的数据库更改,但我不确定我对此感到满意。
由于我们正在寻求迁移到Azure,我们将使用5种不同的配置运行该站点,目前我们正在查看发布配置文件和托管构建控制器,但我无法弄清楚如何使用这些更改来部署数据库。
我很欣赏其他人如何处理这样的部署,考虑到我们正在使用所有最新的技术,VS2013,VSO,Azure等,并且我们需要能够为不同的客户更改配置我假设发布个人资料是最好的方式,但我可能错了。