Tagged: Azure

Sitecore Azure Walkthrough and Gotchas

Walkthrough

With little documentation online on this I thought I’d share something with all the gotchas I spotted in getting it up and running.  Hope it speeds up someone else’s attempts.  The version I have running is Sitecore Azure 3.1.

Environment File

You need to request one from Sitecore as detailed in their documentation.  As this can take a while it’s best to do this up-front.  It took under an hour to get back to me but their docs say to allow for up to 24hrs.  The doc links you to their generic global contact us form which isn’t too helpful. There is also an email address which might get you a response faster  – with details of what to send them in the following post.  But the best way I’ve found is to request an environment file is via the following URL as it captures all the fields you need.  (Note, you cant have dashes in your project name).

Azure Pre-requisites

Unless you’ve installed SQL 2012 you WILL need to install the following:

  • Microsoft SQL Server 2012 Shared Management Objects and
  • Microsoft System CLR Types for Microsoft SQL Server 2012

Microsoft has made this part quite difficult.  Firstly they’ve changed the URL to the download so the Sitecore doc is out of date.  The actual download URL for these resources is here.

Next they’ve chosen to not indicate what the version of the MSI is on its filename.  Therefore you may inadvertently install the X86 one when you need the X64 one.  You can find this out by downloading the MSI and checking the details tab.

2013-10-18_121916

When you install these note that one is dependent on another but you can figure the order out quite easily.

You also need to install MS Azure SDK 2.0Note – this is another gotcha.  I didn’t read the doc carefully enough and went ahead and installed SDK 2.1 but the version of Sitecore Azure I was planning to use Sitecore Azure 3.1.0 rev. 130731, was not compatible with it.  I only ended up finding this when my deploys were failing with the following:

Exception: System.ApplicationException

Message: Can’t find sdk path

Source: Microsoft.ServiceHosting.Tools.MSBuildTasks

at Microsoft.ServiceHosting.Tools.Internal.SDKPaths.GetSDKPath()

Sitecore

Installing Sitecore 7.0 is fairly straightforward. Older versions of Sitecore are compatible with Azure but require some config so I thought I’d go through the path of least resistance.  Note with v7 the dependency on .NET 4.5 so ensure that is installed (Visual Studio 2012 users will have it already; earlier versions will need to install it separately).  You then install the Sitecore Azure module by installing the package found on the SDN using the Package Installer.  (I’m using Sitecore Azure 3.1.0 rev. 130731.zip).

When the install completes you get a shiny new button:

2013-10-18_122019

This opens a tool which allows you to run your deployments.  In the process of which it will ask you to upload your environment file and also install a management certificate.  The latter process is very straightforward and doesn’t merit any observations.

Finally you should be ready to kick off a deploy.

Network Problems

When I tried this on my workstation behind a corporate filewall and a web proxy I ran into innumerable issues.  It was quite clear something was getting blocked because the XAML interface was slow to respond, it hung when trying to do anything

2013-10-18_122058

I was getting errors logged which pointed at network issues

2013-10-18_122140

plus

2013-10-18_122221

SQL Timeouts

The next problem I encountered was deploys failing to complete with SQL stack traces that looked like this:

ManagedPoolThread #16 16:45:00 ERROR Sitecore.Azure: Deploy database error. Retry 6

Exception: System.Data.SqlClient.SqlException

Message: A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: SSL Provider, error: 0 – The wait operation timed out.)

Source: .Net SqlClient Data Provider

at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)

at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptionsuserOptions, DbConnectionInternal& connection)

at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)

at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)

at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)

at System.Data.SqlClient.SqlConnection.Open()

at Sitecore.Azure.Managers.Pipelines.DeployDatabase.TransferData.TransferDataWorker(Table table, Database targetDatabase)

at Sitecore.Azure.Managers.Pipelines.DeployDatabase.DeployDatabasePipelineProcessor.DoDeploy[T](Func`3 func, Int32 repeat, IEnumerable`1 objects, Database targetDatabase, Action`1 exceptionCallBack)

The advice I got from the helpful team at Sitecore Support was that the defaultSQLtimeout in configuration was probably set too low and so I ended up amending the default value found here:

<setting name=”DefaultSQLTimeout” value=”00:05:00″ />

To 30 mins.  On redeploy I was able to successfully complete a deployment.

Missing DLLs

Subsequent to raising a ticket about it and resolving it, I noticed the missing dlls issue has been blogged about elsewhere:  http://toadcode.blogspot.co.uk/2013/04/sitecore-azure-getting-up-and-running.html

For the sake of completeness and given I am working with a different version of Sitecore than Toad’s Code, I thought I’d add what I had to do.  The missing files are as follows:

  1. System.Web.Mvc.dll 3.0.0.0
  2. System.Web.Helpers.dll 1.0.0.0
  3. System.Web.WebPages.dll 1.0.0.0
  4. System.Web.WebPages.Deployment.dll; 1.0.0.0
  5. System.Web.WebPages.Razor.dll; 1.0.0.0
  6. Microsoft.Web.Infrastructure.dll. 1.0.0.0

At this stage I did not have an instance of visual studio running with my own code and a build pointing at my Sitecore website, nevertheless in order to obtain the correct versions of these (there were multiple version of these on my machine and you need to choose the right ones) I opened visual studio, created a new asp.net project and added these as references because VS does a nice job at clearly specifying which versions you are adding on the right-hand side.  I then manually copied the binaries from this compiled project into my Sitecore instance and redeployed.  Note – you can also RDP onto your already-deployed instances and “hot fix” them.

2013-10-18_122303

When completed I now have a blank instance of a Sitecore delivery instance in the cloud:

2013-10-18_122424

Advertisements