You are here

Command line Drupal install and update script for multi-site hosting

Maintaining a Drupal site, or a collection of sites is much easier if everything is kept completely separate--Drupal core, contributed modules, and the site itself.
This is even more important if multiple sites are hosted on the same server. Drupal's own multi-site support can be a nightmare to maintain, believe me! (e.g. when you want to upgrade modules or core).
A must simpler and easily supported configuration is to keep everything separate and to use symbolic links to tie it all together. For example, I keep:

  • a Drupal 5 install in /opt/drupal/drupal5
  • with Drupal 5 contrib modules in /opt/drupal/modules5
  • a Drupal 6 install in /opt/drupal/drupal6
  • with Drupal 6 contrib modules in /opt/drupal/modules6
  • sites typically live in home directories like /home/bluecorp/html

The site has no drupal code in it (except possibly custom code/themes in sites/default)
Instead, symbolic links are used to make it look as if Drupal code appears in all the expected places. This has the following advantages:

  • A site can be upgraded, simply by switching its links to a different install of Drupal
  • Upgrading a Drupal version is very clean, it is just dropped into its own folder
  • Multiple sets of modules can be kept and maitained
  • Backup is much easier
  • Just about all regular tasks can be automated, using a single script, provided below:

The code for this project has just been moved to

To get dget via subversion

Set the DGET variable below to the directory that will contain the dget utilities subdirectory and svn to download it:
svn co $DGET
bash $DGET/ $DGET

It can be kept up to date using:
DGET=/root/dget; svn up $DGET; bash $DGET/ $DGET

Furthur installation notes

Can be found on the old project page at: