Calling all developers! We invite you to provide your input on Feature Experimentation by completing this brief survey.
Calling all developers! We invite you to provide your input on Feature Experimentation by completing this brief survey.
Product version: |
EPiServer CMO 1.0 |
---|---|
Document version: |
1.0 |
Document last saved: |
Installation of EPiServer CMO 1.0 for EPiServer CMS 5 R1 SP3 and EPiServer CMS 5 R2 is done manually by following the instructions below. This document describes how to install, upgrade and delete EPiServer CMO 1.0 for EPiServer CMS 5.1.422.267 and 5.2.375.7.
Note - Installation of EPiServer CMO for 5.2 SP1 (5.2.375.133) and 5.2 SP2 (5.2.375.236) is not done according to these instructions. Read more about installing EPiServer CMO for EPiServer CMS 5.2 SP1/SP2. |
The following presquisites exist for EPiServer CMO:
The CMO.zip file contains the following:
<add name="CmoEntities" connectionString="provider connection string="Data Source=.\sqlexpress;Initial Catalog=Cmo;Integrated Security=False;User ID=dbUserCMO;Password= dbUserCMO;Connect Timeout=10";metadata=res://*/Entities.CmoModel.csdl|res://*/Entities.CmoModel.ssdl|res://*/Entities.CmoModel.msl;provider=System.Data.SqlClient" providerName="System.Data.EntityClient" />
<add assembly="System.Data.Entity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add tagPrefix="cmo" namespace="EPiServer.Cmo.UI.Units" assembly="EPiServer.Cmo.UI"/>
<add name="CMOModule" type="EPiServer.Cmo.Cms.HttpModule.Module, EPiServer.Cmo.Cms" />
<add name="CMOModule" type="EPiServer.Cmo.Cms.HttpModule.Module, EPiServer.Cmo.Cms" preCondition="managedHandler" />
<add verb="GET" path="GaugeHttpHandler.axd" type="ComponentArt.Web.Visualization.Gauges.GaugeHttpHandler, ComponentArt.Web.Visualization.Gauges" />
<add verb="GET" name="GaugeHttpHandler" path="GaugeHttpHandler.axd" type="ComponentArt.Web.Visualization.Gauges.GaugeHttpHandler, ComponentArt.Web.Visualization.Gauges" />
<add verb="GET,HEAD" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add verb="GET,HEAD" name="ChartImageHandler" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add path="thumbhandler.axd" verb="*" type="EPiServer.Cmo.Cms.ThumbnailHandler.CmoThumbnailHandler" />
<add name="ThumbnailHandler" path="thumbhandler.axd" verb="*" type="EPiServer.Cmo.Cms.ThumbnailHandler.CmoThumbnailHandler" resourceType="Unspecified" requireAccess="Script" />
<add verb="GET" path="cachedimageservice.axd" type="ComponentArt.Web.Visualization.Charting.CachedImageService,ComponentArt.Web.Visualization.Charting" />
<add verb="GET" name="cachedimageservice" path="cachedimageservice.axd" type="ComponentArt.Web.Visualization.Charting.CachedImageService,ComponentArt.Web.Visualization.Charting" />
<appSettings>
<add key="secretkey" value="1E73FFB0-0F78-4e8e-8D15-3F11B979B5A9"/>
</appSettings>
Does your site have multiple bindings? Read more about how to configure Live Monitor for websites with multiple bindings.
Live monitor utilizes its own statistic gathering handler which could store page-visitor statistics either in the CMO database or in a separate database. Live Monitor utilizes the Silverlight 3 application to display site visitor activity on the Live Monitor page. Configure Live Monitor by following the steps below:
<add name="CmoLiveMonitor" connectionString="Data Source=.\sqlexpress;Initial Catalog= Cmo;Integrated Security=False;User ID=dbUserCMO;Password= dbUserCMO;Connect Timeout=10" providerName="System.Data.SqlClient" />
<service behaviorConfiguration="EPiServer.Trace.Services.TraceServiceBehavior" name="EPiServer.Cmo.Cms.Trace.Services.CmoTraceService">
<endpoint address="" binding="basicHttpBinding" contract="EPiServer.Trace.Services.ITraceService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<behavior name="EPiServer.Trace.Services.TraceServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<location path="CMO/Trace">
<system.web>
<authorization>
<allow roles="WebEditors, WebAdmins, Administrators"/>
<deny users="*"/>
</authorization>
</system.web>
<system.webServer>
<handlers>
<remove name="svc-Integrated" />
<add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" resourceType="Unspecified" preCondition="integratedMode" />
</handlers>
</system.webServer>
</location>
<location path="CMO/Trace/Handlers">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Thumbnail service is a windows service application used for page thumbnail generation.
InstallUtil.exe [Path to your thumbnail service files]\IECaptSvc.exe
It is preferred to create a local user and run the service as that user.You can update “secretkey” parameter in appSettings section. This string is used to decrypt credential to login to CMS site.
CMS site must contain the same setting in web.config file:
<appSettings>
<add key="secretkey" value="1E73FFB0-0F78-4e8e-8D15-3F11B979B5A9"/>
</appSettings>
You can also change WCF settings for service, for example change service port. See WCF configuration reference for that.
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service
name="IECaptSvc.IECaptWCF">
<endpoint address="" binding="webHttpBinding" contract="IECaptSvc.IIECaptWCF" behaviorConfiguration="webHttp">
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://0.0.0.0:8731/IECaptWCF/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
Service has to be restarted after configuration changes.
Service configuration file contains default service configuration and is included to module package.
Run following command to remove Thumbnail service using standard framework utility:
InstallUtil.exe /u [Path to your thumbnail service files]\IECaptSvc.exe
Aggregation service is windows service application which aggregates CMO statistics data in defined time intervals for defined CMO instances .
Following files should be deployed:
The default installation folder is [Path to your EPiServer installation]\ Shared\ Services\ CMO Aggregation Service\. For example: C:\Program Files\ EPiServer\ Shared\ Services\ CMO Aggregation Service\.
Aggregation service can be installed and uninstalled using standard framework utility:
InstallUtil.exe EPiServer.Cmo.AggregationService.exe
By default Aggregation service is installed with Automatic startup type and logs on as Local service.
Service and aggregation settings should be defined on CMO Settings page in CMS Admin mode on Data Aggregation tab. Database connection parameters are defined in connection strings section using ADO.NET Entity Framework format.
User can define the number of connection strings to various CMO sites and aggregation service will process data for all available CMO instances. Each connection string must have unique name:<connectionStrings>
<add name="CmoSite1" connectionString="metadata=res://*/Entities.CmoModel.csdl|res://*/Entities.CmoModel.ssdl|res://*/Entities.CmoModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\EPISERVER;Initial Catalog=CmoSiteDB1;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
<add name="CmoSite2" connectionString="metadata=res://*/Entities.CmoModel.csdl|res://*/Entities.CmoModel.ssdl|res://*/Entities.CmoModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\EPISERVER;Initial Catalog=CmoSiteDB2;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
Application logging can be configured in application configuration file. See more details about log4net configuration here: http://logging.apache.org/log4net/. By default logging is configured to write logs to debug output:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
</configSections>
<log4net>
<appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="AggregationService.log.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd " />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="OutputDebugStringAppender" />
<!--<appender-ref ref="RollingLogFileAppender" />-->
</root>
</log4net>
</configuration>
Note: Service can output log data to files. To enable logging to file you need to uncomment RollingLogFileAppender option of <root> node in service configuration file, grant Modify permission on aggregation service folder (by default C:\Program Files\ EPiServer\ Shared\ Services\ CMO Aggregation Service\) to user used to run aggregation service (by default Local service).
Aggregation service can be installed and uninstalled using standard framework utility:
InstallUtil.exe /u EPiServer.Cmo.AggregationService.exe
CMS pages related to any active campaign contain injection which makes user browser to send reuqests to statistics handler. Statistics handler processes statictis data coming from users and save raw visits log to statistics storage.
Note: Statistics collecting requires the Friendly URL Rewriter module as the injection is done by the handler of this event.
Each request contains parameters that cannot be detected on server side. Statistics handler tries to find and parse following information in request query string:
<configuration>
<connectionStrings>
<add name="CmoEntities" connectionString="metadata=res://*/Entities.CmoModel.csdl|res://*/Entities.CmoModel.ssdl|res://*/Entities.CmoModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\sqlexpress;Initial Catalog=Cmo;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
<browsers>
<browser id="Safari3Plus" parentID="Safari1Plus" >
<identification>
<userAgent match="Version/(?'version'(?'major'\d+)\.(?'minor'\d+[\.\d+]*)\w*)\s+Safari" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="version" value="${version}" />
</capabilities>
</browser>
<browser refID="Safari1Plus" >
<capabilities>
<capability name="browser" value="Safari" />
</capabilities>
</browser>
</browsers>
<browsers>
<browser id="GoogleChrome" parentID="Safari1Plus">
<identification>
<userAgent match="Chrome/(?'version'(?'major'\d+)\.(?'minor'\d+\.\d+).\d+)" />
</identification>
<capture>
</capture>
<capabilities>
<capability name="browser" value="Chrome" />
<capability name="majorversion" value="${major}" />
<capability name="minorversion" value="${minor}" />
<capability name="version" value="${version}" />
</capabilities>
</browser>
</browsers>
<system.web>
<browserCaps userAgentCacheKeyLength="128" />
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
</configSections>
<log4net>
<appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Statistics.log.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd " />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="OutputDebugStringAppender" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>
See details about handlers registration here: http://msdn.microsoft.com/en-us/library/46c5ddfy.aspx
In the application's Web.config file, create an httpHandlers section.<configuration>
<system.web>
<httpHandlers>
<add verb="GET" path="{file_mask}" type="EPiServer.Cmo.Core.Statistics.StatisticsHandler, EPiServer.Cmo.Core"/>
</httpHandlers>
</system.web>
</configuration>
Make sure to change "{file_mask}" parameter to the correct mask of web service that you configured during installation of CMO module. For example, if your web service URL is “http://localhost/mywebservice.stat” you could specify “mywebservice.stat” or “*.stat” instead of this parameter.
Configure IIS to forward the request for ”*.stat” requests to ASP.NET.
In the application's Web.config file, create an httpHandlers section.
Create a handlers element in the system.webServer section.
Add the following elements to register the handler:<configuration>
<system.web>
<httpHandlers>
<add verb="GET" path="{file_mask}" type="EPiServer.Cmo.Core.Statistics.StatisticsHandler, EPiServer.Cmo.Core" />
</httpHandlers>
<system.web>
<system.webServer>
<handlers>
<add name="StatisticsHandler" verb="GET" path="{file_mask}" Modules="IsapiModule" scriptProcessor="FrameworkPath\aspnet_isapi.dll" resourceType="File" type="EPiServer.Cmo.Core.Statistics.StatisticsHandler, EPiServer.Cmo.Core" />
</handlers>
</system.webServer>
</configuration>
Replace FrameworkPath with the correct path to the Aspnet_isapi.dll file.
Make sure to change "{file_mask}" parameter to the correct mask of web service that you configured during installation of CMO module. For example, if your web service URL is “http://localhost/mywebservice.stat” you could specify “mywebservice.stat” or “*.stat” instead of this parameter.
In the application's Web.config file, create a handlers element in the system.webServer section.
Add the following elements to register the handler:<configuration>
Make sure to change "{file_mask}" parameter to the correct mask of web service that you configured during installation of CMO module. For example, if your web service URL is “http://localhost/mywebservice.stat” you could specify “mywebservice.stat” or “*.stat” instead of this parameter.
<system.webServer>
<handlers>
<add name="StatisticsHandler" verb="GET" path="{file_mask}" type="EPiServer.Cmo.Core.Statistics.StatisticsHandler, EPiServer.Cmo.Core" />
</handlers>
</system.webServer>
</configuration>