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

 

Как настроить виртуальные хосты в 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>

Файл настроек apache2.conf

Опять же, не забываем заменить 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

Редактируем файл hosts

Сохраняем изменения

Можем проверить результат нашей работы. Набираем в браузере адрес нашего сайта — 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 нужно будет подставлять папку нового сайта.

Ну вот и все по этому вопросу. Вроде бы ничего сложного, но может показаться все так запутанно. Если не можете в чем — то разобраться, пишите в комментарии. Постараюсь помочь.

 

комментариев 10

  1. Анатолий 19/08/2015 at 14:44

    Выдает ошибку 403 Forbidden
    You don’t have permission to access / on this server.
    Не могу победить 🙁

     
    • Master 19/08/2015 at 22:32

      После чего именно ошибка появляется? Я несколько раз настраивал этим способом, все работало.

       
    • Master 19/08/2015 at 22:33

      Вы права на каталоги изменили?

       
  2. Rubik 12/10/2015 at 23:16

    Not Found

    The requested URL /test.com/ was not found on this server.

     
  3. Владимир 12/10/2015 at 23:26

    На каком шаге получаете ошибку? Поверьте ещё раз файлы конфигурации виртуального хоста и пути к тестовой сайту.

     
  4. Olga 06/03/2016 at 22:47

    Добавляем «SerwerName testsite.loc» => Добавляем «ServerName testsite.loc»

     
  5. Сергей 16/08/2016 at 20:12

    Спасибо за статью! Получаю ошибку 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

     
  6. Chink 01/09/2016 at 21:28

    у кого не работает «sudo a2ensite testsite.loc» (выдает site does not exist) делайте так:
    «sudo a2ensite testsite.conf»

     
  7. Михаил 29/11/2016 at 01:15

    Здравствуйте. У меня что то пошло не так.
    Когда ввожу адрес testsite.loc, то в браузер показывает страницу-заглушку Apache. Почему то он думает будто вместо адреса сайта я ввожу localhost

     
  8. Дмитрий 26/01/2017 at 06:15

    Здравствуйте ! Спасибо, очень познавательно. А как сделать что бы apache, MySQL и phpMyadmin не запускались с загрузкой системы ? И кстати даже после принудительной остановки, набираю в адресной строке http://localhost/ или http://localhost/phpmyadmin/ , то всё равно открываются страницы. Почему так и как это можно исправить ? Мне НЕ нужен постоянно запущенный сервер. И уж тем более НЕ нужно чтоб запускался при загрузке системы.

     

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

 

 
Top