Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
This topic describes how to deploy Episerver sites through Visual Studio.
You can install Episerver through XCOPY deployment by copying application files. An XCOPY-style file transfer simplifies deployment and maintenance of Episerver sites because no registry entries are created, and no shared components are registered.
The XCOPY architecture in Episerver CMS has no machine- or site-specific information stored in configuration files, so you can use a shared folder for multiple servers. When you develop in a shared environment with source control, you can keep configuration files checked-in and still create a site that you can duplicate in a multi-site deployment.
You can have one single IIS application with multiple sites, or multiple IIS applications pointing to the same physical directory. The machine to which you install additional sites does not need to have Episerver installed.
The following procedure shows how to deploy an Episerver site from development to production. You can automate this using MSDeploy or other tools.
You need three artifacts to bring over to the production server:
Note: The following steps assume you have an existing site and good knowledge of using Visual Studio, Internet Information Services Manager and SQL Server Management Studio.
Note: If the database files are not stored in App_Data, see Back Up and Restore of SQL Server Databases on MSDN for details about moving databases.
Note: You should have moved the artifacts created in step 1 to the new server. The web server should have IIS and ASP.NET installed. You also need SQL Server Management Studio to connect to the database server. To use Episerver Search, you also need the Windows feature HTTP Activation (Roles and Features > .NET Framework 4/4.5 Features > WCF Services) installed on the web servers.
To complete this step, move the database files from the App_Data folder to the designated data folder for Microsoft SQL Server.
You also can use backup/restore to attach a database. See Back up and restore of SQL server databases on MSDN.
Note: For production environments, you should move media BLOBs to a folder outside the application root (as described in the next section). The FileBlobProvider does not delete empty folders for deleted media if it detects BLOBs inside the site root (since CMS 7.6) because ASP.NET has a limitation where a deleted folder triggers an application restart, even though inside the designated App_Data folder.
To enable load-balancing, configure remote events and external storage of BLOBs (files on a file share). This example uses the default provider for events (WCF over UDP) and the default provider for storage of BLOBs.
Note: UDP broadcast is not supported by Azure virtual networks. Use the dedicated Azure Service Bus provider instead or WCF over TCP.
<blob defaultProvider="fileShare"> <providers> <add name="fileShare" path="\\dbserver\blobs" type="EPiServer.Framework.Blobs.FileBlobProvider, EPiServer.Framework" /> </providers> </blob>
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/> <extensions> <bindingElementExtensions> <add name="udpTransportCustom" type="Microsoft.ServiceModel.Samples.UdpTransportElement, EPiServer.Events"/> </bindingElementExtensions> </extensions> <services> <service name="EPiServer.Events.Remote.EventReplication"> <endpoint name="RemoteEventServiceEndPoint" contract="EPiServer.Events.ServiceModel.IEventReplication" binding="customBinding" bindingConfiguration="RemoteEventsBinding" address="soap.udp://239.255.255.19:5000/RemoteEventService" /> </service> </services> <client> <endpoint name="RemoteEventServiceClientEndPoint" address="soap.udp://239.255.255.19:5000/RemoteEventService" binding="customBinding" bindingConfiguration="RemoteEventsBinding" contract="EPiServer.Events.ServiceModel.IEventReplication" /> </client> <behaviors> <serviceBehaviors> <behavior name="DebugServiceBehaviour"> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <bindings> <customBinding> <binding name="RemoteEventsBinding"> <binaryMessageEncoding /> <udpTransportCustom multicast="True"/> </binding> </customBinding> </bindings> </system.serviceModel>
<add name="ACCESSKEY_HERE" description="local" allowLocal="false" ipAddress="0.0.0.0/0" ip6Address="::/0" readonly="false" />
<add name="serviceName" baseUri="http://SERVER1/IndexingService/IndexingService.svc" accessKey="ACCESSKEY_HERE" />
A hosting provider can help you load-balance incoming traffic between the servers. You also can use other software load-balancers such as HAProxy, Network Load Balancing (NLB) or Application Request Routing (ARR).
NOTE: The core parts of Episerver CMS do not use Session State but some functionality does, such as some of the Visitor Groups criteria. There are two approaches to enabling session state that depend on the sticky session feature (also known as session affinity) provided by a load-balancer that makes sure a user is reaching the same server combined with the default in-memory session state provider. You also can use an optimized provider for load-balancing, such as the built-in StateServer.
Last updated: Sep 21, 2015