Windows

      Drupal
      Alessandro Pilotti
         @alexpilotti
      MVP ASP .NET / IIS
     Windows Azure Insider




MCSD, MCAD, MCSE, MCDBA, MCT
   Red Hat Certified Engineer
Some Facts About the
       Windows OS
—  Based on Windows NT, released in July 1993

—  Hardware independent OS

—  POSIX subsystem

—  Provides excellent command line tools
  —  PowerShell

—  Excellent security model

—  Server Core option for minimal GUI and footprint
Windows and IIS
Product Name          OS Version   IIS   Release
Windows XP            5.1          5.1   08/01
Windows Server 2003   5.2          6.0   03/03
Windows Vista         6.0 (Build   7.0   01/07
                      6000)
Windows Server 2008   6.0 (Build   7.0   03/08
                      6001)
Windows 7             6.1          7.5   07/09
Windows Server 2008   6.1          7.5   07/09
R2
Windows 8             6.2          8.0   ?
Windows Server 2012   6.2          8.0   ?
IIS 6
—  Kernel level component (http.sys) listens to HTTP requests
    —  HUGE performance improvement over IIS 5

—  All user code runs in separate processes
    —  Worker Process (w3wp.exe)
    —  Crashes in worker processes don’t affect the stability of the
        service

—  Web gardens
    —  Multiple WP per single web applications

—  Configuration stored in a XML metabase
    —  MetaBase.Xml
    —  MBSchema.Xml
IIS 7.x / 8.0
—  Complete redesign over IIS 6.0
—  Modular design
—  http.sys is still part of the architecture
—  Improved remote administration and delegation
—  Enhanced command line and scripting tools
  —  Including PowerShell cmdlets
—  Flexible model not limited to HTTP
—  Tight integration with WCF
Security
—  Windows is a very secure OS!
  —  Running Internet Explorer as administrator and getting
      malware does not mean that the system is flawed
  —  RunAs permits to execute processes as different users

—  Windows Server 2008 introduced some unique security
  features

—  Windows Firewall
—  Since Windows Server 2008:
  —  Address space layout randomization (ASLR)
  —  Network Access Protection (NAP)
Comparing PHP Stacks

—  Linux + Apache + MySQL + PHP
—  Windows + Apache + MySQL + PHP
—  Windows + IIS + MySQL + PHP
—  Windows + IIS + MS SQL Server + PHP
Linux + Apache + MySQL + PHP

—  Pros
  —  Most known and deployed stack in OSS world
  —  Linux is a highly configurable operating system
  —  Most Linux distributions can easily be configured for
      Apache, MySQL and PHP (yum / apt-get / etc)
  —  Apache is a highly modular and scalable web server
  —  Lots of documentation available
  —  Tightly integrated update process (yum / apt-get)
—  Cons
  —  Lack of simple configuration tools
  —  Configuration requires a wide knowledge
  —  Deployment differences between distributions
Windows + Apache + MySQL + PHP

—  Pros
  —  Most of the components are shared with the LAMP stack
  —  Suitable for solutions that require integration with both
      Apache modules (e.g. mod_rewrite) and Windows
  —  Until FastCGI for IIS showed up, undoubtfully the best PHP
      stack on Windows
  —  Tools like XAMPP provide an easy deployment option
      —  http://en.wikipedia.org/wiki/Comparison_of_WAMPs
—  Cons
  —    Performance
  —    Limited documentation and examples
  —    Limited integration in the Windows ecosystem
  —    Heterogeneous scenario for security updates
Windows + IIS + MySQL + PHP

—  Pros
  —    Performance (FastCGI and WinCache)
  —    Tightly integrated in the IIS 7.x ecosystem
  —    Easy to configure an deploy via WebPI
  —    Easy to manage via IIS Manager
  —    Easy to script via WebDeploy and Powershell

—  Cons
  —  Web apps requiring integration with Apache modules
        need to be reviewed
MySQL and Microsoft SQL
             Server
—  Using PHP Data Objects PDO eases portability
  issues

—  SQL Server is a choice to evaluate in scenarios that
  require high availability

—  PHP Drivers for SQL Server 3.0 just released!
—  Drupal + SQL Server through Commerce Guys
  module
PHP on Windows
—  COM integration
    —  Simplest way to access OS native 3rd party features
    —  Marshaling performance is not brilliant (IDispatch / late
     binding)
—  .NET integration (experimental)
—  W32Api (experimental)
    —  Register / Invoke API functions
    —  Be careful with the parameters on the stack
—  win32service
    —  start/stop/register/unregister services
—  Note: flock() has a slightly different behavior on Windows
IIS 7 Modules
—  Individual features used to process a request
—  Executed in a pipeline
—  Native
  —  OS specific binaries (e.g. written in C++)
  —  More performant

—  Managed
  —  .NET assemblies, executed by the .NET CLR
  —  More secure and manageable
Windows Server 2012 - SNI
—  Windows Server 2012 introduces some important
  features
  —  Huge performance improvements for multi-tenant!



—  Server Name Indication (SNI)
  —  Assign different X509 certificates to different host
      headers
  —  Requires IE >= 7.0, Chrome >= 6.0, FF >= 2.0,
      SafariMobile >= 5.0
  —  Non supported in IE on Windows XP (even on IE 9)!
CPU Throttling
—  CPU resource pooling is a problem in IIS 7.x
  —  Processes exceeding their quota get killed, not
      throttled
  —  Lots of errors in user applications
  —  Not suitable for multitenant scenarios
—  This feature required specific kernel support
Windows Server 2012
   CPU Throttling
WebPI
—  Microsoft Web Platform Installer (WebPI) is a free
  tool that simplifies deployment of web solutions
  —  IIS features and extensions
        —  WinCache, PHP Drivers for SQL Server, PHP Manager
  —    Frameworks
        —  PHP 5.2 / 5.3, .Net, etc
  —    Web applications
        —  Drupal, Joomla, Wordpress, DotNetNuke, Orchard, etc
  —    Database
        —  MS SQL Server Express, MySQL, etc
  —    WebMatrix
        —  WebMatrix 2 RC available!
Drupal via WebPI
—  Fastest way to setup Drupal on IIS
—  Takes care of all the steps
 —  Deploy of Drupal (6.x or 7.x)
 —  Dependencies
   —  PHP IIS: CGI, URL Rewrite, VC9, WinCache, etc
          ,
 —  File permissions
 —  Database creation
Windows Cache Extension
         for PHP
—  Open source project developed by Microsoft
—  IIS Specific accelerator
—  Requires PHP 5.2 or 5.3 x86
  —  Non thread safe version

—  Provides features not available in APC and
  other accelerators
—  Current version: 1.1
Drush 5.x
—  A command line shell and scripting interface
—  Written in PHP
—  MS SQL Server is supported
—  Windows setup available on
  http://drush.ws/drush_windows_installer
  —  Takes care of all required dependencies
  —  Requires elevation
Drush aliases
—  Create a file aliases.drushrc.php in %UserProfile%.drush


$aliases[’drupal7'] = array(

        'root' => '/path/to/drupal',

        'uri' => 'dev.mydrupalsite.com',

        'os' => 'Windows',

        'remote-user' => 'Administrator',

        'winrs-password' => 'Passw0rd',

        'remote-host' => 'DrupalWeb1'

);
Server Farm
—  IIS extensions:
  —  Application request Routing (ARR)
  —  Web Farm Framework (WFF)



—  You can enable independently
  —  Load balancing and caching
  —  Server farm provisioning
     —  Platform / applications
WebDeploy
—  Web Application Packaging
    —  Application or site, including DBs
    —  Sources and destinations can be
      —  Live servers
      —  Zip files

—  Deployment
    —  Administrative rights not required
    —  Integration with VMSVC for remote deployment

—  IIS server synchronization
    —  Entire server / site / application
    —  Differential
    —  Detects missing dependencies
—  http://www.microsoft.com/web/websitespark/
—    Software
      —  Production licenses for self hosting: Windows Web Server 2008 R2; SQL Server
          2008 Web Edition and development tools

—  Azure
      —    WebsiteSpark members get up to $1400* in annual Windows Azure resources

—    Training
      —  Free online training and access to the MSDN developer community and resources

—    Support
      —  2 professional support incidents

—    Criteria
      —  An individual or a company with < than 10 employees engaged in website design &
          development

—    Check out also BizSpark for startups
      —  http://www.microsoft.com/bizspark/
Resources
http://groups.drupal.org/drupal-windows

http://channel9.msdn.com/Series/PHP-at-Scale-on-the-Microsoft-
Platform

Free Webcasts!
   —  Deploying Drupal on IIS with Web Platform Installer (WebPI)
   —  Deploying Drupal on IIS without Web Platform Installer (WebPI)
   —  Building a Drupal Web Farm with IIS and Application Request Routing
         (ARR) - Part 1
   —    Building a Drupal Web Farm with IIS - Part 2
   —    IIS URL Rewrite for PHP and Drupal
   —    Web Deployment Tool (WebDeploy) for Drupal sites
   —    Optimizing Drupal and PHP sites on IIS, including Profile Guided
         Optimization (PGO)
   —  Optimizing Drupal in IIS with Memcache and Solr
   —  Configuring and managing Drupal with SQL Server
   —  Managing Drupal on the Windows Platform with Drush

