The Aegir team is very pleased to announce the official release of Aegir 2.0.0. This long-awaited release ships with significant stability improvements, Drush 5 and 6 support, subdirectory multisite support, improved nginx support, native views and much, much more! We unfortunately had to drop support for Drupal 5, as Drush 5 and 6 dropped support for this unsupported Drupal release.
This release deprecates the 1.x branch, marking the 1.11 release as the last one of the 1.x branch. All Aegir users are strongly encouraged to upgrade to the 2.0 release. The upgrade has been thoroughly tested and works fairly reliably, except some documented minor issues.
We have a very dynamic community of contrib developers, and various projects built atop Aegir. So if you were waiting for Aegir 2 to be stable, easy to install, production-ready, now is the time. The 2.x branch will be well supported as a lot of shops are running it in production already.
1. Major changes in this release
Since th 1.0 stable release (1.0) in April 2011, we've done an incredible amount of work. The code size nearly doubled as did the development team and user base. We have accomplished a significant number of the release goals we set for 2.0, but not all. Here is a broad breakdown of the most important improvements between the 1.11 and 2.0 releases:
- Subdirectory multisite support
- you can now have different sites in example.com/foo and example.com/bar, a great feature if you do not control DNS, as well as for local development!
- SSL improvements
- IP allocation improvement: addresses can be changed, added and removed more easily, and are managed from the front-end now.
- SSL certificate generation now has saner defaults (e.g. 2048bits)
- better error handling
- Drush 5 & 6 support
- includes better support for archive-dump command
- means we also drop the dependency on drush make 2.3, now included in Drush 5
- support for Drush 4 has been dropped, the minimum version is now 5.5, but Drush 6 or 5.10+ is recommended.
- Packaging improvements and changes
- Nginx support in the Debian package
- now a "native" debian package
- package name changed: it is now
aegir2-provision, etc, to avoid overwriting the previous package - note that aegir 1 and 2 can not be installed in parallel
- hosting and eldir now split back in their own projects on dripal.org
- using Drupal.org packaging tools to provide a full tarball for the whole frontend, speeding up installs significantly
- Nginx improvements:
- fixed support for nginx 1.3 and newer
- better defaults for caching
- SSL and Nginx are now officially supported (not marked as "experimental")
- New modules:
hosting-queue-runnermodule is now merged into core as
- "pack" module, designed as a lightweight replacement to the "cluster" module, now available as an experimental extension
- Hosting-queued improvements
- run with a lower priority ("niced")
- improved portability and reliability of startup script
- enabled by default in the Debian package
- improved stability
- Code refactoring and improvements:
- now using the Symphony autoloading code
- fix coding style in a lot of source files
- improved builtin test suite
- Frontend improvements:
- all custom displays ported to Views and VBO
- nicer frontpage
- new and improved roles with more useful default permission sets
- Documentation improvements:
For a more detailed list of new functionalities, bugfixes and API changes, see below.
Some goals of the original 2.0 roadmap have not been accomplished, namely:
- modular backup, platform and queuing systems - although work has started on Wordpress support, and an overhaul of the Aegir architecture is considered for 4.0, which will affect queuing systems (see below)
- DNS, PostgreSQL and statistics efforts have mostly stalled
- clone and migrate optimizations still have to be completed
- completely automatic upgrades have not been implemented, although the Debian package upgrades are working generally well
- the release was about 2 months late from the october 31st estimate
1.1. 2.x branch maintenance policy
With the 2.0 release, the Aegir project wished to adopt the growing standard of Semantic Versioning. Unfortunately, the tools on Drupal.org do not allow 3-digits version numbers in contrib, something of a blocker to allow us to use that great numbering scheme. So we will stick to our previous scheme for now, but we'll consider a switch to semver for 3.0.0.
No API change will be done in the 2.x branch. All core development will now happen on the 3.x branch, which shifts the focus of development to the port of the frontend to Drupal 7 (almost complete).
Note that the 2.x API has already been frozen for some time, since the first release candidate, to be more precise. Major changes to 2.x will not be committed unless they are first tested in 3.x and merged back. However, we wish the 2.x branch to be relatively short-lived, and it is more likely that major changes will not be backported from 3.x unless absolutely necessary for users needing a Drupal 6 Aegir frontend.
The 1.x branch is now deprecated and the 1.11 release will be the last release of that venerable branch, unless we need another release to fix the upgrade path to the 2.x branch. This is considered very unlikely. Security fixes or critical issues will therefore not be backported to the 1.x branch.
1.2. The future
While we're very proud of what we've accomplished in Aegir 2.0, we've also been working in parallel to port Aegir to Drupal 7. Aegir 3.0 has already begun as a fairly straight-forward port. As such, we'll be releasing our first alpha of Aegir 3 shortly. We would like to have a stable Aegir 3.0 release before the release of Drupal 8, to allow for users to transition as Drupal 6 enters its end-of-life phase.
The reason for the change to semantic versioning is that we've been discussing a full re-write of Aegir for some time, and would like to do so with Aegir 4. The changes are likely to be fairly drastic, and so we want to be able to keep moving Aegir 3 forward in the mean time. By moving to Drupal 7, we expect to have bought ourselves 2+ years of breathing room within which to accomplish this re-architecture and the semantic versioning system allows us to integrate major changes in the 3.x branch progressively.
When the Aegir project started (back in 2008), the free software options for systems management software were very limited. As a result, we wrote our own code to do things like deploying code, writing configuration files, starting and stopping services, and so forth. Now, as 2014 begins, there are a wealth of tools that perform these functions (e.g. Puppet and Chef, but also Openshift, Docker, etc), each with their own communities supporting them. We are exploring how we might be able to leverage these tools, rather than maintaining our own partial implementations, that will never likely be as robust as these more specialized projects.
We feel that the time is opportune since Drupal 8 will require significant re-writing of the front-end components. In addition, re-writing the backend so completely will allow us to seriously consider moving to a programming language other than PHP; one that would be better suited to the project's long-term goals, such as Python or Ruby.
2. Installing and upgrading
The canonical source of installation documentation is on the community site at:
In a similar fashion, the upgrade documentation is:
It is still imperative that you read the the upgrade path and version-specific information and follow all version-specific upgrade instructions before trying to run the upgrade script or manual upgrade.
For users coming from the 2.0 betas or recent rc releases, there are unlikely to be any version-specific manual steps required to upgrade, but you should make a habit of reading them anyway just to make sure. No-one likes a nasty surprise!
Note that you should upgrade to the latest 1.x release (currently: 1.9) before attempting the upgrade to 2.x. This is especially important if you are running a pre-1.0 release (poor you!).
2.1. Need help?
If you struggle to install or upgrade your Aegir system, you have a number of options available to you for getting help.
Consult this page for more information: http://community.aegirproject.org/help
Thanks to our awesome community for their help, support and encouragement as always! Enjoy the new release :)
2.2. Known issues
Being really open about our project, we have never hidden the fact that some things, sometimes, do not work in Aegir. Our issue trackers are public, and we've made it a point of honor not only to document clearly what is wrong in our releases as soon as we find out about it, but also to reroll new releases when we fix it.
That being said, 2.0 still has a number of issues and design flaws. This is the list of all issues marked "major" in the queue right now. Most issues are now likely to be fixed in the 3.x development branch, and unlikely to be backported unless considered critical.
hosting-queueddoesn't get properly re-enabled on upgrades, see #2114675 for a workaround.
- Ubuntu saucy has some changes in apache config wich breaks Aegir #2155705
- previous Debian packages may remove the
aegir.confsymlink before being upgraded. this is fixed in 2.0 but will occur (it's inevitable) during upgrade. details and simple workaround in #2121263
3. Complete list of changes
Her is the complete list of changes, since the 1.x branch, some of which were already mentioned in previous release notes for alpha/beta/rc releases.
3.1. API changes
Those changes are, as usual, more explicitly documented in the upgrade path documentation.
- hosting-task now needs a
--forceargument to run a non-queued task
- the '--force' option also allows running tasks that appear to be running in the queue
- functions that were deprecated in 1.x are now removed
client_emaildatabase fields are now removed from client and site node types
- numerous changes to the IP allocation and SSL management code
- deprecate hosting_ip_delete_revision(), dupe of hosting_ip_delete() now that revisions are gone (8 weeks ago)
- remove deprecated DEBUG flag in debian package
- #1785624: Some Drupal API changes in D7 (and D8) are not used/respected properly
- #1945950: Rename provision_drupal_sync_site_back()
- #1083366: Make the spokes authoritative for files/ and private/ directories
- #1812338: Refactor sync back
- a new control file has been introduced in /etc/nginx/basic_nginx.conf to force the nginx configuration to be the "simpler" one (see #1635596)
- #1987026: Move generated platform drushrc.php to sites/all/drush
- Multiple files can be managed in a single context now (see issue #2000038, issue #1784108)
- #1034520: Cleanup package instances when deleting sites and platforms.
- #1830220: Drop support for Drupal 5.
- #1975086: Move log parsing and status updates to seperate functions and call them from a shutdown function.
- Pass the entity type when we're sync'ing package instances.
- Save the platform field when creating a package instance record.
- Move to individual operation callbacks for VBO tasks.
- #2022849: Record disable and delete backups in the database.
- #2031491: Rename SSL permission to be more descriptive.
- Fix node grants so that proper permissions are respected on all Aegir node types.
- Add 'administer' permissions for platforms and servers, and allow platforms to be viewed.
- #1283738: Allow other commands to add or alter the directories to be created.
- remove version pinning in hostmaster, our release process now again needs to modify only one makefile (#2002114)
- #1986928: Provide 2.x upgrade guidance for services
- #2099889: More hosting_features checks in _drush_load hooks?
- #1882708: Unused 'release_id' field in 'hosting_platform'
- #2012508: hosting_context_name returns '@' if node not found
- #1283738: Add new hook provision_drupal_create_directories in _provision_drupal_create_directories
- There is now a registry in the backend of the features enabled in the front-end (in /var/aegir/.drush/drushrc.php) which allows backend components to better determine if they should act
/var/aegiris a symlink, it will be destroyed by the debian package, make sure the Aegir $HOME is properly set to work around that, see issue #2118857
3.2. New features
In addition to the "major changes" mentioned above, the following should also be noted.
- #1830994: Login directly via 'login' link
- #1853588: Sort Install profiles on Site add form
- #709862: Allow drush modules to add to apache vhost config template
- #1861896: Make $type argument of function hosting_available_tasks() optional.
- #1843198: Add Content top and bottom to Eldir.
- #1826074: Add tests to ensure site directories are migrated
- #1464220: Support alternative 'Hostmaster' profiles
- #610040: Add X links on listing pages
- #710834: notify clients on site migrations
- #1260066: Allow use of the working copy option when creating a platform
- #1047992: exportable backups
- #1189556: Pull the queue runner into Aegir 2
- #1408410: Add microcaching to Nginx config by default
- #1138104: Tiny module to automatically fill in platform publish path based on title
- #1929372: Flag tasks with logged warnings
- #1515416: On a package page, show table listing sites and platforms using the package
- #1853620: Add db_name to site summary
- #1681904: Ability to configure a url to redirect to in site configuration.
- #1968226: manage each IP individually on the server level
- add uninstall command
- Nginx Security: BEAST attack protection and fix for PCI compliance.
- #1980136: Allow setting default profile from the front-end.
- #588728: Replace custom lists with Views and VBO for sites, platforms and packages.
- Support for installing in subdirectories (issue #705026)
- Proper homepage on startup so non-logged-in users don't see an error page, and new users have basic instructions (issue #1793740)
- SSL support for clusters should now work properly (issue #2000964)
- New roles added: 'aegir platform manager', 'aegir administrator' (issue #1403208)
- Convert list of platforms to use views (Issue #1876350)
- #600350: provide a nice "history" of ran tasks
- #1988642: Add site by platform
- #1912238: automatically build and upload aegir 2.x packages
- #585830: usability story: "How do I create a client?"
- #1212086: Platforms should be locked by default
- #1403208: Add additional roles
- #1174440: provide a way to show site's DB username/password in the frontend
- #606120: Disabled sites should be class hosting-warning, enabled but problematic sites should be hosting-error
- #905326: Improve file path changes.
- #1201174: Make UID1 username configurable.
- #1345118: Make platform access control an autocomplete form.
- #1515416: Replace listing of sites and platforms using a package with a view.
- #1975086: Add 'update status' button to tasks.
- #2005310: Add VBO operations to platforms view.
- #2006074: Enable backups via VBO.
- #2025787: Open site goto link in a new window/tab.
- #2022813: Expose backups to Views.
- #2027269: Update a task's status after all Drush operations are complete.
- #2031491: Review and update permissions for all roles.
- #2031765: Clean up VBO operations with Action Permissions.
- #2035873: Show package 'popularity' on platform package view
- #2036283: Make Aegir aware of site-specific packages.
- #2036793 Ignore hidden modules and profiles.
- #2037045: Change some log statuses to better match Drush's log styling.
- #2037965: Clean up hosting-pause.
- #2038279: Validate email during site install.
- Display all validation errors when adding a client, and limit to 20 suggestions.
- Flag rollbacks as warnings in our task logs.
- Handle package page views separately for sites and platforms.
- Update default hosting_site views to use new access plugin for blocks, and add a couple more displays for non admin listings.
- Add Views access plugin for hosting_site and hosting_package.
- Add views handler to filter packages by status.
- #2069387: Support nonstandard ports on hostmaster-install command.
- #2067617: Allow hostmaster-install to accept '--working-copy' option.
- Allow the redirect to the welcome page to be turned off.
- aegir install time reduced by about 60 seconds (on a cable uplink) by using Drupal.org distributions (#2002114)
- #2001964: Upgrade Views Bulk Operations 6.x-1.16
- #2099057: Allow _provision_drupal_create_directories to skip chmod
- #2100251: Implement post-enable hook for 'hosting_*' modules
- #2020075: Refactor subdirs to use proper Config class(es)
- #2020079: Multi-server subdirectory support
- #2096629: hook_provision_drupal_create_directories_alter by ref
- #2086009: Logo Cannot be changed / disabled
- #2069387: Support nonstandard ports on hostmaster-install command
- #2074681: Ports are hardcoded in hostmaster.profile
- #2103173: Provide an example of saving data to a site context
This list only shows bug fixes since the last release candidate (RC5), since the list of all bugfixes in Aegir 2 is truly enormous. Please review the individual release notes for more details, if you are curious.
- Improve the subdir related description in the site add/edit forms, to explain the most important details clearly enough.
- Do not allow duplicate subdir aliases - use hosting_alias_allow_domain() in hosting_alias_validate_subdir() directly.
- Update the inline how-to for sites in subdirs.
- #2020089 by ergonlogic - Allow example.com and example.com/foo domains (Hosting)
- #2151475 by helmo: Extra comment.
- #2151371 by helmo: Allow custom platform tasks.
- security fix: SA-CORE-2013-003, fix files/ protection
- #1220062 fix mild security issue with login-reset links.
- fix SSL certificate garbage collection, it was simply not working
- reformat complex query to be more readable
- also free SSL certificate when SSL is disabled on a site
- check only client nodes for duplicates, closes #2123355
- #2119101: Fix tasks are not sorted properly.
- don't verify deleted sites, fixes #2119111
- properly populate the SSL cert / IP association map
- properly count the aegir hosting aliases, fixes #2118917
- Fix malformed @defgroup.
- #2085077 by chertzog | ergonlogic: Fixed Invalid argument supplied for foreach() hosting.ip.inc:39.
- #2126895 by helmo: Upgrade.sh not compatible with Drush 6.
- #2020089 by ergonlogic - Allow example.com and example.com/foo domains (improved to fix a few dangerous errors) plus comments.
- Nginx: Use text/xml mime type for .xml URLs to restore defaults.
- Fix the check for parent site existence - we should look for drush alias file and not a vhost (which can be dummy subdir vhost).
- Nginx: Fix aliases in redirects on the fly.
- Nginx: Convert subdir alias name properly when used as server_name in redirection.
- #2020089 by ergonlogic - Allow example.com and example.com/foo domains (Apache)
- Nginx: Redirect to working homepage for subdir based site.
- #2100181 by ergonlogic - Symlink missing for D6 subdir sites.
- #2146711 by helmo: PHP 5.3 compatible (Nginx).
- #2038891 by drastik: add missing --client-email option
- #2020091 by ergonlogic - Support subdirs with Nginx.
- fix redirection for non-ssl hosts, issue #2148671 by logaritmisk
- #2157785 by helmo: Remove unused variables, these get written to the site's settings.php anyway.
- #2157783 by helmo: Deploy_7 code has an unused old_uri.
- don't go around destroying apache configs on upgrades or removal
- get the aegir home directory dynamically
- rename VARLIB variable to AEGIRHOME for clarity
- fix drush dependency: we need 5.10 to treat hostmaster as core in drush make
- Further fixes for strict options checking in Drush 6.
- #2135999: Fix for strict options checking in Drush 6.
- Update site_data example extension with new load method.
- Fix naming of hook in api docs.
- be more tolerant about the way the alias gets passed from the frontend
- #2117227 by Ogredude - Missing newline causes syntax errors in vhost.d nginx config when redirects are enabled.
- Copy all makefiles into Debian package.
- Conditinally add subdirs/ to the debian package.
- Fix .deb dependency.
- #2113463: Fix take hosting_platform_pathauto out of experimental.
- #1376466 by Dane Powell: Fixed path not generated when copy/paste is used.
- #1898252 by Dane Powell: Fixed Edit option displayed on existing platforms.
3.4. Other issues
- #1923552: Rename 'Queue runner settings' tab to 'Queue daemon'
- #1834036: Add 'hosting platform pathauto' to the .gitignore
- #1785624: Some Drupal API changes in D7 (and D8) are not used/respected properly
- #1979496: Update upgrade.sh.txt for Drush 5
- #1974752: Document old_uri option for provision-deploy