Настройка хостов на Ubuntu 18.04

Добавляем себя в группу www-data

sudo usermod -G www-data ivan

Для создания нового хоста можно создать файл create-host.sh:

#!/bin/sh

# Получаем нужные данные
echo "Введите имя домена:"
read domen
echo "Введите название публичной директории:"
read pubdir

# Создаем директорию хоста
mkdir -p /var/www/$domen/$pubdir
chown -R $USER:$USER /var/www/$domen

# Создаем тестовый index.html
echo "<html>" > /var/www/$domen/$pubdir/index.html
echo " <head>" >> /var/www/$domen/$pubdir/index.html
echo "    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" >> /var/www/$domen/$pubdir/index.html
echo " <title>$domen</title>" >> /var/www/$domen/$pubdir/index.html
echo " </head>" >> /var/www/$domen/$pubdir/index.html
echo " <body>" >> /var/www/$domen/$pubdir/index.html
echo " <h1>Работает! Виртуальный хост $domen настроен правильно!</h1>" >> /var/www/$domen/$pubdir/index.html
echo " </body>" >> /var/www/$domen/$pubdir/index.html
echo "</html>" >> /var/www/$domen/$pubdir/index.html

# Создаем конфигурационный файл хоста
echo "<VirtualHost *:80>" > /etc/apache2/sites-available/$domen.conf
echo " ServerAdmin shkuta85@gmail.com" >> /etc/apache2/sites-available/$domen.conf
echo " ServerName $domen" >> /etc/apache2/sites-available/$domen.conf
echo " ServerAlias www.$domen" >> /etc/apache2/sites-available/$domen.conf
echo " DocumentRoot /var/www/$domen/$pubdir" >> /etc/apache2/sites-available/$domen.conf
echo " ErrorLog ${APACHE_LOG_DIR}/error.log" >> /etc/apache2/sites-available/$domen.conf
echo " CustomLog ${APACHE_LOG_DIR}/access.log combined" >> /etc/apache2/sites-available/$domen.conf
echo "</VirtualHost>" >> /etc/apache2/sites-available/$domen.conf

# Включаем хост
a2ensite $domen.conf

# Отключаем дефолтный хост
a2dissite 000-default.conf

# Добавляем созданный хост в hosts
echo "127.0.0.1 $domen" >> /etc/hosts

# Перезагружаем сервер
sudo systemctl restart apache2
# sudo service apache2 restart