I was recently tasked with installing Sitecore Commerce 8.2.1 for a client. It was one of the more frustrating experiences I can remember. The instructions provided in the Deployment Guide are written for a local development environment with a local database server. The DevOps Guide has more detailed listings of accounts and permissions, but it provides very little instruction on how to use that information in the context of an installation. Some parts of the DevOps Guide also seemed to be out of date when I initially went through this. Fortunately, the instructions have been getting regular updates. This series attempts to provide better instructions for installing Sitecore Commerce in an existing development or test environment where the database is on a separate server.
Preparation
- Confirm the minimum requirements
- Install the prerequisite software. Note that the .NET Core SDK is not necessarily needed on the web server. The runtime should be enough. The SDK is really only needed for publishing the Commerce Engine (see part 3)
- Create a domain account for the “runtime user”
- Ensure the runtime user has file system and registry permissions on the web server as listed in section 4.2 of the Sitecore installation guide
- Create a domain account to run the staging service. Alternatively, you can use the runtime user for the staging service. Either way, ensure that the user has the ability to log on as a service.
- Set the Sitecore app pool to run under the runtime user account
- Ensure that the Sitecore website is accessible via HTTPS
- Ensure that the Sitecore Item Web API is accessible when logged into Sitecore. If you get a 403 Forbidden error when hitting http://yourdomain/sitecore/api/ssc/item/110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9, then you may either need to change the security policy for the Item Web API or add a hosts file entry to the server so it recognizes ‘yourdomain’ as a local request.
- Ensure that the user that will run the Sitecore Commerce installer has local administrator rights on the web server and is assigned to the sysadmin role on the database server.
Installation of Core Components
- Run the Sitecore Commerce installer on the web server. After the installation is complete, the configuration wizard will open.
- On the database connection page, enter the server name, optionally change the name of the admin database and select Windows authentication
- On the Staging Service step, check the box to create an IIS virtual root for the staging service and enter the credentials of the user from step 5 above
- The configuration wizard creates a database named MSCS_Admin by default. It does not let you select where the database is stored. If you want the database to be stored in a specific location, you can detach it, move it and reattach it now.
- Create a new website in IIS named CSServices (you can name it differently if you really want)
- Point at a folder named CSServices in the Sitecore install root (next to the Data and Website folders). You can put it elsewhere if you want, but I like keeping things together.
- Set the port to 1004
- IIS should automatically create an app pool with the same name as the site. Set it to run as the runtime user. You can create a separate domain account if you want.
- Ensure the app pool user has modify permissions on the folder.
- Install the core module and update packages. Choose overwrite when prompted. The zip package is installed with the Installation Wizard. The update packages are installed with the Update Installation Wizard.
- Sitecore Commerce Connect 10.x.xxx.zip
- Sitecore Commerce Server Connect.10.x.xx.update
- Sitecore.Commerce.Engine.Connect.1.x.xxxx.update
- Sitecore Commerce Business Tools Shared.1.x.xx.update
- Sitecore Commerce Merchandising Manager.10.x.xxx.update
- Sitecore Commerce Customer and Order Manager.1.x.xx.update
- Sitecore Commerce Pricing and Promotions Manager.1.x.xx.update
This is it for the installation of the core commerce server components. Unfortunately, most of the work still lies ahead. In the next post I will cover installing and initializing a site.