Настройка Apache2 на Ubuntu, VirtualHosts, ServerName

Ну вот и дошла пора более серьезно заняться настройкой своего Apache сервера на рабочей машине.

Так как на моем компе установлена Ubuntu Linux, а установка приложений с помощью менеджера пакетов Synaptic — сплошное удовольствие, то получилось так, что я установил с его помощью Apache и мне хватало его дефолтных установок. Но захотелось мне навести красоту, разместить несколько веб-сайтов и иметь к ним доступ по разным доменным именам.

Итак, имеем задачу:

Настроить несколько веб-сайтов, на локальном сервере Apache2, установленного на рабочей машине с Ubuntu Linux, и чтобы доступ к ним был по адресам, например таким:

  • 1й сайт — www.test1.my и test1.my
  • 2й сайт — www.test2.my и test2.my

и так далее, в том же духе.

При попытке привести все к красоте, возникло несколько интересных ошибок, которые, надеюсь нелишне описать.

Итак, первое, в Ubuntu состав директории /etc/apache2 немного отличается от привычных директорий настройки Apache в Unix-подобных системах.

1
2
3
4
5
6
7
8
9
conf.d/
sites-available/
sites-enabled/
mods-available/
mods-enabled/
apache2.conf
envvars
httpd.conf
ports.conf

В Ubuntu основным файлом настройки Apache2 является не httpd.conf, а apache2.conf, но тут он играет роль системного файла, в котором собраны основные и самые важные настройки сервера.

А вот файл httpd.conf — пустой и предназначен для добавления дополнительных настроек, он включен в основной файл настройки apache2.conf

В файле envvars описаны переменные среды, необходимые для функционирования Apache-сервера.

В ports.conf вынесены настройки портов на которые можно будет подключиться к серверу или конкретному сайту на нем.

В папке conf.d находятся дополнительные конфигурационные файлы.

Для описания всех доступных сайтов используется папка sites-available в которой расположены файлы с описанием виртуальных хостов — VirtualHosts, опубликованные же сайты находятся в папке sites-enabled в виде ссылок на файлы доступных сайтов из папки sites-available.

Таким же образом в папках mods-available и mods-enabled настраивается доступность модулей используемых сервером.

Разобравшись со структурой файлов и папок, уже можно приступать к настройке. Первым делом создаем новый файл в папке sites-available, с именем хоста, так будет понятнее при просмотре директории.

1
#sudo touch test1.my

после этого с помощью любого доступного текстового редактора добавляем в этот файл следующие строки

1
2
3
4
5
<VirtualHost *:80>
ServerName test1
ServerAlias test1.my www.test1.my
DocumentRoot /var/www/test1.my/www
</VirtualHost>

таким образом можно создать необходимое колличество виртуальных хостов и направить их в нужные директории на винчестере.

Теперь необходимо как-то научить нашу операционную систему распознавать домен .my. Для этого достаточно прописать необходимые строки в файле /etc/hosts, например так:

1
127.0.0.1    test1.my        www.test1.my

Так, теперь мы имеем настройку сайта как виртуального хоста (VirtualHost), имеем настроенный доменный адрес, но сайт еще не доступен для просмотра в браузере. А почему? А потому, что для начала необходимо разместить ссылку на VirtualHost в папку sites-enabled, и перечитать конфигурацию сервера Apache. Для создания ссылки можно выполнить такую команду:

1
#sudo a2ensite /etc/apache2/sites-available/test1.my

и перечитаем параметры:

1
#sudo /etc/init.d/apache2 reload

приведеная команда, перечитает параметры настройки сервера без его перезагрузки.

И вот тут мы столкнемся со второй неприятностью, не критической, но неприятной. После перечитки параметров будет выведено информационное сообщение:

Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

Что-то некрасиво получается, зачем нам такое. Но, мы помним, что у нас есть файл httpd.conf в котором желательно прописывать дополнительные настройки. Итак, открываем этот файл в текстовом редакторе, не забываем, что это надо делать с правами суперпользователя, и прописываем туда такую строчку

1
ServerName имя_вашего_сервера

сохраняем, закрываем файл и перечитываем параметры настройки:

1
#sudo /etc/init.d/apache2 reload

Сообщение пропало и теперь мы имеем красиво настроенный веб-сервер Apache. Сейчас для добавления новых сайтов достаточно создать файл виртуального хоста, вписать в него параметры настройки для хоста, добавить его в видимые хосты и перечитать параметры. Вот так вот, оказывается, все просто делается в нелегком админском деле.

Больше инфы см. в оригинале  на Генеральском чае – http://generaltea.ru/apache2-ubuntu-virtualhosts-servername/

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