Theme Options
COLORS SKINS PAGE COLOR BACKGROUND BODY

Error message

  • Deprecated function: Array and string offset access syntax with curly braces is deprecated in include_once() (line 20 of /home/royalcreations/public_html/shivamroy.com/includes/file.phar.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6609 of /home/royalcreations/public_html/shivamroy.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6609 of /home/royalcreations/public_html/shivamroy.com/includes/common.inc).
  • Notice: Trying to access array offset on value of type int in element_children() (line 6609 of /home/royalcreations/public_html/shivamroy.com/includes/common.inc).
  • Deprecated function: implode(): Passing glue string after array is deprecated. Swap the parameters in drupal_get_feeds() (line 394 of /home/royalcreations/public_html/shivamroy.com/includes/common.inc).

Setting up Drupal 8 Multisite on LAMP

Overview of the process:

  1. Install a Drupal 8 instance that will act as the root site for our multisite instance. In our example, the root site will be called d8multisite, will be reachable at d8multisite.com, and will be installed at /var/www/d8multisite
  2. Set up a site within the multisite called site1 which is reachable at site1.d8multisite.com
  3. Configure site1 to have its own modules outside of the root site.

Step 1: Instantiate the master site

In this example, we install Drupal with the following steps:

1.1: Create a database for the multisite root site, ex: d8multisite.

1.2: Download and extract a copy of Drupal 8 into your web directory.

1.3: Create an Apache virtual host for the root site. Read up on virtual host configuration. An example virtual host config:

<VirtualHost *:80>

# virtual host configuration for for drupal 8 multisite root site

ServerAdmin me@domain.com
DocumentRoot /var/www/d8multisite
ServerName d8multisite.com
ServerAlias www.d8multisite.com

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /var/www/d8multisite>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/d8multisite_error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/d8multisite_access.log combined

</VirtualHost>

1.4: Install Drupal by visiting d8multisite.com and following the install UI.

Step 2: Configure the first site for the multisite

Now that we have the root site set up, can begin configuring our first site called site1. Here are the steps in this process:

2.1: Create a folder for site1 in your multisite: /d8multisite/sites/site1.d8multisite.com

2.1: Create a database for site1, ex: d8multisite-site1

2.3: Make a copy of /d8multisite/sites/example.sites.php called /d8multisite/sites/sites.php

2.4: Edit sites.php so the end of the file looks like this:

# make the root drupal site aware of site1:
$sites['site1.d8multisite.com'] = 'site1.d8multisite.com';

2.5: Create an Apache virtual host for site1. Note that this virtual host should point to the root site, not the site's subdirectory. Also note that you can also forego creating a new virtual host configuration for this site and just the new site as a ServerAlias to the root site. In this example, we will, however, create a separate virtual host for site1:

<VirtualHost *:80>
ServerAdmin me@domain.com
DocumentRoot /var/www/d8multisite
ServerName site1.d8multisite.com

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /var/www/d8multisite>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/site1-d8multisite_error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/site1-d8multisite_error.log combined

</VirtualHost>

2.6: Copy /d8multisite/sites/default/default.settings.php to the new site's directory as settings.php:

#from the drupal root folder
cp sites/default/default.settings.php sites/site1.d8multisite.com/settings.php

2.7: Finish the Drupal installation process for site1 by visiting the site's domain.

You can repeat these steps each time you want to build a site in your multisite. You can also use domains like example.com and site1.anotherdomain.com. More details on domains, URLs, and sites subdirectory names.

Step 3: Enable per-site modules

In some cases, you may want one of your sites within your multisite to have its own modules. To enable this, you simply need to create the appropriate folders within the target site’s folder. In this example, we will enable site1 to have its own modules:

  1. Create a ‘modules’ folder in site1’s subdirectory: /d8multisite/sites/site1.d8multisite.com/modules
  2. Give apache write access to this folder with chown www-data /d8multisite/sites/site1.d8multisite.com/modules
  3. Test it out:
    1. Move out of site1’s subdirectory (i.e. into the root site) and install the pathauto module with drush drush dl pathauto
    2. Move into site1’s subdirectory and install the ds module with drush drush dl ds
    3. Visit both sites and confirm:
      1. Pathauto is available in both sites
      2. Display Suite is only available in site1

Note: The assumption here is that you can do this with themes, libraries, and files. More testing and documentation is needed here.

Comments (0)

The content of this field is kept private and will not be shown publicly.