Для быстрого поднятия виртуального хоста на Apache2 я использую скрипт, который создает файловую структуру под новый хост, стартовую страницу, конфигурационный файл хоста, а затем перезагружает конфигурацию Apache2 и делает запись в файле /etc/hosts.

#!/bin/bash
echo -n "Введите имя создаваемого хоста: "
read newHost
echo -n "Введите e-mail администратора: "
read newEmail
sudo mkdir -p /var/www/$newHost/public_html
sudo chown -R $USER:$USER /var/www/$newHost/public_html
sudo chmod -R 777 /var/www/$newHost
demoPage=/var/www/$newHost/public_html/index.html
touch $demoPage
directives="
<html>
  <head>
    <title>Welcome to $newHost!</title>
  </head>
  <body>
    <h1>Welcome! New host $newHost is work!</h1>
  </body>
</html>"
echo "$directives">$demoPage
confFile=~/$newHost.conf
touch $confFile
directives="
<VirtualHost *:80>
    ServerName $newHost
    ServerAdmin $newEmail
    DocumentRoot /var/www/$newHost/public_html
    <Directory /var/www/$newHost/public_html>
     DirectoryIndex index.php
     AllowOverride All
     Order allow,deny
     Allow from all
    </Directory>
</VirtualHost>"
echo "$directives">$confFile
sudo mv $confFile /etc/apache2/sites-available/
sudo chown root:root /etc/apache2/sites-available/$newHost.conf
sudo a2ensite $newHost
sudo service apache2 reload
file="/etc/hosts"
b=$(cat $file)
newContent="127.0.0.1 ${newHost}"$'\n'$b
sudo bash -c "echo '${newContent}' > $file"