Download_Link
Участник клуба
В завершающей статье из цикла LAMP я расскажу о виртуальных хостах. Мы свяжем выбранное доменное имя с директорией, в которой хранится отдельный сайт. Кроме того, мы зададим отдельные файлы логов для этого хоста.
Подготовка директорий для виртуальных хостов.
Apache способен одновременно обслуживать столько сайтов, сколько необходимо, лишь бы ресурсов сервера было достаточно. Эту возможность используют:
В качестве примера я выбрал site.com. Вы можете заменить его на доменное имя своего сайта или любое другое имя, если доступ извне не требуется. Директория public_html не обязательна, контент сайта можно хранить и уровнем выше, но такая структура позволяет размещать в папке проекта данные, которые не должны быть доступны пользователям — логи, например.
Для удобства передадим права на корневую директорию своему пользователю:
Далее помещаем файлы сайта в ранее созданную папку public_html.
Настраиваем виртуальные хосты.
Теперь нужно создать конфигурационный файл для нашего хоста. Он имеет тот же синтаксис, что и apache2.conf и .htaccess, о которых я рассказывал в прошлой статье. Один такой файл уже находится в директории /etc/apache2/sites-available с названием 000-default.conf. Просто скопируем его сюда же, назначив ему в качестве названия имя нашего хоста и прибавим .conf в конце:
Откроем созданный нами файл:
Здесь нам нужно определить имя виртуального хоста и его корневую директорию:
Настраиваем виртуальные хосты
При желании можно указать e-mail администратора (ServerAdmin), дополнительные имена, по которым будет доступен сайт (ServerAlias), а также добавить свои директивы. Полный список и описания есть в документации Apache.
Если у вас нет зарегистрированного доменного имени или оно не привязано к ip сервера, свяжем их на локальном уровне. Для этого откроем файл /etc/hosts и добавим туда следующее:
Настраиваем виртуальные хосты
Теперь, набрав в адресной строке браузера site.com, мы будем перенаправлены на 127.0.0.1, то есть, на свой же компьютер.
Если сайт находится на удаленном сервере, а не на домашнем компьютере, вместо 127.0.0.1 нужно будет вписать ip сервера. Но даже в этом случае файл hosts нужно править на локальной машине, а не на удаленной.
Остались последние штрихи. Нужно включить виртуальный хост и перезапустить apache:
После этого по адресу site.com будут доступны файлы, лежащие в
/var/www/html/site.com/public_html.
Настраиваем виртуальные хосты
Для создания еще одного виртуального хоста повторите процедуру.
Отдельные логи для виртуальных хостов.
Для удобства мы можем настроить запись логов каждого виртуального хоста в свой отдельный файл. Укажем расположение лога ошибок Apache, установив в конфиге хоста (в нашем случае это /etc/apache2/sites-available/site.com.conf) соответствующую директиву:
Тут же определяем и общий лог хоста:
Дополнительный параметр common после имени файла определяет формат лога, но я не буду останавливаться на этом вопросе.
Поскольку мы еще не успели создать директорию, в которой планируем хранить логи, сделаем это сейчас:
Пришло время перезапустить сервер и проверить содержимое папки с логами:
Вот что получилось в моем случае:
Отдельные логи для виртуальных хостов
А вот содержимое apache_custom.log после того, как я открыл в браузере site.com:
Отдельные логи для виртуальных хостов
Эта запись говорит о том, кто, когда, откуда и каким образом получал доступ к сайту. Кстати, для отслеживания статистики посещений совсем не обязательно читать сырые логи. Существуют разнообразные системы, обрабатывающие эти записи и представляющие статистику в удобной и наглядной форме.
Подготовка директорий для виртуальных хостов.
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.comDocumentRoot /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.confsudo 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:

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