Как настроить виртуальные хосты в 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 нужно будет подставлять папку нового сайта.

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

11 коментарів

  1. Анатолий :

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

    1. Master :

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

    2. Master :

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

  2. Rubik :

    Not Found

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

  3. Владимир :

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

  4. Olga :

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

  5. Сергей :

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

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

    1. Андрей :

      просто когда создаете файлик в sites-available
      создавайте его как testsite.loc.conf – тогда все заработает

  7. Михаил :

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

  8. Дмитрий :

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

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься.