This is a blog post I’ve been meaning to write for a long time and have been slowly revising the content and steps.  I also can’t take credit for all the steps below, I gathered them from various resources, blogs, etc.  At the end of the post I will list all of the places I gathered these steps from.  This is also not the only way to do this, it’s just the way I have documented and how I go about configuring a SharePoint farm.

Server Installation and Prep Work

1. Decide on your SQL Server you will use

2. Configure SharePoint Accounts in AD.  The minimum you will need is 6:

  • SPAdmin (admin)
  • SPService (services)
  • SPApp (Web Application App Pools)
  • SPSearch (search service)
  • SPCrawl (crawl service)
  • SP_UPS (user profile synchronization service)

3. Make sure the SPAdmin has the following rights:

  • Local Admin on the SharePoint Servers (just for the Installation)
  • SQL Rights: dbcreator, public, securityadmin

4. Log into your SharePoint Servers and Install the SharePoint 2010 Bits

5. If the latest Cumulative Updates haven’t been install, download those and install those right after installing the bits.

6. Disable the Loopback Check (http://support.microsoft.com/kb/896861)

7. Restart the server

Configure Central Administration

0. [Update]: If you’ve installed Office Web Apps with your SharePoint 2010 bits, run psconfig -cmd upgrade -inplace b2b -wait -force in powershell first.  You’ll encounter an error, but then everything else will continue as normal.

1. Right-click on SharePoint 2010 Management Shell and Run As Administrator – I just created a shortcut on my desktop

2. In Powershell Run:

New-SPConfigurationDatabase –DatabaseName SP2010_Config –DatabaseServer [ServerName] –AdministrationContentDatabaseName SP2010_Admin_Content –Passphrase (ConvertTo-SecureString [YourPassPhrase] –AsPlaintext –Force) –FarmCredentials (Get-Credential)

**Notes**

  • For [ServerName] localhost will NOT work if you are running SQL on your SharePoint box (usually only likely in a dev environment)
  • Since not everyone that install/configures SharePoint is always a DB Expert, when using a SQL Named Instance:
    • A common error you may get if using a named instance will be something like: Connot connect to database master at SQL server at [SQLServerInstance].  The database might not exist, or the current user does not have permission to connect to it.
    • SQL Name Instances use Dynamic Ports, before running the command above, open up SQL Configuration Managers and assign a static port to your Named Instance – http://msdn.microsoft.com/en-us/library/ms177440.aspx
    • Modify the command above slightly…for the [ServerName] use: [ServerName][InstanceName],[PortNumber] as an example: SQLServer2008SP2010,1433
    • Create an Incoming Rule on your SQL Server to allow connections through the port you specify for your instance.Install-SP

3. Enter domainSPAdmin and the associated password in the resulting Credential Request box.

4. Close the PowerShell Window

5. Re-Open PowerShell again as administrator

6. Run the following PowerShell Commands

  • Install-SPHelpCollection –All
  • Initialize-SPResourceSecurity
  • Install-SPService (If you install a standalone server, something I never recommend, run ‘Install-SPService –Provision’ instead.
  • Install-SPFeature –AllExistingFeatures
  • New-SPCentralAdministration –Port 9999 –WindowsAuthProvider NTLM (you can pick any port here you want to)
  • Install-SPApplicationContent

7. Central Administration is now configured.  You can got to the shortcut in your start menu or run start iexplore http://[servername]:9999 from PowerShell.

Configure the User Profile Service

I’m not even going to try to type out the steps or guide you in the right direction here.  Just follow Spence Harbar’s steps EXACTLY that he posted here – http://www.harbar.net/articles/sp2010ups.aspx

You may have a few minor tweaks to the steps based on user accounts, but the process for getting the profile synchronization service is solid!!

Once your done with this, you may have an error that starts showing up in your event log about the Taxonomy Picker, to eliminate this error do the following:

  1. Navigate to 14TemplateControlTemplates
  2. Rename TaxonomyPicker.ascx to TaxonomyPicker.ascx.broken
  3. Remember you did this incase it is actually used in an update to SharePoint 2010 in the future.

***I used the same Application Pool for all my services (the same Application Pool Account I set up when configuring the User Profile Synchronization Service).  In my case it is SharePoint Web Services Default.  So I will use this Application Pool for all Service Applications going forward.  Wherever you see this application pool name used in the future, you can replace it with your own application pool name or a new one if you want separate application pools for every service.  Also, wherever you see –Name [somename] or –DatabaseName –[somename] going forward you can replace [somename] using your own naming conventions. ***

Configure Search Services

  1. Open up SharePoint 2010 Management Shell as an Administrator again.
  2. Enter the following commands in PowerShell:
  3. $searchapp = New-SPEnterpriseSearchServiceApplication –Name Search Service Application –ApplicationPool SharePoint Web Services Default –DatabaseName SP2010_Search_Service
  4. $proxy = New-SPEnterpriseSearchServiceApplicationProxy –name Search Service Application Proxy –Uri $searchapp.uri.absoluteURI
  5. $proxy.status *It should return Online, if not enter $proxy.status = online*
  6. $changestatus.update
  7. $si = Get-SPEnterpriseSearchServiceInstance –local
  8. $si.status *If it’s disabled run Start-SPEnterpriseSearchServiceInstance –identity $si*
  9. Set-SPEnterpriseSearchAdministrationComponent –SearchApplication $searchapp –SearchServiceInstance $si
  10. $ct = $searchapp | New-SPEnterpriseSearchCrawlTopology
  11. $csid = $searchapp.CrawlStores | select id
  12. $CrawlStore = $searchapp.CrawlStores.item($csid.id)
  13. $hname = hostname **hostname is for a single server, this is the servername were you want the crawl component to reside**
  14. New-SPEnterpriseSearchCrawlComponent –CrawlTopology $ct –CrawlDatabase $CrawlStore –SearchServiceInstance $hname
  15. $ct | Set-SPEnterpriseSearchCrawlTopology –active
  16. $qt = $searchapp | New-SPEnterpriseSearchQueryTopology –partitions 1
  17. $p1 = ($qt | Get-SPEnterpriseSearchIndexPartition)
  18. New-SPEnterpriseSearchQueryComponent –IndexPartition $p1 –QueryTopology $qt –SearchServiceInstance $si
  19. $PropDB = $searchapp | Get-SPEnterpriseSearchPropertyDatabase
  20. $p1 | Set-SPEnterpriseSearchIndexPartition –PropertyDatabase $PropDB
  21. $qt | Set-SPEnterpriseSearchQueryTopology –Active

Usage Application and Usage Analysis Service

  1. Your Usage Application may have already been provisioned in one of the previous steps, if it was, go into Manage Service Applications and delete it.  Check the box to delete associated data as well.
  2. Once again in your SharePoint 2010 Management Shell enter the following:
  3. New-SPUsageApplication –Name SharePoint Usage Application Service –DatabaseName SP2010_Usage
  4. $App = New-SPSubscriptionSettingsServiceApplication –ApplicationPool SharePoint Web Services Default –Name Subscription Service Application –DatabaseName SP2010_Subscription
  5. $proxy = New-SPSubscriptionSettingsServiceApplicationProxy –ServiceApplication $App
  6. Get-SPServiceInstance | where {$_.TypeName –eq Windows SharePoint Services Subscription Settings Service} | Start-SPServiceInstance
  7. $StagingDB =
  8. $ReportingDB =
  9. $webanalytics = New-SPWebAnalyticsServiceApplication –ApplicationPool SharePoint Web Services Default –ListOfReportingDatabases $ReportingDB –ListOfStagingDatabases $StagingDB –Name Web Analytics Service Application
  10.   New-SPWebAnalyticsServiceApplicationProxy –Name Web Analytics Service Application Proxy –ServiceApplication $webanalytics
  11. . $Usage = Get-SPServiceApplicationProxy | where {$_.TypeName -eq “Usage and Health Data Collection Proxy”}
  12.   $Usage.Provision()

 

At this point in time, navigate to Services on Server and start all the service you want running on their respective servers.

State Service Application

  1. While still in the SharePoint Management Console enter the following PowerShell Commands:
  • $serviceapp = New-SPStateServiceApplication –Name State Service Application
  • New-SPStateServiceDatabase –Name SP2010_State_Service –ServiceApplication $serviceapp
  • New-SPStateServiceApplicationProxy –Name State Service Application Proxy –ServiceApplication $serviceapp –DefaultProxyGroup

Secure Store Service

At this point in time, navigate to Services on Server and make sure the Secure Store Service on the Server you wish it to run on.

The secure store service is implemented in SharePoint 2010 to replace SSO.  Rather than get into all the details of it here, there are several good resources on TechNet explain the Secure Store and how to configure it.  The Secure Store Service Application can be initially configured through Central Administration allowing you to create the custom named database (without any GUIDs).  However, once this has been created, there are some additional management/configuration tasks that have to take place within the Service Application.  I use these three TechNet articles as reference when performing the rest of the configuration tasks.

 

PerformancePoint Service Application

Again, make sure you the the PerformancePoint Service has been started before creating the PerformancPoint Service Application.

From everything I can find, right now this can either be done via PowerShell or Central Administration, but unfortunately, no matter which way you provision PerformancePoint, there is no way to set a custom name for that database.  If I discover a way I’ll update this post with the steps.

[Update]: One of the recent updates allows you to no specify the database name when creating the PerformancePoint Service Application.  I’m running the August 2011 CU on SharePoint 2010 and when configuring the install could now specify the database name.

The Rest of It

That should take care of everything that needs to be done in your SharePoint 2010 Management Shell.  The rest of the services can be configured through Central Administration.  Once you’ve reached this point, open up Central Administration.  Go to “Services on Server and start the rest of the services you need.  This includes the Foundation Search Service that can be set up through the GUI.Next go to Manage Service Applications and add the rest of the Service Applications here that you need.

**As you go through setting everything up the GUI make sure to pay attention to where you can name your databases so you can continue keeping your consistent naming without the GUIDs**

Now you should have something that looks a lot like these screen shots below:

imageimage

image

Once I got to this point, I ran the PowerShell script found here – http://www.sharepointconfig.com/2011/01/instant-sharepoint-health-analysis/ in order to instantly see any issues I still had with my farm configuration.  From this report I went in and took care of a few remaining issues.  Some of the issues I encountered were things that should have been done initially and thus resulted in some updates to this blog post.

If you get an error similar to: WebPart class [8d6034c4-a416-e535-281a-6b714894e1aa] is referenced [6] times in the database after running the SharePoint Health Analyzer, there is a simple fix to get rid of this error here – http://sharepointben/s.architectingconnectedsystems.com/sharepointben/s/cjg/archive/2009/12/09/Missing-Server-Side-Dependencies-_2D00_-8d6034c4_2D00_a416_2D00_e535_2D00_281a_2D00_6b714894e1aa.aspx.

If you want to skip the link, it is a simple process of:

  1. Go to Manage Service Applications
  2. Select Search Service Application and click Manage in the Ribbon
  3. Click on Farm Search Administration in the Quick Launch
  4. Rerun the SharePoint Health Analyzer and this error should be gone

If anyone runs across any typos or problems with the steps PLEASE let me know so I can correct the issues.  Also, I can’t take credit for all of the content above, as I gathered most of the info from several different locations, they all deserve credit for their work so here are the references used for this post, these links are posted in the order I used them for the steps above: