Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)


Published on

Did you know that running multiple instances of WordPress on a single server doesn’t actually require multiple instances of the codebase? In fact, as of WordPress 3.9, you don’t even need multiple instances of a plugin or a theme! Multitenancy can eliminate massive maintenance overhead in the right situations, think server-wide, near-instant updates that let you stay secure without keeping up with multiple sites. And that’s just the beginning of how it can help. In this session, I’ll show you how multitenancy can save time and energy while empowering your users. It’s simple, but powerful.

Published in: Software, Technology
  • The #1 Woodworking Resource With Over 16,000 Plans, Download 50 FREE Plans... ◆◆◆
    Are you sure you want to  Yes  No
    Your message goes here
  • Nice !! Download 100 % Free Ebooks, PPts, Study Notes, Novels, etc @
    Are you sure you want to  Yes  No
    Your message goes here
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website!
    Are you sure you want to  Yes  No
    Your message goes here

Introducing WordPress Multitenancy (Wordcamp Vegas/Orlando 2015/WPCampus)

  1. 1. @cliffseal
  2. 2. THE BIG IDEA Multiple independent instances of WordPress running off one, non-hacked core directory (and possibly sharing themes and plugins, too) @cliffseal
  3. 3. We use this stuff for ( @cliffseal
  4. 4. WHY MULTITENANCY? Here’s what multitenancy can offer you over individual installations:
 • Smaller footprint • Faster code deployment • Easier updating process all around • Use single instances of themes & plugins @cliffseal
 Multiple databases Less plugin hiccups @cliffseal
  6. 6. WHAT’S NEW WITH MULTITENANCY? • Symlinked plugins: Smart people have been talking about multitenancy (and doing it) for years. Some best practices have emerged, while WordPress 3.9 included this critical final step.
 • GitHub mirrors: things like WordPress core being mirrored on Github have made the whole process easier. @cliffseal
 (For Evermore, At Least) @cliffseal
  8. 8. index.php wp-config.php wp => ../wp content uploads mu-plugins => ../repo/mu-plugins plugins => ../repo/plugins themes => ../repo/themes HOW IS EACH SITE STRUCTURED? @cliffseal
  9. 9. // WordPress view bootstrapper define( 'WP_USE_THEMES', true ); require( './wp/wp-blog-header.php' ); WHAT’S IN INDEX.PHP? @cliffseal
  10. 10. define('WP_HOME','https://' . basename(__DIR__)); define('WP_SITEURL','https://' . basename(__DIR__) . '/wp'); define( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/content' ); define( 'WP_CONTENT_URL', 'https://' . $_SERVER['HTTP_HOST'] . '/content' ); WHAT’S IN WP-CONFIG.PHP? @cliffseal
  11. 11. The /uploads directory stays as-is—that always needs to be independent. The other symlinks (mu-plugins, plugins, themes) point to single directories on the server containing one copy of themes & plugins available on the sites. These are source- controlled, so we can test updates locally and then deploy them to each server. WHAT’S IN THE CONTENT DIRECTORY? @cliffseal
  12. 12. You need a standard WordPress core directory at the other end of your symlink. Simply add in your own wp- config.php: include_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' ); This file never gets updated either in a standard core update or in a Git checkout. WHAT’S IN THE WP DIRECTORY? @cliffseal
  13. 13. If you use the GitHub mirror as a remote, you can wait on the tag to come through and run: cd /my/wp/directory git fetch --tags git checkout -f tags/4.3.1 ...and now everyone is updated. Alternatively, you can push to a remote that checks itself out (like you might do with the content dir). You can roll back versions easily, too. WHAT’S IN THE WP DIRECTORY? (CONT.) @cliffseal
  14. 14. 1.COMBINE STEPS 2.WRITE SCRIPT 3.???? 4.PROFIT!!! @cliffseal
  15. 15. WHAT SHOULD WE LOOK OUT FOR? • Some plugins (wrongly) assume a more standard WordPress structure. This can break things. Patch their plugin and submit it to them, because they will (probably) not care. • Use subdirectories inside /plugins when symlinking, as single file plugins and individual mu-plugins can have trouble. • Test deployment processes for multiple production servers. @cliffseal
  16. 16. @cliffseal