Here is a step by step guide of Sitecore 9 on-premise installation as a standalone instance. It is mostly for local workstation and integrated development environment.
Key points of this installation:
- Topology: XP0
- Solr is installed by default. It serves both content search and xConnect services. It requires secure access.
- Sitecore 9 is installed by SIF(Sitecore Installation Framework) PowerShell scripts.
Prerequisites:
- Windows 8.1, 10, Server 2012 R2
- Net Framework 4.6.2 or 4.7
- SQL Server 2016 or above
- IIS 8.5 or 10
- Java Runtime Environment 1.8+(JRE)
- PowerShell 5.1+
- Web Platform Installer 5.0
- Web Administration Module (IIS)
- Web Deploy 3.6 for Hosting Servers
- URL Rewrite 2+
- MS SQL Server Data-Tier Application Framework (17.1)
- MS SQL Server Transact-SQL ScriptDom
Download and Collect Installation Related Files:
- Sitecore License.xml
- Download Sitecore 9.0.2 rev. 180604 (WDP XP0 packages).zip from https://dev.sitecore.net/
- Extract Sitecore 9.0.2 rev. 180604 (WDP XP0 packages).zip to an install folder. For example, C:\Sitecore\sc902.
- Extract XP0 Configuration Files 9.0.2 rev. 180604.zip from previous step to C:\Sitecore\sc902.
- Download Solr 6.6.3 from http://archive.apache.org/dist/lucene/solr/6.6.3/ and extract to C:\Sitecore\solr-6.6.3
- Download NSSM from https://nssm.cc/download and extract to C:\Sitecore\nssm
- Here are the files collected.
Install Solr:
- Install JRE
- Download Java SE Runtime Environment 8+ from http://www.oracle.com/technetwork/es/java/javase/downloads/jre8-downloads-2133155.html
- Setup JAVA_HOME variables
- Start Solr – run following script in Windows PowerShell as Administrator, then check solr instance at http://localhost:8983/solr
cd C:\Sitecore\solr-6.6.3\bin .\solr start -p 8983
- Stop Solr – run following script in Windows PowerShell as Administrator
.\solr stop -p 8983
- Set up Solr as service – run below script in Command Prompt as Administrator, then fill the installer as the picture below. Once done, verify the service running from Service Manager.
cd C:\Sitecore\nssm\win64 nssm install solr6
- Add SSL to Solr instance (generate self-signed certificate and key)
- Save following script to file “solrssl.ps1” (from Kam Figy’s blog: https://kamsar.net/index.php/2017/10/Quickly-add-SSL-to-Solr/).
param( [string]$KeystoreFile = 'solr-ssl.keystore.jks', [string]$KeystorePassword = 'secret', [string]$SolrDomain = 'localhost', [switch]$Clobber ) $ErrorActionPreference = 'Stop' ### PARAM VALIDATION 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_172\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." } } ### DOING STUFF 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:127.0.0.1 -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 solr.in.cmd:' -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!'
- Get it to your local and modify the “keytool.exe” path inside if need(line 37), see below.
-
- Run follwing command in Windows PowerShell as Administrator.
cd C:\Sitecore\sc902 .\solrssl.ps1 -KeystoreFile C:\Sitecore\solr-6.6.3\server\etc\solr-ssl.keystore.jks
-
- Enable a section in file “C:\Sitecore\solr-6.6.3\bin\solr.in.cmd” (line 94-97), see below.
- Re-start the Solr service and check instance at https://localhost:8983/solr.
- Enable a section in file “C:\Sitecore\solr-6.6.3\bin\solr.in.cmd” (line 94-97), see below.
Install and Configure SQL Server:
- The SQL Server installtion is pretty much same as Sitecore previous version installation.
- When creating a SQL Server DB user, make sure it has “sysadmin” role. The login Id and password will be used in Sitecore installation script next.
- Enable Contained Database Authentication – run following sql script in SQL Management Studio
sp_configure 'contained database authentication', 1; GO RECONFIGURE; GO
Install Sitecore with SIF:
Sitecore Installation Framework(SIF) is a PowerShell module for handling the installation and configuration of Sitecore instances. It will install and configure Sitecore eco-system.
Run following script in Windows PowerShell as Administrator and type “Y” to continue if need.
- Register Sitecore Repository
Register-PSRepository -Name SitecoreRepo -SourceLocation https://sitecore.myget.org/F/sc-powershell/api/v2
- Install Framework module
Install-Module SitecoreInstallFramework
- Install Fundamentals module
Install-Module SitecoreFundamentals
- Import above modules
Import-Module SitecoreFundamentals Import-Module SitecoreInstallFramework
- Configure the PowerShell script below and save as “InstallSitecore9.ps1”. Before running, check and update parameters values to you environment.
#define parameters $prefix = "sc90" $PSScriptRoot = "C:\sitecore\sc902" $XConnectCollectionService = "$prefix.xconnect" $sitecoreSiteName = "$prefix.local" $SolrUrl = "https://localhost:8983/solr" $SolrRoot = "C:\sitecore\solr-6.6.3" $SolrService = "solr6" $SqlServer = ".\SQLEXPRESS" $SqlAdminUser = "sc9user" # replace it with your local SQL Server installation $SqlAdminPassword = "Test12345" # replace it with your local SQL Server installation #install client certificate for xconnect $certParams = @{ Path = "$PSScriptRoot\xconnect-createcert.json" CertificateName = "$prefix.xconnect_client" } Install-SitecoreConfiguration @certParams -Verbose #install solr cores for xdb $solrParams = @{ Path = "$PSScriptRoot\xconnect-solr.json" SolrUrl = $SolrUrl SolrRoot = $SolrRoot SolrService = $SolrService CorePrefix = $prefix } Install-SitecoreConfiguration @solrParams -Verbose #deploy xconnect instance $xconnectParams = @{ Path = "$PSScriptRoot\xconnect-xp0.json" Package = "$PSScriptRoot\Sitecore 9.0.2 rev. 180604 (OnPrem)_xp0xconnect.scwdp.zip" LicenseFile = "$PSScriptRoot\license.xml" Sitename = $XConnectCollectionService XConnectCert = $certParams.CertificateName SqlDbPrefix = $prefix SqlServer = $SqlServer SqlAdminUser = $SqlAdminUser SqlAdminPassword = $SqlAdminPassword SolrCorePrefix = $prefix SolrURL = $SolrUrl } Install-SitecoreConfiguration @xconnectParams -Verbose #install solr cores for sitecore $solrParams = @{ Path = "$PSScriptRoot\sitecore-solr.json" SolrUrl = $SolrUrl SolrRoot = $SolrRoot SolrService = $SolrService CorePrefix = $prefix } Install-SitecoreConfiguration @solrParams -Verbose #install sitecore instance $sitecoreParams = @{ Path = "$PSScriptRoot\sitecore-XP0.json" Package = "$PSScriptRoot\Sitecore 9.0.2 rev. 180604 (OnPrem)_single.scwdp.zip" 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 -Verbose
- Open the script file “InstallSitecore9.ps1” in Windows PowerShell ISE to execute or copy the scripts to run in Windows PowerShell as Administrator.
- Confirm Sitecore 9 installed successfully.
Pingback: Sitecore 9 Installation – Distributed | A Coffee in Sunny Winter Afternoon