Seriously, I think it's best to create your own. Some people, for example, use Redmine instead of Trac. Finding a preconfigured virtual machine with these specific settings will be difficult.
So, having âcreate your ownâ as a prerequisite, I believe that you have the following options:
Use the VM Aware distribution
The Ubuntu server comes to mind: it has the ability to set up a minimal installation specific to virtual machines .
Download the ISO image of the server, boot from it, press F4 on the initial screen and select "Install Minimal Virtual Machine".
- Less than 380 MB of installed space
- Specialized server core (-virtual)
- Optimized for VMWare ESX, VMWare Server, and Intel or AMD x86 KVM architecture.
- 128 MB minimum memory
- The graphical environment is not preloaded because it targets the serverâs virtual device.
IMHO, you will spend no more than a day setting up your virtual machine to your tastes, not weeks. Using apt-get will save you some time in almost all packages in your feature list.
... and if you want even more customization, you can even try using vmbuilder .
vmbuilder is a script that automates the process of creating a ready-to-use VM based on Ubuntu. No need for a JeOS CD image. Currently supported hypervisors are KVM, Xen, and VMware.
Use a well-known distribution and âsplit it upâ
Install and separate some functions or create a small image in real time and use it.
Use Linux From Scratch (LFS) and build the system only with the necessary software
This is the most difficult question and you will spend a lot of time.
But you can have a really small distribution and understand how the Linux system works. Understanding how everything works, you can only install what is needed in your setup and use lighter executables such as Busybox .
There is an old project called Debian From Scratch (the last update since 2006, so I donât know how reliable it is) to run the same LFS, but using Debian.
(...) is a unique distribution that allows you to install a Debian system with almost the same level of control as what you get with Linux From installing Scratch, but with Debian Benefits (easy to upgrade and maintain).
You just want a complete Damn Small Linux solution
Well, you can try Damn Small Linux , it's only 50 MB and Debian Based, and I consider this the most famous minimal distribution ( you can check out more distributions on this list ). I just don't know how this will work in a web server development scenario.
Final tip
In all situations above, after configuration, save your virtual machine as standard for future use. Or better, use snapshots, each of which has slight differences that may occur with your installation (be careful, although managing too many snapshots can be a little cumbersome).
"I do not want to customize my own"
If for some reason you didnât like my approaches or I didnât have too much time to follow my advice (âcreate your own virtual machineâ), you can check this question on ServerFault . There is a list for a bunch of devices from different distributions.
... but if you are going to test a bunch of them to make sure they meet your needs, why not just use the time taken to create them?
Icing on the cake: use Vagrant to control vms.
Vagrant is a tool for creating and distributing virtualized development environments.
By providing the automatic creation and provision of virtual machines using Oracles VirtualBox, Vagrant provides tools to create and configure lightweight, reproducible and portable virtual environments.
This means that Vagrant helps you automate a lot of things that you usually do when creating a new virtual machine (these functions are listed on the official website):
- Automatically create a virtual machine using Oracle VirtualBox
- Automatically provision virtual environments using Chef, Puppet, or just shell scripts
- Full SSH access for created environments
- Assign a static IP address for your virtual machine, accessible from your computer.
- Forward ports to host
- Shared folders allow you to continue using your own editor.
- Batch environments in redistributable boxes
- Tear down the environment completely when you are done
- Easily rebuild a complete environment with a single command
I would create vm with the same configuration (well, almost the same) as my production server, so some platform issues will not appear only during deployment.