Eu sugeriria qualquer uma das seguintes ferramentas:
Docker
ou
LXC
Eu ainda estou aprendendo o Docker como descobri recentemente, mas não demora muito para perceber que o Docker é uma ferramenta criada para desenvolvedores. Dê um giro e divirta-se! E observe que o Docker se empolga quando se trata de configurar as coisas através de variáveis de ambiente.
Eu usei ferramentas LXC por enquanto e elas estão bem, mas para desenvolvimento elas requerem muito trabalho de configuração. E chroots requerem ainda mais trabalho, para mim eles tiram o foco de desenvolvimento. E eles não são muito portáteis.
Você também pode querer dar uma olhada no Vagrant.
Não posso postar muitos links aqui já que sou novo, mas o Vagrant é tão popular se você digitar em uma pesquisa no google será o primeiro ou o segundo resultado que você vê.
"Crie e configure ambientes de desenvolvimento leves, reproduzíveis e portáteis."
Observe também que o Vagrant trabalha com vários Virtual Machine ou Container Environments. Pense nisso como uma ferramenta para criar seu ambiente de desenvolvimento virtual com um comando "vagrant up". E não se limita ao Linux, funciona (exatamente o mesmo!) No Linux, Mac OS e Windows.
Sem mencionar quando você faz o docker e / ou o vagrant você pode verificar o Dockerfile ou o Vagrantfile no seu sistema de controle de versão. Então, eles se tornam parte do seu projeto e mudam com o seu projeto.
Espero que essas ferramentas ajudem.