We have a linux based development server which we connect to from our windows based desktops (via ssh, scp, samba (mapped network drive), etc)
We're doing web development in perl, using apache2, mod_perl and MySQL, and our code base is under SVN source control.
What is the best way to allow all (currently 5) developers to develop independently?
In the past I've experienced running multiple instances of apache (achievable by hacking apache's source code and compiling)
But perhaps it would be better to use virtualisation and effectively give each developer their own development server (seems a bit overkill for web development though)
And if I only run one instance of apache, what's the best way to redirect incoming request to the correct codebase? port? sub-domain? IP address of client?
Thanks
Virtual machines are great for this sort of thing -- each developer can work without fear of getting in anyone else's way, and they can play around with system config changes to support new code if necessary. Maintaining a production-like environment is easy with a master VM image or configuration management.
I would actually recommend using Apache's built in VirtualHost functions. By using name based virtual hosts you can run one instance of apache with completely different root codebases. They will have to have there own domain name per user but that shouldn't be an issue. You'll end up with something like:
Since you already have an SVN server setup, you can create an independent repository for each user which they can have merged back into the main trunk when they finish working on there chunk. You can do SSL with these as well but if you want to use the same certificate it would need to either be a wildcard or include all of the additional addresses.
You can get more information about name based virtual hosts from the apache website for both version 1.x and version 2.x
You can also give your developers there own MySQL databases without running an additional database (I'm assuming your software can specify the name of the database it connects to not just the host).