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 document describes how to deploy EPiServer sites through Visual Studio. Installation of EPiServer can be done through XCOPY deployment simply by copying application files. An XCOPY-style file transfer simplifies deployment and maintenance of EPiServer sites since no registry entries are created, and no shared components are registered.
Another benefit of the XCOPY architecture in EPiServer CMS is that there is no machine- or site-specific information stored in configuration files, making it possible to use a shared folder for multiple servers. During development in a shared environment with source control, developers can keep configuration files checked in and still be able to create a site which can be duplicated 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.
This is a walkthrough of deploying an EPiServer site from development to production, you can automate this using for example msdeploy or other tools but in this example we are doing the deployment manually to shed light on what steps is required when doing a deployment. There are 3 artifacts we have to bring over to the production server:
The following steps assumes you have an existing site and have good knowledge of using Visual Studio, Internet Information Services Manager and SQL Server Management Studio.
The following steps are performed on the development machine to publish a package that can be installed on the target server.
Note If the database files are not stored in App_Data see Back Up and Restore of SQL Server Databases on MSDN for more details on moving databases.
The following steps are performed on the target server and assumes you have moved the artifacts created in the previous section 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 have Windows feature HTTP Activation (Roles and Features->.NET Framework 4/4.5 Features->WCF Services) installed on the web servers.
To enable load balancing remote events and external storage of blobs should be configured, this example uses the default provider for events (WCF over UDP) and the default provider for storage of blobs (files on a file share). Note that 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>
To load balance incoming traffic between the servers is something the hosting provider can help you with. There are also other software such as HAProxy, Network Load Balancing (NLB) or Application Request Routing (ARR) that can be used as load balancers.
The core parts of EPiServer CMS does not use Session State but some functionality does, such as some of the Visitor Grous criteria. There are two approaces to enabling session state, either depend on the sticky session feature (also known as session affinity) provided by a load balancer that makes sure user is reaching the same server combined with the default in-memory session state provider. Another approach to is using an optimized provider for load balancing, for example the built-in StateServer.
Last updated: Feb 23, 2015