Upgrade Your Drupal Skills
We trained 1,000+ Drupal Developers over the last decade.
See Advanced Courses NAH, I know EnoughDrupal 8: Setting Up Multi-site
There is an incredibly easy way to create multiple Drupal sites. You don’t need to duplicate the code. You can have multiple sites, with different content, users, and themes since each site can use a different database. They will all run on a single codebase and will be able to share modules. This is one of Drupal’s greatest features called Multi-site. It was first implemented in Drupal 4, and it is here now in Drupal 8.
Getting Prepared
To get started, go ahead and download Drupal.
Then, upload and extract all the files into a new folder for Drupal. For example: /public_html/drupal/
I will be creating two sites, one for dogs, and the other for cats.
These multiple sites can be accessed either from subdomains or subdirectories. If you are going to use subdomains, go ahead and create them. However, if you are going to use subdirectories, hold off until later, since you will have to remove it anyways.
I want the dogs website to be accessed by a subdomain and the cats website by a subdirectory, so I will create dogs.kalose.net
Now create a separate database for each site. Also, create a user or two to access these databases.
I will name my databases user_dogs
and user_cats
which will be accessed by user user_drupal
who will have privileges: ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, INDEX, INSERT, SELECT, AND UPDATE
.
The Technical Part
Coding
Navigate into the directory: /drupal/sites/
We need to tell Drupal we are going to have multiple sites. To do this, create a file called sites.php
. You can find extra examples and documentation of how to set it up in the example.sites.php
file.
This file will contain an $sites
array containing all the rules. For each index, the key will be the formatted address the website will be accessed at, and the value will be what folder to look in.
Format of each index:
'
.
My sites.php
:
$sites = array( 'dogs.kalose.net' => 'dogs', $sites = array( '8080.www.drupal.org.mysite.test' => 'example.com', |
Since we said dogs.kalose.net
was going to use the /dogs/
folder and www.kalose.net/cats/
was going to use the /cats/
folder, these folders need to be created: /drupal/sites/dogs/
and /drupal/sites/cats/
SSH / Shell / Terminal
Connect to your webserver via SSH. If you’re on Windows, you can use PuTTY.
The /drupal/sites/default/
site will have default files we need to copy into each of our sites. Copy these files using the cp
command in the sites directory:
cp default/default.settings.php dogs/settings.php cp default/default.settings.php cats/settings.php cp default/default.services.yml dogs/services.yml cp default/default.services.yml cats/services.yml |
Now we have successfully set up Drupal for multi-site. Although, if you visit dogs.kalose.net
or www.kalose.net/cats/
it will be blank. Why? How does the web server know to point these sites to the /drupal/
directory? This is why we need to make symbolic links from /dogs/
and /cats/
to /drupal/
If a subdirectory is created when you create a subdomain, delete that directory.
rmdir dogs |
Now time to create the symbolic links. This is why we did’t have to create the /cats/
subdirectory. The symbolic link will automatically point /dogs/
and /cats/
to /drupal/
like they are the same folder.
ln -s drupal dogs ln -s drupal cats |
* You may notice that these folders/links have all permissions (chmod 777
). You don’t need to worry about this because these permissions won’t be used, instead the permissions of /drupal/
or the file/folder you are linking to will be used.
Finishing Up
All that is left to do now is to install Drupal. I can visit dogs.kalose.net
and www.kalose.net/cats/
and set them up using databases user_dogs
and user_cats
. Using Multi-site, these sites can be completely different except for the fact that they share the same underlying code.
About Drupal Sun
Drupal Sun is an Evolving Web project. It allows you to:
- Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
- Facet based on tags, author, or feed
- Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
- View the entire article text inline, or in the context of the site where it was created
See the blog post at Evolving Web