Forum archive
LAMP and VirtualBox 4 Shared Folders
I am using the following setup to test various sites on different computers using a single external disk. This allows me to not only ferry the data around (10 GB) between different computers with very different operating systems, I also decoupled the data from the VMs for easy portability and to keep the VMs small. I have had virtual machines crash, lockup and burn with strange errors, especially when moving them around with tons of data. This way, my data stays safe on my external RAID box and the VMs act as pure application containers. If one dies, I replace with another real easily. This has worked successfully with different Turnkey versions and through various OS upgrades. The steps below take all of 20 minutes from install to application goodness.
- Install Turnkey LAMP, etc using ISO in VirtualBox (4.02, in my case).
- Set networking to Host-only Adapter to create a private network between host and guest. Actually, it's best to set the networking to bridged to get access to the outside world for downloads. Don't type the stuff in parenthesis.
- prompt> ssh root@xxx.xxx.xxx.xxx
- VM shell> apt-get install aptitude (I like to use aptitude)
- VM shell> aptitude install bzip2
- VM shell> aptitude install dkms (http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support)
- VM shell> aptitude install build-essential linux-headers-`uname -r` (headers for current kernel)
- VirtualBox Devices menu -> Install Guest Additions...
- VM shell> mkdir /media/cdrom (had to do this for Turnkey 11 due to bug in Ubuntu)
- VM shell> mount /dev/cdrom /media/cdrom (mount VirtualBox iso in /media/cdrom)
- VM shell> cd /media/cdrom
- VM shell> ./VBoxLinuxAdditions.run (ignore error about Window System driver failure)
- Add a shared folder using VirtualBox Devices menu; keep track of Shared Folder name. In my case, I shared a folder from my external SATA disk.
- VM shell> mkdir /var/shares/share_name (replace share_name with actual shared folder name)
- VM shell> mount -t vboxsf share_name /var/shares/share_name (attach share to filesystem in VM at location /var/shares/share_name, ad infinitum)
- From here, it's easy to edit the config files--Apache, etc--to link to the shared folder for a website
- As easy way is to copy the default file in /etc/apache2/sites-available so that its configuation can be used as starting point; delete the 000-default link in /etc/apache2/sites-enabled; create a link to the copy of the default file.
- VM shell> cp /etc/apache2/sites-enabled/default /etc/apache2/sites-enabled/default-x
- VM shell> rm /etc/apache2/sites-enabled/000-default
- VM shell> ln -s /etc/apache2/sites-available/default-x /etc/apache2/sites-enables/000-default
- VM shell> /etc/init.d/apache2 restart
- Step 15 can be automated, but I have found it easier to just type it in after I have plugged in the external disk.
I'm sure others may find this useful.