Converting a site that uses sites/default/files to a site-specific configuration per Drupal multi-site installations

Avatar-eric-london
Created by Eric.London on 2011-02-21
Tags:
New Comment
 
Please note: the content on this page orginates from ericlondon.com.
In this article, I'll explain how I converted my site from using sites/default/files to a specific sites folder, IE: sites/ericlondon.com/files. This is essential for setting up a Drupal mulit-site installation, which allows you to host numerous Drupal sites off a single Drupal installation. When creating a new site/project, I think it's important to ask yourself: will this client/project ever require another Drupal site? In my recent history, I have found it's safer to implement a site-specifc sites folder for each project from the start, to keep the configuration segmented. Here is an example filesystem layout:

Contrib modules that are shared across all client/project sites:
sites/all/modules/contrib

Custom modules that are shared across all client/project sites:
sites/all/modules/custom

Site-specific files directories:
sites/project1.com/files/
sites/project2.com/files/

Custom modules that are site specific:
sites/project1.com/modules/custom/
sites/project2.com/modules/custom/

For my site, I used the Site Directory Migrate module. I downloaded the module and unpacked to: sites/all/modules/contrib/sitedir_migrate. This module comes with a bunch of submodules to help the migration (profile fields, CCK, blocks, etc). I chose to enable all of them for my site.

After installing the module, I browsed to the configuration page (admin/settings/sitedir_migrate), entered "default" in the "From:" field, and entered "ericlondon.com" in the "To" field. By saving this page, the module searches your database for instances of your previous sites directory and replaces the data with the new sites folder.

I then browsed to the File System admin page (admin/settings/file-system), and changed my file system path from "sites/default/files" to "sites/ericlondon.com/files", and saved. You can now disable the Site Directory Migrate modules.

At this point, your content will be adjusted, but you still need to reconfigure your Drupal installation. On the command line, I moved the contents of my previous sites folder to the new one.


$ cd /path/to/drupal/installation/httpdocs/sites
$ mkdir ericlondon.com
$ mv default/settings.php ericlondon.com/
$ mv default/files ericlondon.com/


Now that everything has been reconfigured, I flushed all my caches, and started to verify my content. I immediately noticed my content's teasers had not been adjusted, IE: teaser images were still pointing to: sites/default/files.

I decided to use SQL to blindly update all of my teasers (probably not the best solution, but it worked for me).


update node_revisions
set teaser = replace(teaser, 'sites/default/files', 'sites/ericlondon.com/files')
where teaser like '%sites/default/files%'


NOTE: If you have phpMyAdmin installed for your site, it has a great feature that allows you to search through all of your tables for a specific string. This can be used to help find additional records that need to be adjusted.

Comments

 
  • hmm
    Created by Eric.London on 2011-02-21
    After I completed this process on my live site and scanned all my tables for "sites/default/files", I still had occurrences :(

    I used this SQL to fix my files table:
    
    update files
    set filepath = replace(filepath, 'sites/default/files/', 'sites/ericlondon.com/files/')
    where filepath like '%sites/default/files%'
    
  • lucene
    Created by Eric.London on 2011-02-21
    Lucene stores the file path in a separate variable as well. I had to update this page:

    admin/settings/luceneapi_node/general
  • theme
    Created by Eric.London on 2011-02-21
    If you uploaded a favicon, you'll need to update your theme's configuration page as well:

    admin/build/themes/settings/YOURTHEMENAME
  • Thanks
    Created by kbk on 2013-01-23
    Great blog. It's been helping me for years. For D7 users, as of this comment, you will need to patch the Site Directory Migrate module (http://drupal.org/node/1568536#comment-5973776).
  • Drupal still looking in sites/default
    Created by kbk on 2013-01-25
    Drupal is still looking in sites/default for the settings.php file. For example, if I move it out or rename it and visit my homepage I am redirected to the ~/install.php.

    Suggestions?