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.
How to Quickly Switch the Apache2 VirtualHost
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