You sound like you are out of your depth - THis is a very broad question with an answer that is heavily dependent on your environment.
If you love your company & data, please seek professional assistance beyond ServerFault before moving forward.
If you elect not to heed my warning above, here are some VERY basic pointers (not a complete solution -- giving you a complete solution is like asking for a kilo of pure sysadmin knowledge to be crammed into your head). Bear in mind that load and usage will dictate what you can get away with based on what I have outlined below:
The architecture you describe can't really be accomplished on three physical boxes unless you're virtualizing some of them -- there's no way to properly separate Dev/Stage/Production environments. You have two basic options:
- Virtualize all 3 machines (One is the dev stack, one is the stage/test stack, one is the production stack
- Virtaulize a two machines (DB is dedicated, One box is Production (Slave DB, Web) & one box is a virtualized dev stack.
Your version control server should ideally be separate from everything else (and backed up obsessively). It can be a VM if you go the virtual route.
You may want to include a plan for a machine to do backups (running bacula) or a plan to rsync off-site.
For now you may want to start with a flat network topology (everything on one network/VLAN). Eventually you will probably need something more complex (e.g. putting the DB servers & version control into separate, access-restricted subnets). This will require some firewall magic.