This page documents the typical file system structure on an Aegir installation. It is intended to complement a related wiki page on Aegir Architecture. The following paths are based on an Aegir 0.4-x installation and assume that all directories are within the /var/aegir folder.
Scripts and Configuration Files
Path | Notes |
/backups | site-specific tar balls containing a database dump and folders under path/to/platform/sites/example.com |
/config | |
/config/server_master | |
/config/server_master/apache | |
/config/server_master/apache/conf.d | non-aegir or non-drupal virtual hosts files |
/config/server_master/apache/platform.d | contains .htaccess information for each aegir platform |
/config/server_master/apache/vhost.d | apache virtual host files for aegir platforms |
/config/server_master/apache/vhost.d/aegir.example.com | virtual host file for aegir web site - specifies path to platform directory and site database settings (so that database credentials are not exposed directly in site settings.php file) |
/config/server_master/apache/vhost.d/site-1.com | virtual host file for deployed web site |
/config/server_master/apache/vhost.d/site-2.com | |
/config/server_master/apache/vhost.d/site-3.com | |
/drush | drush folder |
/drush/drush.php | drush script |
/.drush | drush extensions and server, platform and site aliases |
/.drush/drush_make | drush_make project folder - used for building web sites from .make files |
/.drush/provision | provision folder |
/.drush/server_master.alias.drushrc.php | settings for the master server where the main aegir database, hosting platform and aegir site reside |
/.drush/platform_hostmaster.alias.drushrc.php | settings for the hostmaster platform on which the aegir site is based |
/.drush/hostmaster.alias.drushrc.php | settings for the aegir site |
/.drush/platform_platform1.alias.drushrc.php | settings for platform1 on which site-1.com is based |
/.drush/site-1.com.alias.drushrc.php | settings for site-1.com |
Hostmaster Platform and Aegir (front-end) Site
Path | Notes |
/hostmaster-0.x | hostmaster platform |
/hostmaster-0.x/profiles | |
/hostmaster-0.x/profiles/default | |
/hostmaster-0.x/profiles/hostmaster | hostmaster profile |
/hostmaster-0.x/profiles/hostmaster/modules | |
/hostmaster-0.x/profiles/hostmaster/modules/admin_menu | |
/hostmaster-0.x/profiles/hostmaster/modules/hosting | hosting module |
/hostmaster-0.x/profiles/hostmaster/modules/install_profile_api | install_profile_api – facilitates provisioning of sites based on a non-default profile |
/hostmaster-0.x/profiles/hostmaster/modules/jquery_ui | |
/hostmaster-0.x/profiles/hostmaster/modules/modalframe | |
/hostmaster-0.x/profiles/hostmaster/themes | |
/hostmaster-0.x/profiles/hostmaster/themes/eldir | eldir theme – provides Aegir front end look and feel |
/hostmaster-0.x/profiles/hostmaster/hostmaster.profile | profile file – used in site provisioning to configure a drupal database |
/hostmaster-0.x/profiles/hostmaster/hostmaster.make | make file – used to include modules, themes, libraries etc. from various sources |
/hostmaster-0.x/modules | |
/hostmaster-0.x/themes | |
/hostmaster-0.x/sites | |
/hostmaster-0.x/sites/aegir.example.com | aegir web site folders |
Deployed Platforms
Note: the directory /platforms is optional but can be useful to separate deployed platforms from directories for scripts, config files and hostmaster platform.
Path | Notes |
/platforms | |
/platforms/platform-1 | |
/platforms/platform-1/profiles | |
/platforms/platform-1/profiles/default | |
/platforms/platform-1/profiles/custom-profile | |
/platforms/platform-1/profiles/custom-profile/modules | |
/platforms/platform-1/profiles/custom-profile/themes | |
/platforms/platform-1/profiles/custom-profile/custom.profile | profile file – used in site provisioning to configure a drupal database |
/platforms/platform-1/profiles/custom-profile/custom.make | make file – used to include modules, themes, libraries etc. from various sources |
/platforms/platform-1/modules | |
/platforms/platform-1/themes | |
/platforms/platform-1/sites | |
/platforms/platform-1/sites/site-1.com | |
/platforms/platform-1/sites/site-1.com/modules | |
/platforms/platform-1/sites/site-1.com/themes | |
/platforms/platform-1/sites/site-1.com/files | |
/platforms/platform-1/sites/site-1.com/settings.php | site-specific drupal configuration file |
/platforms/platform-1/sites/site-1.com/drushrc.php | site-specific aegir-specific configuration file |
/platforms/platform-1/sites/site-2.com | |
/platforms/platform-1/sites/site-3.com | |
/platforms/platform-1/sites/site-n.com | |
/platforms/platform-2 | |
/platforms/platform-3 | |
/platforms/platform-n | |
Platform permissions
Path |
Directory |
File |
Notes |
./* |
aegir:aegir
drwxr-xr-x |
aegir:aegir
-rw-r--r--
|
The webserver has no business writing or moving files in the Drupal codebase. |
Inside ./sites/example.com: |
drushrc.php |
|
aegir:www-data
-r--------
|
Web server shouldn't be able to read drushrc.php, it's not a component of the Drupal site. |
settings.php |
|
aegir:www-data
-r--r-----
|
Web server can read this file, but otherwise tight control over this file which can contain sensitive information. |
libraries
modules
themes
|
aegir:aegir
drwxrsxr-x
|
aegir:aegir
-rw-r--r--
|
Because of the sticky bit (s) on the parent directory, each child directory will inherit attributes of the parent. The attribute that is consistently inherited is the group. This means that a developer in the "aegir" group can add files which will retain the "aegir" group ownership of the parent directory.
|
files
private
|
aegir:www-data
drwxrws---
|
|
Aegir sets these directories with a sticky bit (s) so that under certain conditions new folders and files will inherit parent permissions. There are only a few cases where this happens though. |
files/*
private/*
|
www-data:www-data
drwxr-sr-x
|
www-data:www-data
-rw-r--r--
|
The permissions shown here are how files and directories created by www-data will look. When verifying a platform, Aegir won't "correct" these files and directories to match the parents.
If you have trouble with permissions/ownership on these directories, you can safely run the following commands (in this case on the files directory):
# chown -R aegir:www-data /path/to/site/files/* # chmod -R 775 /path/to/site/files/*
|
#1
Based on suggestions I've seen elsewhere, and the development workflow we need to follow (multiple developers using the same server, and I don't want them all to masquerade as aegir all the time just to get anything done)
I think that - seeing as the group is :aegir anyway, and the prevailing wisdom is to "join the aegir group" then we should have group write permissions on by default.
All cases of
should be changed to
#2
The problem of setting up a non drupal vhost file is a very common issue that involves many later consequences. Just like you mentioned that you were not able to pick up in directory it also involves many similar issues.
#3
The problem of setting up a non drupal vhost file is a very common issue that involves many later consequences. Just like you mentioned that you were not able to pick up in directory it also involves many similar issues.