For mobile and web development, use Vagrant + Virtualbox. No reason to pollute the base system with different versions of weblibs, languages and servers.
Vagrant's docs are pretty decent on how to create a custom box.
When possible I use boxcutter released boxes, as they generally have good support for providers besides virtual box.
So e.g. on new projects, I use one of the boxcutter Debian boxes, but for a client I have with a legacy environment, I'm using a centos box.