Drupal Multisite Folder Structure
The following is an example of a multisite structure in Drupal 8. For simplicity, other core Drupal folders and files are not listed.
Multisite Structure:
-- core
-- modules
-- contrib
-- custom
-- themes
-- contrib
-- custom
-- sites
-- site1
-- modules
-- custom
-- contrib
-- themes
-- custom
-- contrib
-- files
-- site2
-- modules
-- custom
-- contrib
-- themes
-- custom
-- contrib
-- files
-- site3
-- modules
-- custom
-- contrib
-- themes
-- custom
-- contrib
-- files
DevOps Scenario:
In multisite environments, it's common for each site maintainer to manage their own site-specific code. In complex environments, front-end developers may also prefer production deployments to be decoupled from standard Drupal deployments. Below is an example of how Drupal 8 multisite folders might be split across multiple repositories. It’s assumed that each site has its own database and shares the common codebase, as illustrated below.
. ----> Repository1 (common to all developers)
-- core
-- modules
-- contrib
-- custom
-- themes
-- contrib
-- custom ----> Repository2 (managed by front-end developers)
-- sites
-- site1 ----> Repository3 (managed by site1 developers)
-- modules
-- custom
-- contrib
-- themes
-- custom
-- contrib
-- files
-- site2 ----> Repository4 (managed by site2 developers)
-- modules
-- custom
-- contrib
-- themes
-- custom
-- contrib
-- files
-- site3 ----> Repository5 (managed by site3 developers)
-- modules
-- custom
-- contrib
-- themes
-- custom
-- contrib
-- files
This model offers the following advantages:
1. Front-end developers can perform independent deployments, separate from standard Drupal backend deployments.
2. Each site maintainer can independently deploy changes (e.g., each site can have its own release schedule).