Buildout II: Getting Ready for Deployment
51. Buildout II: Getting Ready for Deployment#
51.1. The Starzel buildout#
Have a look at the buildout some of the trainers use for their projects: https://github.com/starzel/buildout
It has some notable features:
It extends to config- and version-files on github shared by all projects that use the same version of Plone:
[buildout] extends = https://raw.githubusercontent.com/starzel/buildout/5.1.2/linkto/base.cfg
It allows to update a project simply by changing the version it extends.
It allows to update all projects of one version by changing remote files (very useful for HotFixes).
It is minimal work to setup a new project.
It has presets for development, testing, staging and production.
It has all the nice development-helpers we use.
Another noteable buildout to look for inspiration:
51.2. A deployment setup#
A 'normal' deployment setup could look like this:
ZEO-Server -> ZEO-Server (ZRS) / | \ ZEO Clients (as many as you want) \ | / Load balancer (nginx or haproxy) | Cache (varnish) | Webserver (nginx)
Deploying Plone and production-setups are outside the scope for this training.
51.3. Other tools we use#
There are plenty of tools that make developing and managing sites much easier. Here are only some of the ones you might want to check out:
Fabric (managing sites)
Sentry (error monitoring)
Ansible (managing and provisioning machines)
Greylog, ELK (logging)
Nagios, Zabbix (server monitoring)
jenkins, gitlab-ci, travis, drone.io (Continuous Integration)
gitlab (code repository and code review)
redmine, taiga, assembla (project-management and ticket-system)