Windows Loves Drupal

  • 1.
    Windows Drupal Alessandro Pilotti @alexpilotti MVP ASP .NET / IIS Windows Azure Insider MCSD, MCAD, MCSE, MCDBA, MCT Red Hat Certified Engineer
  • 2.
    Some Facts Aboutthe Windows OS —  Based on Windows NT, released in July 1993 —  Hardware independent OS —  POSIX subsystem —  Provides excellent command line tools —  PowerShell —  Excellent security model —  Server Core option for minimal GUI and footprint
  • 3.
    Windows and IIS ProductName OS Version IIS Release Windows XP 5.1 5.1 08/01 Windows Server 2003 5.2 6.0 03/03 Windows Vista 6.0 (Build 7.0 01/07 6000) Windows Server 2008 6.0 (Build 7.0 03/08 6001) Windows 7 6.1 7.5 07/09 Windows Server 2008 6.1 7.5 07/09 R2 Windows 8 6.2 8.0 ? Windows Server 2012 6.2 8.0 ?
  • 4.
    IIS 6 —  Kernellevel component (http.sys) listens to HTTP requests —  HUGE performance improvement over IIS 5 —  All user code runs in separate processes —  Worker Process (w3wp.exe) —  Crashes in worker processes don’t affect the stability of the service —  Web gardens —  Multiple WP per single web applications —  Configuration stored in a XML metabase —  MetaBase.Xml —  MBSchema.Xml
  • 5.
    IIS 7.x /8.0 —  Complete redesign over IIS 6.0 —  Modular design —  http.sys is still part of the architecture —  Improved remote administration and delegation —  Enhanced command line and scripting tools —  Including PowerShell cmdlets —  Flexible model not limited to HTTP —  Tight integration with WCF
  • 6.
    Security —  Windows isa very secure OS! —  Running Internet Explorer as administrator and getting malware does not mean that the system is flawed —  RunAs permits to execute processes as different users —  Windows Server 2008 introduced some unique security features —  Windows Firewall —  Since Windows Server 2008: —  Address space layout randomization (ASLR) —  Network Access Protection (NAP)
  • 7.
    Comparing PHP Stacks — Linux + Apache + MySQL + PHP —  Windows + Apache + MySQL + PHP —  Windows + IIS + MySQL + PHP —  Windows + IIS + MS SQL Server + PHP
  • 8.
    Linux + Apache+ MySQL + PHP —  Pros —  Most known and deployed stack in OSS world —  Linux is a highly configurable operating system —  Most Linux distributions can easily be configured for Apache, MySQL and PHP (yum / apt-get / etc) —  Apache is a highly modular and scalable web server —  Lots of documentation available —  Tightly integrated update process (yum / apt-get) —  Cons —  Lack of simple configuration tools —  Configuration requires a wide knowledge —  Deployment differences between distributions
  • 9.
    Windows + Apache+ MySQL + PHP —  Pros —  Most of the components are shared with the LAMP stack —  Suitable for solutions that require integration with both Apache modules (e.g. mod_rewrite) and Windows —  Until FastCGI for IIS showed up, undoubtfully the best PHP stack on Windows —  Tools like XAMPP provide an easy deployment option —  http://en.wikipedia.org/wiki/Comparison_of_WAMPs —  Cons —  Performance —  Limited documentation and examples —  Limited integration in the Windows ecosystem —  Heterogeneous scenario for security updates
  • 10.
    Windows + IIS+ MySQL + PHP —  Pros —  Performance (FastCGI and WinCache) —  Tightly integrated in the IIS 7.x ecosystem —  Easy to configure an deploy via WebPI —  Easy to manage via IIS Manager —  Easy to script via WebDeploy and Powershell —  Cons —  Web apps requiring integration with Apache modules need to be reviewed
  • 11.
    MySQL and MicrosoftSQL Server —  Using PHP Data Objects PDO eases portability issues —  SQL Server is a choice to evaluate in scenarios that require high availability —  PHP Drivers for SQL Server 3.0 just released! —  Drupal + SQL Server through Commerce Guys module
  • 12.
    PHP on Windows — COM integration —  Simplest way to access OS native 3rd party features —  Marshaling performance is not brilliant (IDispatch / late binding) —  .NET integration (experimental) —  W32Api (experimental) —  Register / Invoke API functions —  Be careful with the parameters on the stack —  win32service —  start/stop/register/unregister services —  Note: flock() has a slightly different behavior on Windows
  • 13.
    IIS 7 Modules — Individual features used to process a request —  Executed in a pipeline —  Native —  OS specific binaries (e.g. written in C++) —  More performant —  Managed —  .NET assemblies, executed by the .NET CLR —  More secure and manageable
  • 14.
    Windows Server 2012- SNI —  Windows Server 2012 introduces some important features —  Huge performance improvements for multi-tenant! —  Server Name Indication (SNI) —  Assign different X509 certificates to different host headers —  Requires IE >= 7.0, Chrome >= 6.0, FF >= 2.0, SafariMobile >= 5.0 —  Non supported in IE on Windows XP (even on IE 9)!
  • 15.
    CPU Throttling —  CPUresource pooling is a problem in IIS 7.x —  Processes exceeding their quota get killed, not throttled —  Lots of errors in user applications —  Not suitable for multitenant scenarios —  This feature required specific kernel support
  • 16.
    Windows Server 2012 CPU Throttling
  • 17.
    WebPI —  Microsoft WebPlatform Installer (WebPI) is a free tool that simplifies deployment of web solutions —  IIS features and extensions —  WinCache, PHP Drivers for SQL Server, PHP Manager —  Frameworks —  PHP 5.2 / 5.3, .Net, etc —  Web applications —  Drupal, Joomla, Wordpress, DotNetNuke, Orchard, etc —  Database —  MS SQL Server Express, MySQL, etc —  WebMatrix —  WebMatrix 2 RC available!
  • 18.
    Drupal via WebPI — Fastest way to setup Drupal on IIS —  Takes care of all the steps —  Deploy of Drupal (6.x or 7.x) —  Dependencies —  PHP IIS: CGI, URL Rewrite, VC9, WinCache, etc , —  File permissions —  Database creation
  • 19.
    Windows Cache Extension for PHP —  Open source project developed by Microsoft —  IIS Specific accelerator —  Requires PHP 5.2 or 5.3 x86 —  Non thread safe version —  Provides features not available in APC and other accelerators —  Current version: 1.1
  • 20.
    Drush 5.x —  Acommand line shell and scripting interface —  Written in PHP —  MS SQL Server is supported —  Windows setup available on http://drush.ws/drush_windows_installer —  Takes care of all required dependencies —  Requires elevation
  • 21.
    Drush aliases —  Createa file aliases.drushrc.php in %UserProfile%.drush $aliases[’drupal7'] = array( 'root' => '/path/to/drupal', 'uri' => 'dev.mydrupalsite.com', 'os' => 'Windows', 'remote-user' => 'Administrator', 'winrs-password' => 'Passw0rd', 'remote-host' => 'DrupalWeb1' );
  • 22.
    Server Farm —  IISextensions: —  Application request Routing (ARR) —  Web Farm Framework (WFF) —  You can enable independently —  Load balancing and caching —  Server farm provisioning —  Platform / applications
  • 23.
    WebDeploy —  Web ApplicationPackaging —  Application or site, including DBs —  Sources and destinations can be —  Live servers —  Zip files —  Deployment —  Administrative rights not required —  Integration with VMSVC for remote deployment —  IIS server synchronization —  Entire server / site / application —  Differential —  Detects missing dependencies
  • 24.
    —  http://www.microsoft.com/web/websitespark/ —  Software —  Production licenses for self hosting: Windows Web Server 2008 R2; SQL Server 2008 Web Edition and development tools —  Azure —  WebsiteSpark members get up to $1400* in annual Windows Azure resources —  Training —  Free online training and access to the MSDN developer community and resources —  Support —  2 professional support incidents —  Criteria —  An individual or a company with < than 10 employees engaged in website design & development —  Check out also BizSpark for startups —  http://www.microsoft.com/bizspark/
  • 25.
    Resources http://groups.drupal.org/drupal-windows http://channel9.msdn.com/Series/PHP-at-Scale-on-the-Microsoft- Platform Free Webcasts! —  Deploying Drupal on IIS with Web Platform Installer (WebPI) —  Deploying Drupal on IIS without Web Platform Installer (WebPI) —  Building a Drupal Web Farm with IIS and Application Request Routing (ARR) - Part 1 —  Building a Drupal Web Farm with IIS - Part 2 —  IIS URL Rewrite for PHP and Drupal —  Web Deployment Tool (WebDeploy) for Drupal sites —  Optimizing Drupal and PHP sites on IIS, including Profile Guided Optimization (PGO) —  Optimizing Drupal in IIS with Memcache and Solr —  Configuring and managing Drupal with SQL Server —  Managing Drupal on the Windows Platform with Drush