What's best Drupal deployment strategy?

ohho picture ohho · Apr 8, 2009 · Viewed 29k times · Source

I am working on my first Drupal project on XAMPP in my MacBook. It's a prototype and receives positive feedback from my client.

I am going to deploy the project on a Linux VPS two weeks later. Is there a better way than 're-do'ing everything on the server from scratch?

  • install Drupal
  • download modules (CCK, Views, Date, Calendar)
  • create the Contents
  • ...

Thanks

Answer

Eaton picture Eaton · Apr 8, 2009

A couple of tips:

  • Use source control, NOT FTP/etc., for the files. It doesn't matter what you use; we tend to spin up an Unfuddle.com subversion account for each client so they have a place to log bugs as well, but the critical first step is getting the full source tree of your site into version control. When changes are made on the testing server or staging server, you see if they work, you commit, then you update on the live server. Rollbacks and deployment gets a lot, lot simpler. For clusters of multiple webheads you can repeat the process, or rsync from a single 'canonical' server.

  • If you use SVN, though, you can also use CVS checkouts of Drupal and other modules/themes and the SVN/CVS metadata will be able to live beside each other happily.

  • For bulky folders like the files directory, use a symlink in the 'proper' location to point to a server-side directory outside of the webroot. That lets your source control repo include all the code and a symlink, instead of all the code and all the files users have uploaded.

  • Databases are trickier; cleaning up the dev/staging DB and pushing it to live is easiest for the initial rollout but there are a few wrinkles when doing incremental DB updates if users on the live site are also generating content.

I did a presentation on Drupal deployment best practices last year. Feel free to check the slides out.