Как настроить виртуальные хосты в Ubuntu или Debian

В прошлой статье про установку LAMP я говорил, что напишу про то как настроить виртуальные хосты в Ubuntu и изменить каталог для размещения сайтов. Ну вот, пишу.
В интернете много написано о виртуальных хостах и о том, как их настроить. Но где-то информация устаревшая, где то на половину рабочая. В итоге процедура, которая занимает от силы пять минут, растягивается на несколько часов. У меня та было. Поэтому, для того, чтобы снова не тратить много времени в следующий раз, когда мне это понадобится я и пишу эту статью.
Настройка корневого каталога для сайтов
По умолчанию Apache ищет интернет страницы в /var/www/html. Но для пользователя это может быть неудобно. Поэтому при желании корневой каталог можно сменить. Я например, для своих сайтов буду использовать папку public_html в домашнем каталоге. Кроме того, я сразу же создам папку для тестового сайта testsite.loc и непосредственно папку, в которой будут находится файлы сайта www. То есть нужно создать такую структуру каталогов: /public_html/testsite.loc/www/. Можно сделать это через файловый менеджер, можно через терминал:
mkdir -p public_html/testsite.loc/www
Сразу создаем простую тестовую страницу index.html
Б
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Настройка виртуальных хостов</title> </head <body <h1>Привет!!</h1> </body </html
И сохраняем ее в папку www.
Теперь редактируем файл виртуального хоста 000-default.conf, чтобы указать Apache где мы теперь размещаем сайты:
sudo gedit /etc/apache2/sites-available/000-default.conf
В открывшимся файле находим строчку, которая начинается с DocumentRoot и меняем путь на новый: /home/user/public_html/. Где user – ваше имя пользователя.
Сохраняем файл и закрываем редактор.
Внесем изменения в файл настроек apache2.conf:
sudo gedit /etc/apache2/apache2.conf
Добавляем в открывшийся файл такой блок:
<Directory /home/user/public_html/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
Опять же, не забываем заменить user на свое имя пользователя. Сохраняем файл.
Настройка виртуального хоста
Создаем файл конфигурации нового хоста. Для этого скопируем стандартный файл 000-default.conf и переименуем его на testsite.conf:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/testsite.conf
Теперь отредактируем его:
sudo gedit /etc/apache2/sites-available/testsite.conf
Для удобства можно удалить все закомментированные строки (которые начинаются с #)
Добавляем “ServerName testsite.loc”
Добавляем “ServerAlias www.testsite.loc”
В DocumentRoot указываем путь к каталогу с файлами сайта.
Сохраняем изменения.
И включаем сайт:
sudo a2ensite testsite.conf
Перезагружаем Apache:
service apache2 reload
Файл hosts
Для того, чтобы перенаправлять запросы браузера на наш сервер. Отредактируем файл hosts:
sudo gedit /etc/hosts
В первой строке через пробел, рядом с localhost дописываем домены нашего сайта testsite.loc и www.testsite.loc
Сохраняем изменения
Можем проверить результат нашей работы. Набираем в браузере адрес нашего сайта – testsite.loc.
Все работает.
Права на папки
Сервер Apache работает от группы и пользователя www-data. В домашнем каталоге же, владелец файлов текущий пользователь. Поэтому, чтобы не возникало проблем, нужно на файлы и папки внутри public_html и на ее саму изменить права. Для этого вводим в терминале:
sudo chown user:www-data -R public_html
user – ваше имя пользователя
Теперь добавляем себя в группу www-data:
sudo adduser user www-data
И на всякий случай разрешаем чтение и редактирование файлов владельцу и группе:
chmod -R 775 public_html
Первую и третью команды нужно будет выполнять после каждого добавления нового сайта. Только вместо public_htm нужно будет подставлять папку нового сайта.
Ну вот и все по этому вопросу. Вроде бы ничего сложного, но может показаться все так запутанно. Если не можете в чем – то разобраться, пишите в комментарии. Постараюсь помочь.
Выдает ошибку 403 Forbidden
You don’t have permission to access / on this server.
Не могу победить 🙁
После чего именно ошибка появляется? Я несколько раз настраивал этим способом, все работало.
Вы права на каталоги изменили?
Not Found
The requested URL /test.com/ was not found on this server.
На каком шаге получаете ошибку? Поверьте ещё раз файлы конфигурации виртуального хоста и пути к тестовой сайту.
Добавляем «SerwerName testsite.loc» => Добавляем «ServerName testsite.loc»
Спасибо за статью! Получаю ошибку Forbidden. You don’t have permission to acces / on this server. Дело в том что папка с сайтами у меня находится на локальном диске D.
Полный путь: /media/xman/Disc D/YandexDisk/wamp/www.
Так как в путь содержится пробел Disc D то я взял его в кавычки. Но полюбому получаю эту ошибку.
Сделал как по инструкции:
– sudo chown xman:www-data -R /media/xman/Disc\ D/YandexDisk/wamp/www
– sudo adduser xman www-data
– chmod -R 775 /media/xman/Disc\ D/YandexDisk/wamp/www
у кого не работает “sudo a2ensite testsite.loc” (выдает site does not exist) делайте так:
“sudo a2ensite testsite.conf”
просто когда создаете файлик в sites-available
создавайте его как testsite.loc.conf – тогда все заработает
Здравствуйте. У меня что то пошло не так.
Когда ввожу адрес testsite.loc, то в браузер показывает страницу-заглушку Apache. Почему то он думает будто вместо адреса сайта я ввожу localhost
Здравствуйте ! Спасибо, очень познавательно. А как сделать что бы apache, MySQL и phpMyadmin не запускались с загрузкой системы ? И кстати даже после принудительной остановки, набираю в адресной строке http://localhost/ или http://localhost/phpmyadmin/ , то всё равно открываются страницы. Почему так и как это можно исправить ? Мне НЕ нужен постоянно запущенный сервер. И уж тем более НЕ нужно чтоб запускался при загрузке системы.