Loading...
Area: Episerver DXC Service
Applies to versions: Not applicable

Creating a new CMS site and deploying

This topic describes a deployment onboarding scenario where you create a new website based on the Episerver Alloy sample site, and deploy the application, database and content to the Integration environment in Episerver Digital Experience Cloud Service.

When is this applicable?
This is an onboarding scenario for a first-time/onboarding deployment of a new site based on the Episerver sample templates, to use from start for development in a cloud environment. Through Visual Studio, you can deploy an empty database. A new site like this does not require database restore, and the database schema is created during initial deployment.

Before you start

This example uses Visual Studio (2017) with the Episerver extensions and publish profiles, but you can also use other deployment methods.

  • See Requirements for recommended versions of software, tools and services to use when deploying.
  • See Getting started with DXC Service for information needed to deploy.
  • See Installing Episerver how to add the Episerver NuGet feed to Visual Studio.
  • Update the Azure SDK to the latest version for your Visual Studio installation.
  • Before deploying, add a wildcard binding to the site in the Manage Websites screen. This will help prevent failures due to URL dependent code when migrating the database between environments. See the following image, which shows an example of this binding.
    1. Select Admin > Config > Manage Websites.
    2. Click Add and add a wildcard (*) Host Name.

      wildcard binding.png

Deployment steps

The following steps create a new website, add Azure and Find, and deploy the code and database with content to the Integration environment in DXC Service. The deployment is done from Visual Studio, using the publishing profiles provided by Episerver with your DXC Service setup.

Note: Episerver has a bootstrap feature for deploying content. If there is an export package located in [SolutionDir]\App_Data\DefaultSiteContent.episerverdata, that package is imported during initialization and a site with content is created. The bootstrap is applied only if the site in the web app does not have any existing content.

STEP 1. Create a website with Azure

  1. In Visual Studio, create a new project by selecting New...Project, and then EPiServer Web site. In the dialog box, select Alloy templates (MVC or Web Forms), and clear the Configure Search option. Episerver Find is added in a later step.
        

      
  2. Update the website to the latest Episerver NuGet packages. Right-click References for the project and select Manage NuGet packages. Select Updates and Episerver to locate the latest updates, select all packages, and click Update.
       

       
  3. Add Azure to the website: in the NuGet package manager for your project, locate the EPiServer.Azure package and click Install.
       

        
  4. Compile the solution, follow the instructions to update the database and add admin account (if needed). Reload and verify that the website is working.

STEP 2. Update the configuration

You need to change some configurations for the website to work with Azure. The container attribute for the BLOB provider and topic for the event provider should be unique per site, within the same storage or service bus account. Therefore you need to update the mapping for BLOBs and event providers.

Important! Do not skip this step! If you do, assets are stored locally, and will not deploy properly to the Azure BLOB storage.

  1. In Visual Studio, open web.config and add the following configuration under the episerver.framework section.
    Do not change the values for connectionStringName, because these are overwritten with the correct environment-specific values during deployment. Optionally, you can change the container and topic names mysitemedia and MySiteEvents to names of your choice. The storage container name must be in lowercase, for example mysitemedia, for DNS compatibility.
    <blob defaultProvider="azureblobs">
      <providers>
        <add name="azureblobs" type="EPiServer.Azure.Blobs.AzureBlobProvider,EPiServer.Azure"
          connectionStringName="EPiServerAzureBlobs" container="mysitemedia"/>
      </providers>
    </blob>
    <event defaultProvider="azureevents">
      <providers>
        <add name="azureevents" type="EPiServer.Azure.Events.AzureEventProvider,EPiServer.Azure"
          connectionStringName="EPiServerAzureEvents" topic="MySiteEvents"/>
      </providers>
    </event>
  2. Compile the solution. Your local site displays an error message because the site is pointing to Azure after the configuration changes. This is corrected when you publish the project to Azure.

Note: When you deploy a website, you may want settings in the deployed application's web.config to be different from your local development web.config. Instead of changing these settings for your local installation (as done here), you can apply a transformation of the web.config file when you deploy to Azure to avoid breaking your local site.

STEP 3. Publish website with content

  1. Right-click the project in Visual Studio. Select Publish, then select Import profile and click Create Profile. Browse to select the file with the publish profile for the Integration environment, to import the settings.
      

       
  2. Under Summary, click Settings to update the publish profile settings.
       

         
  3. Connection should display the imported publish profile settings, no changes are required here. Click Next.
       

       
  4. In the Settings section, enter the remote connection string to SQL Database by selecting it under EPiServerDB (copy/paste it from the publish profile if it does not appear in the list).
  5. Enable Update database, and click Configure database updates.
        

      
  6. Clear the [Auto schema update] option, click Add SQL Script, and browse to the EPiServer.CMS.Core NuGet packages (located in [SolutionDir]\packages\EPServer.CMS.Core.N.N.N\tools\), and select EPiServer.Cms.Core.sql.
         

        

         
  7.  Click Save in the Settings section.
       

       
  8. Click Publish to publish the website with content. 
       

       
    The website opens in a browser when finalized. If not, you can access it with the default URL for the environment, publishing profiles provided by Episerver with your DXC Service setup.

STEP 4. Verify the website

  1. Go to the default access URLs for the environment, for example http://[projectNNNNinte].dxcloud.episerver.net
  2. Log in to the website with the administrator user (see below).
  3. Verify that the website is working.

Add an administrator account

During creation of an Alloy sample site, you are prompted to add an admin account. However, these credentials are stored in your local database, and are not deployed to the web app. Therefore, you may need to create a new admin user, to log in after deployment.

If you do not have an admin account, you can create and upload an .aspx file to your web app, and let it create an account. See these example files for ASP.NET Membership and ASP.NET Identity. Select the appropriate one depending on your provider (ASP.NET Identity for an Alloy sample site). Follow the instructions in the file. Use Kudu to upload the file to the website root folder, and open the file once in a browser. Log in by adding /episerver to the site URL, using the credentials in the uploaded file.

Note: When you have succesfully logged in, remove the .aspx file from the site in the web app.

STEP 5. Add Find

A Find index is automatically set up and configured as part of DXC Service. In this step, you add Episerver Find as default search for your solution, and publish the changes to Integration.

  1. In the NuGet package manager for your project, locate the EPiServer.Find.Cms package and click Install
      

        
  2. Compile the solution, follow the instructions to update the database (if needed), and reload the website.
  3. Publish the solution again as in STEP 3 above, but skip sub-step 5 and 6 and ensure that "Update database" is not selected (deselect if needed)
  4. Verify that the website is working.

Related topics

Last updated: Mar 02, 2018