If you’re just a little bit like me, then you’ll love working with only a single active VirtualHost on apache2. Since switching from one server to another needs a lot of Linux terminal commands, I’ve built a small bash script that will hopefully ease the process.

 

The script  that changes the active VirtualHost of an apache2 web server simply lists all available hosts from /etc/apache2/sites-avaliable/ and then politely asks you to pick the one you want to activate.

 

Then it removes all symbolic links from /etc/apache2/sites-enabled/ and enables the VirtualHost you so badly want.
But, enough talk. Here are the ‘echos’ and ‘sudos’ that will make your life easier:

#!/bin/bash
echo "--------------------------------"
echo "switching to a virtual host"
echo "--------------------------------"
echo "changing root dir"
cd "/etc/apache2/sites-available/"
sudo ls
echo -n "Pick the virtual host you want to switch to: "
read -e new_vh
if [ ! -f /etc/apache2/sites-available/$new_vh ]; then
for i in 1 2
do
        echo  '========'
        sudo ls
        echo -n "Pick the virtual host you want to switch to: "
        read -e new_vh
        if [ -f /etc/apache2/sites-available/$new_vh ]; then
           break
        fi

done
fi
if [ ! -f /etc/apache2/sites-available/$new_vh ]; then
   echo "you had your chance! I'm not doing anything!!!"
   exit
fi

echo "disable current host "
sudo rm -f /etc/apache2/sites-enabled/* &>/dev/null
echo "enable host $new_vh"
sudo a2ensite $new_vh &>/dev/null
echo "restart apache2"
sudo service apache2 restart