Installing Local Development of SiteCore 9 - step by step.

Pre-requisite (version must match otherwise good luck :) 

Powershell 5.0

Webdeploy 5.0

Site core main files

Download and extract sitecore 9.0 files from here.)

Extract this file and then (XP0 Configuration files -this will get some json files extracted.

Using powershell prompt running in Administrator mode, execute the following command :-

Install-Module SitecoreInstallFramework

Import-Module SitecoreInstallFramework 

solr solr_6.6.2 (must match)

nssm - to install solr as windows service (must) - install using chocolatey

Please ensure you setup your JAVA_HOME otherwise, running it as a Window Service, otherwise you will get error.

Sql server 2016 - you must have this version installed. Sitecore will not install successfully if you don't

In case your script fails half way

1. Restart your solr window service

2. Delete databases the script created example xp0_Processing.Pools, xp0.ReferenceData

Then re-run the script.

Modify your file to remove REM comments to what is shown below -

REM Uncomment to set SSL-related system properties
REM Be sure to update the paths to the correct keystore for your environment
set SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks
set SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks

Once you have it installed, please browse and default username is "admin" and password is "b".

Mother of all scripts

Please note that you need to change path to your SiteCore installation path.

Setup Solr keystore script 

[string]$KeystoreFile = 'solr-ssl.keystore.jks',
[string]$KeystorePassword = 'secret',
[string]$SolrDomain = 'localhost',

$ErrorActionPreference = 'Stop'

if($KeystorePassword -ne 'secret') {
Write-Error 'The keystore password must be "secret", because Solr apparently ignores the parameter'

if((Test-Path $KeystoreFile)) {
if($Clobber) {
Write-Host "Removing $KeystoreFile..."
Remove-Item $KeystoreFile
} else {
$KeystorePath = Resolve-Path $KeystoreFile
Write-Error "Keystore file $KeystorePath already existed. To regenerate it, pass -Clobber."

$P12Path = [IO.Path]::ChangeExtension($KeystoreFile, 'p12')
if((Test-Path $P12Path)) {
if($Clobber) {
Write-Host "Removing $P12Path..."
Remove-Item $P12Path
} else {
$P12Path = Resolve-Path $P12Path
Write-Error "Keystore file $P12Path already existed. To regenerate it, pass -Clobber."

try {
$keytool = (Get-Command 'C:\Program Files\Java\jre1.8.0_171\bin\keytool.exe').Source
} catch {
$keytool = Read-Host "keytool.exe not on path. Enter path to keytool (found in JRE bin folder)"

if([string]::IsNullOrEmpty($keytool) -or -not (Test-Path $keytool)) {
Write-Error "Keytool path was invalid."


Write-Host ''
Write-Host 'Generating JKS keystore...'
& $keytool -genkeypair -alias solr-ssl -keyalg RSA -keysize 2048 -keypass $KeystorePassword -storepass $KeystorePassword -validity 9999 -keystore $KeystoreFile -ext SAN=DNS:$SolrDomain,IP: -dname "CN=$SolrDomain, OU=Organizational Unit, O=Organization, L=Location, ST=State, C=Country"

Write-Host ''
Write-Host 'Generating .p12 to import to Windows...'
& $keytool -importkeystore -srckeystore $KeystoreFile -destkeystore $P12Path -srcstoretype jks -deststoretype pkcs12 -srcstorepass $KeystorePassword -deststorepass $KeystorePassword

Write-Host ''
Write-Host 'Trusting generated SSL certificate...'
$secureStringKeystorePassword = ConvertTo-SecureString -String $KeystorePassword -Force -AsPlainText
$root = Import-PfxCertificate -FilePath $P12Path -Password $secureStringKeystorePassword -CertStoreLocation Cert:\LocalMachine\Root
Write-Host 'SSL certificate is now locally trusted. (added as root CA)'

Write-Host ''
Write-Host '########## NEXT STEPS ##########' -ForegroundColor Green
Write-Host ''
Write-Host '1. Copy your keystore to $SOLR_HOME\server\etc (MUST be here)' -ForegroundColor Green

if(-not $KeystoreFile.EndsWith('solr-ssl.keystore.jks')) {
Write-Warning 'Your keystore file is not named "solr-ssl.keystore.jks"'
Write-Warning 'Solr requires this exact name, so make sure to rename it before use.'

$KeystorePath = Resolve-Path $KeystoreFile
Write-Host ''
Write-Host '2. Add the following lines to your' -ForegroundColor Green
Write-Host ''
Write-Host "set SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks" -ForegroundColor Yellow
Write-Host "set SOLR_SSL_KEY_STORE_PASSWORD=$KeystorePassword" -ForegroundColor Yellow
Write-Host "set SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks" -ForegroundColor Yellow
Write-Host "set SOLR_SSL_TRUST_STORE_PASSWORD=$KeystorePassword" -ForegroundColor Yellow
Write-Host ''
Write-Host 'Done!'

You need to place generated jks file into solr\server\etc folder.

Restart your solr windows service

Solr keystore Install script. Please ensure you have your path right

#define parameters
$prefix = "xp0"
$PSScriptRoot = "C:\tmp\sitecore_install\Sitecore XP0"
$XConnectCollectionService = "$prefix.xconnect"
$sitecoreSiteName = "$"
$SolrUrl = "https://localhost:8989/solr"
$SolrRoot = "C:\solr6.6.1\solr-6.6.1"
$SolrService = "solr"
$SqlServer = "(local)"
$SqlAdminUser = "sa"

$certParams = @{
Path = "$PSScriptRoot\xconnect-createcert.json"
CertificateName = "$prefix.xconnect_client" }
Install-SitecoreConfiguration @certParams -Verbose

$solrParams = @{ Path = "$PSScriptRoot\xconnect-solr.json"
SolrUrl = $SolrUrl
SolrRoot = $SolrRoot
#SolrService = $SolrService
CorePrefix = $prefix }

Install-SitecoreConfiguration @solrParams

$xconnectParams = @{ Path = "$PSScriptRoot\xconnect-xp0.json"
Package = "$PSScriptRoot\Sitecore 9.0.0 rev. 171002 (OnPrem)"
LicenseFile = "$PSScriptRoot\license.xml"
Sitename = $XConnectCollectionService
XConnectCert = $certParams.CertificateName
SqlDbPrefix = $prefix
SqlServer = $SqlServer
SqlAdminUser = $SqlAdminUser
SqlAdminPassword = $SqlAdminPassword
SolrCorePrefix = $prefix
SolrURL = $SolrUrl

Install-SitecoreConfiguration @xconnectParams

$solrParams = @{ Path = "$PSScriptRoot\sitecore-solr.json"
SolrUrl = $SolrUrl
SolrRoot = $SolrRoot
#SolrService = $SolrService
CorePrefix = $prefix }

Install-SitecoreConfiguration @solrParams

#install sitecore instance
$xconnectHostName = "$prefix.xconnect"
$sitecoreParams = @{ Path = "$PSScriptRoot\sitecore-XP0.json"
Package = "$PSScriptRoot\Sitecore 9.0.0 rev. 171002 (OnPrem)"
LicenseFile = "$PSScriptRoot\license.xml"
SqlDbPrefix = $prefix
SqlServer = $SqlServer
SqlAdminUser = $SqlAdminUser
SqlAdminPassword = $SqlAdminPassword
SolrCorePrefix = $prefix
SolrUrl = $SolrUrl
XConnectCert = $certParams.CertificateName
Sitename = $sitecoreSiteName
XConnectCollectionService = "https://$XConnectCollectionService" }

Install-SitecoreConfiguration @sitecoreParams

Troubleshooting tips

You will definitely get errors, unfortunately and here are some of the common errors :-

Unable to start solr service 

- You might get some deployment error, but there is no much error message that helps. Please ensure you start your solr as a window service using nssm.

Failed to start service 'Sitecore XConnect Search Indexer - xp0.xconnect-IndexWorker -
Run this from the command line in C:\inetpub\wwwroot and see what error message you get.

It might be a license issue or it can also be solr NOT running on https mode.

Cannot retrieve the dynamic parameters for the cmdlet. Retrieving the COM class factory for component with CLSID

Please start your 64 bit powershell to run install.ps1 command script.

Unable to connect to server - https://localhost:8989/solr

Please change to use the following url configuration

$SolrUrl = "https://localhost:8989/solr/#/" 


Popular posts from this blog

Solving Sonarqube :- Project was never analyzed. A regular analysis is required before a branch analysis

spark - pyspark reading from excel files