LAMP в Ubuntu: виртуальные хосты.
В завершающей статье из цикла LAMP я расскажу о виртуальных хостах. Мы свяжем выбранное доменное имя с директорией, в которой хранится отдельный сайт. Кроме того, мы зададим отдельные файлы логов для этого хоста.

Подготовка директорий для виртуальных хостов.

Apache способен одновременно обслуживать столько сайтов, сколько необходимо, лишь бы ресурсов сервера было достаточно. Эту возможность используют:

  • shared-хостинги (самая доступная разновидность хостингов);
  • владельцы нескольких сайтов, размещающие их на одном виртуальном или физическом сервере;
  • разработчики, работающие локально с несколькими проектами.

Для начала создадим в коревой директории сервера папку для нашего нового сайта:

sudo mkdir /var/www/html/site.com/public_html

В качестве примера я выбрал site.com. Вы можете заменить его на доменное имя своего сайта или любое другое имя, если доступ извне не требуется. Директория public_html не обязательна, контент сайта можно хранить и уровнем выше, но такая структура позволяет размещать в папке проекта данные, которые не должны быть доступны пользователям — логи, например.

Для удобства передадим права на корневую директорию своему пользователю:

sudo chown -R имя_пользователя /var/www/html

Далее помещаем файлы сайта в ранее созданную папку public_html.

Настраиваем виртуальные хосты.

Теперь нужно создать конфигурационный файл для нашего хоста. Он имеет тот же синтаксис, что и apache2.conf и .htaccess, о которых я рассказывал в прошлой статье. Один такой файл уже находится в директории /etc/apache2/sites-available с названием 000-default.conf. Просто скопируем его сюда же, назначив ему в качестве названия имя нашего хоста и прибавим .conf в конце:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site.com.conf

Откроем созданный нами файл:

sudo gedit /etc/apache2/sites-available/site.com.conf

Здесь нам нужно определить имя виртуального хоста и его корневую директорию:

ServerName site.com
DocumentRoot /var/www/html/site.com/public_html

Настраиваем виртуальные хосты

При желании можно указать e-mail администратора (ServerAdmin), дополнительные имена, по которым будет доступен сайт (ServerAlias), а также добавить свои директивы. Полный список и описания есть в документации Apache.

Если у вас нет зарегистрированного доменного имени или оно не привязано к ip сервера, свяжем их на локальном уровне. Для этого откроем файл /etc/hosts и добавим туда следующее:

127.0.0.1 site.com

Настраиваем виртуальные хосты

Теперь, набрав в адресной строке браузера site.com, мы будем перенаправлены на 127.0.0.1, то есть, на свой же компьютер.

Если сайт находится на удаленном сервере, а не на домашнем компьютере, вместо 127.0.0.1 нужно будет вписать ip сервера. Но даже в этом случае файл hosts нужно править на локальной машине, а не на удаленной.

Остались последние штрихи. Нужно включить виртуальный хост и перезапустить apache:

sudo a2ensite site.com.conf  
sudo systemctl restart apache2

После этого по адресу site.com будут доступны файлы, лежащие в

/var/www/html/site.com/public_html.

Настраиваем виртуальные хосты

Для создания еще одного виртуального хоста повторите процедуру.

Отдельные логи для виртуальных хостов.

Для удобства мы можем настроить запись логов каждого виртуального хоста в свой отдельный файл. Укажем расположение лога ошибок Apache, установив в конфиге хоста (в нашем случае это /etc/apache2/sites-available/site.com.conf) соответствующую директиву:

ErrorLog /var/www/html/site.com/logs/apache_err.log

Тут же определяем и общий лог хоста:

CustomLog /var/www/html/site.com/logs/apache_custom.log common

Дополнительный параметр common после имени файла определяет формат лога, но я не буду останавливаться на этом вопросе.

Поскольку мы еще не успели создать директорию, в которой планируем хранить логи, сделаем это сейчас:

mkdir /var/www/html/site.com/logs

Пришло время перезапустить сервер и проверить содержимое папки с логами:

ls /var/www/html/site.com/logs

Вот что получилось в моем случае:

Отдельные логи для виртуальных хостов

А вот содержимое apache_custom.log после того, как я открыл в браузере site.com:

Отдельные логи для виртуальных хостов

Эта запись говорит о том, кто, когда, откуда и каким образом получал доступ к сайту. Кстати, для отслеживания статистики посещений совсем не обязательно читать сырые логи. Существуют разнообразные системы, обрабатывающие эти записи и представляющие статистику в удобной и наглядной форме.

P.S.

Так как просмотров статей из данной серии было очень мало, больше материала про LAMP в ближайшее время не предвидится.


Комментарии отключены