I was asked the following question today and this is my stab at a
response. I'd appreciate and welcome any feedback if you've worked
with a Drupal multi-site instance.
Can you clone sites? Or would you have to clone every part of a site
and reassemble it for each site?
It depends on what you have to clone, but it tends to be more cloning
parts of a site (encapsulated in modules and themes, in Drupal parlance)
than cloning entire sites outright.
If you mean to easily add, update features and presentation, the way to
go about it is through modules, themes+subthemes, and use of code
versioning (I like subversion).
My assumption is that each sub site will be its own drupal instance.
Drupal lets you share modules across themes through the use of its
/sites directory, particularly /sites/all, anything in that folder is
available to all sites. Updating modules/themes in that folder would
make the updated code available on all sub sites once they run Drupal's
update command. For a more detailed explanation, see Setup of /sites
directory for multi-site
That takes care of moving functionality and some theming changes. Its
much trickier to move layout changes, although its possible. To do so,
you can forego using some of Drupal's configuration options (for
example, to position blocks). Instead, alter the layout via themeing
hooks done in PHP code. This makes it easy to store and track changes
with code versioning, this is where subversion (svn) comes in. This
means that layout changes affecting how blocks of content appear on the
site, more often than not, have to be done my an experienced drupal
developer but it saves you from manually having to make these changes
via Drupal's admin interface on every site that you manage.
I would say that using SVN has been the key to making this process
mostly painless for me. It is easy to move changes through testing >
staging > production environments. The 'svn update' command does the
work and knows what file-level changes need to be made, including
adding/removing files. Coupled with Drupal's built-in update functions
available in modules, and you have a predictable way to propagate
changes.
.
I didn't touch upon moving actual content from one site to another,
since that requires a wholly different approach.