Showing posts with label SharePoint Architecture. Show all posts
Showing posts with label SharePoint Architecture. Show all posts

Wednesday, May 21, 2014

SharePoint 2013 Virtual Development Environment Installation Guide - Part 1

SharePoint 2010 dev server deployment guide can be found here

Scenario
Prerequisites
    • Your workstation must be running a 64bit processor with Hardware Virtualization enabled
    • You must have enough memory (6 GB), disk space (60 GB), and processor power (2 cores) to run the VM and hold all snapshots.  Disk space will need to grow as you add content.
      • I highly recommend running this VM from a solid state drive (SSD) for optimum performance.  Disk speed is the greatest limiter for performance and if your RAM is limited, then the SSD swap file will help compensate.
    • You must have access to and appropriate licensing for above products
      • ex: MSDN Subscription
    • You must have time (about 8 hours) to install everything.
      • Hints:
        • Look for "Wait" for good break points
        • Snapshots can be used to create other virtual machines or to test minimally installed environments
        • Hyper-V, VirtualBox and VMWare specific settings will be called out
How To
  • Download the Software Listed Above - Wait
  • Enable Windows 8 Hyper-V, install VMWare, or install VirtualBox and the Extension Pack
  • Hyper-V: Enable a Shared/NAT virtual switch
    • ICS can only be set up from one network card at a time in Windows 8 so if you have a laptop and switch between WiFi and Ethernet you will need to change the ICS if you need the VM to access the internet
  • Create a new virtual machine named "sp2013"
    • Hyper-V: Generation 2 option
    • 6144 GB RAM (not dynamic)
    • Network: Use a Shared/NAT connection
    • 125GB dynamically expanding boot hard disk
      • You will likely use 45GB of this without any content
    • Increase the processors: 2-8 range
    • Mount the Windows Server 2012 R2 ISO
    • VirtualBox: Enable RDP support
  • Start the sp2013 virtual machine and boot from DVD
    • Hyper-V: Hold down a key to boot to DVD
      • Don't wait till the prompt to "Press a Key" or you will get this error: "Boot Failed. EFI SCSI Device."
  • The Windows Server 2012 R2 installer should begin
    • Select Windows Server 2012 Standard (Server with a GUI)
    • Select Custom (new install)
    • Short Wait
  • Set a new administrator password
    • pass@word1
  • Install VM guest tools (none for Hyper-V)
    • VirtualBox: VirtualBox Guest Additions
      • Auto Reboot
    • VMWare: VMWare Tools
  • Configure Server Manager: Local Server properties
    • Rename the server to sp2013 (Both the name and the computer description)
      • Note: If you forget this step, you will have a randomly named server.
        I have included instructions for aliasing and configuring a randomly named server
      • Restart later (so we can shut down instead)
    • Enable Remote Desktop
    • Disable IE Enhanced Security Configuration
  • Shut down and take a Snapshot named "Windows Install" then boot the machine
  • Server Manager Dashboard: Add Roles
    • Server Roles
      • Active Directory Domain Services
        • Add features and Include management tools
      • Application Server
      • DNS Server
        • Add features and Include management tools
        • Ignore Static IP warning
      • Web Server (IIS)
        • Add features and Include management tools
    • Features
      • ASP.NET 4.5 (under .NET Framework 4.5)
      • Telnet Client
        • SMTP connectivity troubleshooting tool
      • User Interfaces and Infrastructure
        • Desktop Experience
          • Also adds Ink and Handwriting Services
    • Application Server / Role Services
      • Web Server (IIS) Support
        • Add features and Include management tools
    • Allow auto-restarts then Install
    • Short Wait
    • Click "Promote this server to a domain controller"
      • Select "Add a new forest"
      • Root domain name: sp.local
      • Next
      • Forest and Domain functional level: Windows Server 2012 R2
      • Password: pass@word1
      • Continue pressing Next until Install
        • Short Wait for NetBIOS domain name to be recognized and for Prerequisite check
        • Ignore the 3 warnings
      • Install
      • Short Wait
      • Accept reboot prompt
      • Log back in as Administrator
  • Server Manager Dashboard: Add Roles
    • Features
      • ASP.NET 3.5 Features
      • Before installing specify the following alternate path
        • D:\sources\sxs  (where D: is the Windows Server DVD drive)
  • Verify Internet connectivity by opening Internet Explorer and browse to Bing
  • Disable SmartScreen Notifications from the Action Center
  • Windows Update: Turn on auto updates
    • Install Updates and Wait
    • Reboot when prompted
    • Some errors in windows update may occur as they are installed and the server is rebooted. Here are some solutions:
      • Several updates fail and require reboots
        • Open System Configuration (msconfig)
        • Check Selective startup
          • Uncheck Load Startup items
        • OK
        • Restart when prompted
      • Hyper-V: Security Update for Windows Server 2012 R2 (KB2920189) Failed 800F0922
        • Only occurs on Gen 2 Hyper-V with Secure Boot
        • Temporarily disable Secure Boot in the VM settings while installing the update
  • Open Active Directory Administrative Center (Pin to desktop and Start menu)
    • Administrator account
      • Account / Password Options: Password never expires
      • Organization / Email: administrator@sp.local
    • Create a user in the Users OU
      • Full Name: User
      • User SamAccount: sp\user
      • pass: same as Administrator password
      • Account / Password Options: Password never expires
      • Organization / Email: user@sp.local
    • Add User to the Users group
    • Create a user in the Managed Service Accounts OU
      • Full Name: spservice
      • User SamAccount: sp\spservice
      • pass: same as Administrator password
      • Account / Password Options: Password never expires
  • Open Group Policy Management console
    • sp.local / Domains / sp.local / Domain Controllers / Default Domain Controllers Policy
    • Right click and Edit
      • Policies / Windows Settings / Security Settings / Local Policies / User Rights Assignment
      • Edit Allow log on locally
        • Add the Users group
  • Stop and Disable the following Services
    • DFS Namespace
    • DFS Replication
  • Shut down, snapshot "DC and IIS", and start virtual machine
  • Mount the SQL Server ISO to the VM DVD drive
  • Start SQL Server Setup 
    • Install Stand-alone
    • Use MS Updates
    • Ignore DC and Firewall warnings
    • All Features with Defaults
    • Continue
    • Server Configuration / Service Accounts
      • Use the same account for all SQL Server services
        • specify the sp\spservice account and password created above
    • Continue
    • Analysis Services Configuration
      • Account Provisioning
        • Add Current User
    • Reporting Services Configuration
      • Install only for both
    • Distributed Replay Controller
      • Add Current User
    • Continue then Wait
  • Shut down, snapshot "SQL Server", and start virtual machine
  • Open SQL Server Configuration Manager
    • SQL Server Network Configuration
      • Protocols for MSSQLSERVER
        • Enable Named Pipes
  • Restart the SQL Server (MSSQLSERVER) service
  • If your server is randomly named - not sp2013
    • DNS Manager
      • Forward Lookup Zones
        • sp.local
          • Add a new alias
            • Name: sp2013
            • FQDN: Browse to splocal\servername
              • servername will be a randomly generated value
  • Mount the SharePoint Server 2013 iso
  • Start the Prerequisites installer
    • Run D:\Splash.hta (open with MS HTML Application Host)
    • Short Wait
    • Finish to restart
  • Start the SharePoint Install
    • Enter your Enterprise license key
    • Wait
    • Run the Configuration Wizard
    • Create a new server farm
    • Configuration Database
      • Server: sp2013
      • Name: SharePoint_Config
      • Username: sp\spservice
      • Password: same as above
    • Farm Security Settings
      • Passphrase: same as admin password above
    • Central Admin Web App
      • Port: 8000
      • Auth: NTLM
    • Wait
    • Finish
  • IE will open to the central administration website.
    • Join the experience program (or don't)
    • Start the wizard and configure as follows
  • Central Admin Initial Farm Configuration Wizard steps
    • Use existing managed account: sp\spservice
    • All items should be checked except for Lotus Notes
    • Next
    • Wait
    • Create Root Site Collection
      • Title: SP2013
      • URL: /
      • Experience version: 2013
      • Template: Collaboration \ Team Site
      • OK
        • If you encounter a  error, skip to the next step (AAM config) then delete the running timer job, restart IIS, and re-run the wizard from Central Admin
      • Finish
    • Open central admin (http://sp2013:8000) and add the following Alternate Access Mapping (AAM) internal URLs
  • Set the browser home page to http://sp2013
  • Configure Search from Central Admin
    • Central Admin \ Manage service applications \ Search Service Application (first one)
      • Content Sources
        • Local SharePoint Sites
          • Incremental every 30 minutes (or other value here based on needs)
            • Recommend disabling incremental crawls for performance
          • Note: Continuous crawls will require more resources on VM startup
        • Start a full Crawl
  • Open http://sp2013 in IE
    • Add sp\administrator to the sp2013 Members group
    • Add sp\user to the sp2013 Visitors group
    • Validate that the following workset
      • Any workflow
      • Search scopes
      • My Sites and User Profile
  • Performance Tuning
    • Run the following PowerShell scripts (in SharePoint 2013 Management Shell)
      • Set-SPEnterpriseSearchService -PerformanceLevel Reduced
    • Disable the following system services unless/until needed
      • SQL Server Analysis Services (MSSQLSERVER)
        • From Automatic to Disabled
      • SQL Server Reporting Services (MSSQLSERVER)
        • From Automatic to Disabled
      • Optional (if you do not need SharePoint search and want to reduce memory footprint)
        • Remove the incremental crawl scheduled earlier
    • More tips from Andrew Schwenker
  • Shut down, snapshot "SharePoint Configured", and restart
Optional Configurations

Thursday, May 10, 2012

Solution Architecture - To SharePoint or Not to SharePoint

You are architecting a web based software solution and are considering custom development (Asp.Net and SQL) or SharePoint list and library based architecture.  You can decide based on the following list of SharePoint pros and cons.  If you can pick 3 or 4 items (or 1 very important item) from the Pro list and are aware of the items in the cons list, it is likely beneficial to use SharePoint.
  • Pros
    • Authentication, authorization, and membership - Claims, forms, AD, LDAP, and custom
      • Security trimming throughout the product - Very important
    • Document and content management
      • If you plan to upload files, plan to use SharePoint - Very important
    • Item Data
      • Site, library, and list columns
      • Managed metadata
      • Customizable ad-hoc list and library views
    • Search and Indexing
      • Security trimmed - Very important
    • Publishing, approval, versioning, and check outs
      • Versioning - Very important
      • Remember to turn these on where appropriate
    • Navigation
      • Security trimmed
      • Dynamically populated
    • Web content management - Sites, pages, wikis, blogs, and web parts.
    • Recycle Bin - The big undo
    • Email Alerts, RSS
    • Integrated workflow and task engine - Pre-built Approval and Review workflows
    • Retention policies, legal holds, and record management
    • Email enabled libraries
    • Unified user interface (Master pages, layouts, themes, and styles)
    • Reporting integration
      • Excel services
        • Better with PowerPivot (SQL Enterprise or BI)
      • SSRS
      • MS Access
      • PerformancePoint services
    • External lists and external chart web part
      • Using business connectivity services
    • MySites (personal web sites) and user profiles
    • MS Office integration
      • Including Office Web Apps (with MS Office volume license)
      • SharePoint Workspace for offline caching and synchronization
    • Plethora of third party products and solutions
    • Standardized skill-sets - by SharePoint focus
      • Ex: Architect, developer, analyst, admin, designer, end-user, bi analyst, librarian, etc.
    • Web Part Framework integration
      • This is also available in ASP.Net, but does not have audience integration and requires some master page work and is not as flexible for reuse and customization by end-users.
    • APIs: web services, client object model, sever object model, and PowerShell
    • MS Support
    • Load balanced, scalable architecture
    • COTS - little to no coding required for many solutions
  • Cons
    • Relational support limited
      • SharePoint supports lookups with referential integrity and reflected columns but does not support hierarchical/tree view and complex entity relationships without custom development
      • SSRS does not allow you to query with a join or union
    • System integration complexity
      • Integrating and maintaining SharePoint and related applications in your environment can be complex and requires a professional to do correctly.  This can be mitigated by using a hosted SharePoint provider.  This admin level complexity is greatly outweighed by SharePoint's inherent functionality.
    • Performance
      • You can't optimize the performance as well as with a SQL database.  If your system is highly transactional, consider moving these pieces to SQL and front-ending in SharePoint
    • New skill set to utilize fully
      • SharePoint is still in the early stages of user adoption and training.  Many users will need to be trained to understand how best to use SharePoint.
    • Storage hungry
      • SharePoint solutions with document libraries can eat up disk space faster than a file share.  Make sure to plan SQL capacity and possibly Remote Blob Storage
    • Wildfire effect
      • If proper governance plans, quotas, IT professionals, and permissions aren't in-place, SharePoint training and support needs may surpass the IT department's ability to provide
    • Initial cost
      • Initial costs (server licenses and CALs) should be surpassed by reduced development costs and increased productivity. 
      • Search Server 2010 Express (SharePoint Foundation 2010 w/ advanced search)  is available for low cost solutions.  This will not have all the features listed above.
    • Not easy to synchronize functionality and content across distributed farms, sites, and lists
      • If you plan to utilize site or list templates, you must have a plan to integrate new features into sites after they have been created.  Data migrations, schema changes, and feature additions must be addressed in a solution package or powershell script.
    • Troubleshooting bugs and limitations
      • The more you use SharePoint, the more you will run into its limitations and bugs.  Troubleshooting issues is usually not straightforward and requires SharePoint knowledgable IT staff and/or many hours on the support line.  Fortunately, limitations are very often overcome by community and third party products and are a google search away.  See the rest of my blog for many of these bugs, limitations, and workarounds.
    • Easy to poorly architect a solution
      • With great ease of implementation, comes incredibly horrible solutions
        • Generally, do not:
          • Use folders
            • unless they are doc sets, email enabled folders, or OneNote sections
            • folder level security and explorer view needs are a possible exception
          • Copy/move documents unless you have a good reason
            • Utilize in-place publishing, versioning, security, and filtered views whenever possible
          • Overwrite the standard list/library CRUD forms
            • you can add to the pages, just don't remove the dynamically generated form web part
            • Try to use custom fields, third party products, or views to implement custom functionality within a column
          • Use too many site collections
            • Site collections isolate functionality.  Only split if you are sure there will be little crossover in SharePoint functionality.  Search will work across site collections.
          • Use too many sites
            • Sites should map to your main navigation, you don't want too many at each level
            • The exception would be for dynamically generated templated sites, but you would need to implement code for instantiation, navigation, and disposal.
              • Ex: Project sites and my sites.
          • Use too many lists/libraries
            • Items with similar metadata and security should be in the same library and separated by content type or metadata values.
          • Develop a custom solution that can be addressed using native SharePoint functionality
        • Generally, do:
          • Have a seasoned SharePoint specialist gather requirements and architect a  solution
            • This person should know all the dos and don'ts
          • Use site content types and site columns
            • Define site columns and content types at the lowest level site needed to encompass all sub-sites where they will be used
          • When custom development is needed
            • Use javascript, ajax, and jquery
              • but not for security
            • Use PowerShell for administrative functions
            • Build SharePoint Designer workflows
            • Build Visual Studio workflow actions
            • Build Visual Web Parts
            • Build EventHandlers
            • Package and deploy visual studio solutions as a .wsp
            • Be careful with performance on the above
              • Dispose items properly
              • Cache any collection references, don't use the index
                • Ex: Don't use splist.items[x], instead use getitembyid or equivalent
          • Perform user testing
          • Use lookup lists and columns
          • Performance testing
          • Disaster recovery testing
            • Backup plans are useless without successfully tested recovery plans