Multiple Websites & Shared Folders With VirtualBox On Windows 7 Host
If you havent already set up your virtual machine, you may want to check out our guide on setting up an Ubuntu LAMP server running on VirtualBox.
This short guide will show you how to set up multiple websites to run from your development server and have the websites shared from your Windows host machine. This will allow you to work on your files and view them in your preferred browser on your host machine before uploading them to your live server.
Setting Up Available Sites
The default location for your websites on the Apache server is in /var/www/. You should create a folder for each of your websites using the Terminal like so:
sudo mkdir /var/www/newsite sudo mkdir /var/www/newsite2 sudo mkdir /var/www/newsite3
For each website you then need to set up a virtual host configuration file. Copy the default configuration file and edit it for your new website as outlined in the Ubuntu server guide:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/newsite
Edit the new file:
sudo gedit /etc/apache2/sites-available/newsite
The file should look like this:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory <"/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined Alias /doc/ "usr/share/doc/" <Directory "usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </VirtualHost>
You can delete this section:
<Directory /> Options FollowSymLinks AllowOverride None </Directory>
In between the ServerAdmin and DocumentRoot lines define a ServerName for your new site, also change the DocumentRoot to match the folder for the site:
ServerAdmin webmaster@localhost ServerName newsite DocumentRoot /var/www/newsite
Change Directory /var/www to:
<Directory /var/www/newsite>
Next if you are going to want to use an .htaccess file with your website you need to change the AllowOverride None on the Directory /var/www/newsite to:
AllowOverride All
Save and close your new configuration file. Then you need to disable the default site:
sudo a2dissite default
And enable your new website:
sudo a2ensite newsite
If you need modrewrite to be enabled enter the following (otherwise you will see server errors):
sudo a2enmod rewrite
Restart Apache to apply the new settings:
sudo /etc/init.d/apache2 restart
Remember to create a virtual configuration file for each website you want on the server, then you can use a2ensite and a2dissite to switch between websites.
Setting Up Shared Folders From The Windows Host
Shut down your virtual machine, then in VirtualBox select your virtual machine and open up the settings. Go to the 'Shared Folders' options and create a share for each website you have on your Windows host machine. Set the path for each one and assign a unique folder name, the folder name will be the share name for that path. Once done start your virtual machine.
To link your shared folder with the Apache website folder you need to mount the folder like so, where 'newsite' is the share name and /var/www/newsite is its path on Apache:
sudo mount -t vboxsf newsite /var/www/newsite
If you load your server now on the Windows 7 host you can see your website working. Changes made while working in Windows can be seen after quick save and a refresh of your browser.
Note: You will need to mount the drive again if you shut down or restart Ubuntu.
Setting a Dev URL using the hosts file
If you set up your virtual machine to use a static IP as defined in my previous guide Ubuntu LAMP server running on VirtualBox, then you can use the windows host file to point the static IP to a short URL like http://dev/.
To do this open your windows host file in:
C:\Windows\System32\drivers\etc\
Add the following line at the bottom where the IP address is your static IP and 'dev' can be whatever you wish:
192.168.1.85 dev
You can then open http://dev/ in your browser (and bookmark) to see your currently active website.