--- myst: html_meta: "description": "" "property=og:description": "" "property=og:title": "" "keywords": "" --- (plone5-deployment-buildout-label)= # Buildout II: Getting Ready for Deployment (plone5-deployment-starzel-label)= ## The Starzel buildout Have a look at the buildout some of the trainers use for their projects: 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: ```cfg [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: - (plone5-deployment-setup-label)= ## A deployment setup A 'normal' deployment setup could look like this: ```text 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. ```{seealso} - - {doc}`../deployment/index` ``` (plone5-deployment-tools-label)= ## 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](https://www.drone.io/) (Continuous Integration) - piwik (statistics) - gitlab (code repository and code review) - redmine, taiga, assembla (project-management and ticket-system)