Application deployment
Distributing your web application code on the multiple nodes of a freistilbox
cluster will work only if it is installed completely identical on all cluster
nodes at all times. Inconsistencies, for example in the form of different code
revisions, will result in website behaviour that would at least confuse your
visitors or, in the worst case, break your website.
To avoid these problems, we provide a centralized deployment process. You need
to upload your changes only once; our infrastructure then takes care of
distributing them to all affected boxes within seconds.
Version control with Git
Updating distributed services from a central code base is the ideal task for
modern version control systems. We chose Git for that purpose.
Every freistilbox website instance has its own central Git repository that
stores its Drupal installation. From this central repository, all the webservers
responsible for delivering your site update their local Drupal environment after
every change you upload. Technically speaking, they clone the central
repository.
Git repository structure
The Git repository should contain the following items in its root directory:
- the subdirectory
docrootwith your web application code, - a file named
Boxfilewhich controls deployment behaviour, - and a hidden file named
.gitignore.
We’re going to explain these files and directories in detail below.
docroot
The docroot directory contains the code base of your web application, for
example a Drupal distribution. It will be used as document root by our
webservers.
[!warning]
docrootshould only contain application code! Make sure not to put files in
there that need to be updated by your application, for example Drupal’s
sites/default/filesdirectory. These should be in a shared folder, as defined
in the Boxfile.
Boxfile
Because the Boxfile documentation needs a bit more space, we’ve put it on a
separate page: Boxfile
.gitignore
Your .gitignore file should at least contain the following entries:
/config
/private
/tmp
You should also exclude directories that need to be shared between boxes, for
example:
/docroot/sites/*/files
To avoid accidental checkins, we recommend you also exclude environment-specific
files like
/docroot/.htaccess
/docroot/.htpasswd
This document is version controlled - suggest changes on GitLab.