Cоздание виртуальных хостов apache. Виртуальные хосты Apache2, доступные из локальной сети Apache хост в виртуальной машине

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

Apache разделяет свои функциональные возможности и компоненты на отдельные части, которые могут быть настроены и сконфигурированы независимо друг от друга. Базовая часть, которая отвечает за отдельный сайт или домен называется виртуальным хостом (virtual host).

Эта система позволяет администратору использовать один сервер, чтобы раздавать несколько сайтов используя один интерфейс или IP. Это удобно для тех, кто хочет использовать один VPS для хранения нескольких сайтов.

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

В этом руководстве мы расскажем, как настроить виртуальные хосты в Apache на VPS с Ubuntu 14.04. В процессе вы узнаете, как отображать разный контент для разных пользователей в зависимости от того, какой домен они запрашивают.

Необходимые условия

Перед тем, как приступать, вам необходимо , как описано в шагах 1-4.

Также у вас должен быть установлен Apache, чтобы проделать описываемые ниже шаги. Если он еще не установлен, вы можете сделать это при помощи команды apt-get:

Sudo apt-get update sudo apt-get install apache2

После завершения этих шагов, мы можем начать настройку виртуальных хостов.

В этом руководстве мы создадим виртуальный хост для доменов example.com и test.com . Мы будет ссылаться на них в руководстве, однако вам следует заменить их на свои домены при настройке ваших виртуальных хостов.

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

Для доменов, используемых в этом руководстве, предположим, что IP-адрес нашего VPS 111.111.111.111 . В этом случае мы можем добавить следующие строки в конец файла hosts:

127.0.0.1 localhost 127.0.1.1 guest-desktop 111.111.111.111 example.com 111.111.111.111 test.com

В результате этого любые запросы к example.com и test.com с нашего компьютера будут перенаправляться на наш сервер по адресу 111.111.111.111 . Это удобно для проверки правильности настройки наших виртуальных хостов для случая, когда мы не являемся реальными владельцами этих доменных имен.

Сохраните и закройте файл.

Шаг 7 - Тестирование результатов

Теперь, когда ваши виртуальные хосты сконфигурированы, вы можете легко протестировать работоспособность, перейдя в браузере по ранее настроенным адресам:

Http://example.com

Вы должны увидеть похожую страницу:

Аналогично, вы можете зайти на вторую страницу:

Http://test.com

Вы увидите файл, созданный для второго сайта:

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

Еси вы вносили изменения в файл hosts на вашем локальном компьютере, теперь можете удалить добавленные строки, т.к. уже убедились в работоспособности конфигурации. Таким образом мы не будем хранить в файле “hosts” ненужные записи.

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

Заключение

Если вы следовали нашим инструкциям, теперь у вас должен быть один сервер, работающий с двумя разными доменными именами. Для добавления других виртуальных хостов следуйте инструкциям в этом руководстве.

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

В этой заметке речь пойдет о настройке виртуальных хостов Apache под Windows. Я расскажу, что такое виртуальные хосты и для чего они используются. Подробные иллюстрации прилагаются.

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

Итак, сначала нужно разобраться, что такое виртуальный хостинг:

Виртуальный хост инг – это технология, с помощью которой веб-сервер может на одном компьютере использовать несколько доменных имен.

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

Виртуальные хосты бывают 2-х видов:

  • виртуальные хосты, основанные на имени (name-based );
  • виртуальные хосты, основанные на IP адресе компьютера (ip-based ).

Мы будем использовать первый вариант – name-based виртуальные хосты.

Настройка виртуальных хостов Apache.

Чтобы настроить виртуальные хосты, мы должны дописать несколько строк текста в конфигурационный файл Apache. Почитать о том, где найти этот файл и про описание его синтаксиса можно в заметке про настройку PHP как модуля Apache .

Открываем этот файл в блокноте. Ищем и удаляем комментарий вначале строки, как показано ниже:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Эта строка подключает настройки, которые описаны в файле conf/extra/httpd-vhosts.conf .

Синтаксис для создания name-based виртуального хоста :


DocumentRoot путь к сайту
ServerName название сайта

В файле vhosts находятся примеры. Они нам не нужны. Просто удаляем их и заменяем тест на следующий:

#
# Virtual Hosts
#
# Здесь можно подробней почитать о тонкой настройке виртуальных хостов
#
#

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

# Здесь прописываем путь к файлам сайта (DocumentRoot) и имя хоста (ServerName)

DocumentRoot с:/www/test
ServerName test

Теперь создайте на диске C: папку www и в ней папку test . Обратите внимание, что в Windows используются обратные слэши, а в конфигурационном файле прямые /.

Теперь необходимо перезагрузить Apache , чтобы настройки вступили в силу.

Следующим шагом мы должны должны известить Windows о созданных виртуальных хостах. Для этого найдите файлC:/Windows/system32/drivers/etc/hosts . Открываем его с помощью обычного блокнота и дописывает туда следующую строку:

127.0.0.1 – это IP адрес вашего комьютера. Этой строкой мы дали знать Windows, что на этом IP адресе находится сайт test .

Если вы создадите, например, еще один виртуальный хост, то дописываем еще одну строку:

127.0.0.1 имя вашего виртуального хоста

Теперь нужно проверить, правильность настройки. Для этого создадим в папке с:/www/test файл index.php и напишем там такой код:

Пишем в браузере URL http://test . Если вы все сделали правильно, то увидете что-то вроде:

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

Для пояснения процесса создания сайта внутри домашнего компьютера.

Наверно, стоит напомнить читателям - как устроен Интернет. Сайты на жестких дисках у провайдера или на домашнем компьютере - это папки для размещения материала сайта и внутренних программ. Все сайты (как папки) Интернета, аналогично и внутри компьютера, связаны средствами связи, но для того, чтобы эти папки стали сайтами нужно, (1) чтобы в сети работала программа сервер (даже внутри компа она должна создать среду Интернета) и (2) у пользователя на компьютере должна быть включена программа браузер , которая позволяет "видеть" сайты - потому что браузер, если знает адрес сайта в сети или домашнем компьютере, умеет заходить внутрь его папки, брать текст и картинки и "рисовать" их на экране монитора у посетителя сайта.

Программа сервер - это вроде операционной системы для всего Интернета , а браузер - это аналог программы Word, но только браузер умеет читать не документы, а сайты - как документы, написанные на языках HTML , PHP , PERL ...

Статья написана для пояснения статей в рубрике и имеет постоянную ссылку: http://сайт/page/nastrojka-virtualnyh-hostov

Создание виртуальных хостов

1.1. Мы уже знаем, что нет никакой разницы между сайтом designfornet на компьютере дома или сайтом сайт на сервере у хостера. Однако, если для перехода к сайту сайт достаточно вставить его имя в строку адреса браузера, как мы сразу попадаем на первую страницу моего сайта:

http://сайт/

А вот по ссылке http://designfornet/ этого не произойдет, хотя сам сайт существует. Причина в том, что любой браузер будет искать его в большом интернете. Для перехода на сайт designfornet потребуется более сложная ссылка вида

И это при условии запуска веб сервера XAMPP (ведь сервер для http://сайт/ где-то работает круглосуточно).

1.2. В тексте этой ссылки http://localhost/designfornet/www/ для браузера указан путь, какой ему надо преодолеть до папки www нашего сайта, где лежит страница index.html , из которой он вычитывает и рисует нам на экране приветствие «».

1.3. Я вижу противоречие в написаниях ссылок:

и

1.4. Весь секрет состоит в существовании специальных серверов DNS , в которых прописывают место расположения (IP ) каждого сайта в сети, что позволяет для нас - людей – указывать только короткую ссылку с понятными для человека словами , тогда как в действительности ссылка для самой программы браузера остается в виде ряд чисел. Для людей же составляются ЧПУ – человеко-понятные урлы. В тексте человеко-понятной ссылки http://сайт/ весь длинный путь от моего компьютера до сервера хостера и через его папки к папке сайта был спрятан, а указана лишь эта конечная папка сайт на физическом сервере, адрес которого был подсказан браузеру на DNS сервере.

1.5. Если мы хотим сделать интернет внутри компьютера копией Большого, то нам надо прописать наш домашний сайт designfornet в особом файле, который является аналогом сервера DNS и научиться сокращать вид ссылки до общепринятого вида:

http:// site .zona /

1.6. Тут настало время вспомнить, что основной программой в нашем компьютере является операционная система (у меня Windows 7). В ней уже предусмотрена возможность создания внутреннего сайта по имени localhost .

Для того чтобы в этом убедиться надо найти файл hosts (без расширения) по адресу:

1.7. Файл hosts - системный, поэтому при его открытии надо быть осторожным и лучше сразу для перестраховки сразу сохраним его копию в какой-нибудь папке.

Иногда система делает файл hosts невидимым. В этом случае вы должны иметь права администратора, чтобы в свойствах родительской папки etc убрать значение «скрытый» для всех внутренних файлов. Чтобы не искать каждый раз файл hosts заново создайте его ярлык на рабочем столе.

1.8. Если мы откроем файл hosts в текстовом редакторе (лучше в Notepad++ , но сегодня можно и в Блокноте ), то внизу увидим строки:

… # localhost name resolution is handled within DNS itself. #127.0.0.1 localhost #::1 localhost 127.0.0.1 localhost 127.0.0.1 www.localhost

Предложение «localhost name resolution is handled within DNS itself» переводится следующим образом: «резолюция имени localhost обработана в пределах самого DNS.»

1.9. Выражение из четырех групп чисел - 127.0.0.1 – это IP адрес для всех сайтов внутри компьютера, первым из которых заранее прописан сайт localhost .

Такая запись позволяет браузеру находить сайт localhos t по его адресу (IP =127.0.0.1 ) – то есть внутри компьютера.

Так как ниже есть строка:

127.0.0.1 www.localhost

то по аналогии мы предполагаем, что браузер будет искать www.localhost так же внутри компьютера. Для браузера сайты с именами localhost и www.localhost – это два разных сайта.

Нам еще предстоит сделать их зеркалами одного сайт, чтобы по обеим ссылкам браузер находил один сайт.

1.10. Наша задача повторить для своего сайта с именем designfornet всё, что сделано для сайта localhost , поэтому прописываем его в файле hosts , чтобы заставит браузеры так же искать его не в Большом Интернете, а внутри компьютера среди сайтов с IP =127.0.0.1 .

1.11. Для этого копируем отсюда следующие строки:

127.0.0.1 designfornet 127.0.0.1 www.designfornet

И подставляем их в окне текстового редактора в текст файла hosts под самые нижние строчки, чтобы получилось нечто подобное:

… # localhost name resolution is handled within DNS itself. #127.0.0.1 localhost #::1 localhost 127.0.0.1 localhost 127.0.0.1 www.localhost 127.0.0.1 designfornet 127.0.0.1 www.designfornet

1.12. Сохраняем изменения в файле hosts через редактор (там есть значок «Сохранить», как в Word), но сам файл hosts пока не закрываем, как и сам редактора.

Apache виртуальный хост

2.1. Следующим этапом настройки виртуальных хостов станет наладка взаимодействия сайта с модулем Apache , составляющим ядро вебсервера XAMPP.

Вначале надо внести поправки в главный конфигурационный файл сервера apache httpd conf , который находится по адресу C:\xampp\apache\conf .

2.2. Возьмем файл httpd.conf для редактирования в текстовый редактор и найдем в нем две строки:

#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#Include «conf/extra/httpd-vhosts.conf» (намного ниже - и может быть уже без #)

Знаки # не позволяют выполняться этим инструкциям, поэтому раскомментируем их – т.е. уберем все решетки # перед этими фразами.

Вторая строка включает (запускает) файл httpd-vhosts.conf , который отвечает за виртуальные хосты .

В файле httpd.conf эти две строчки должны быть без решеток, поэтому их просто убираем:

LoadModule vhost_alias_module modules/mod_vhost_alias.so Include «conf/extra/httpd-vhosts.conf»

Сохраняем изменения в файле httpd.conf .

2.3. Теперь перейдем к файлу httpd-vhosts.conf по адресу C:\xampp\apache\conf\extra

Возьмем файл httpd-vhosts.conf в текстовом редакторе. Понятно, что здесь находятся записи о виртуальных хостах.

Теперь нам надо дописать (вставить снизу) под имеющиеся строки скрипт, который мы скопируем из нижнего параграфа

NameVirtualHost *:80 DocumentRoot "C:\xampp\htdocs" ServerName localhost

Обратите внимание, что в некоторых версиях в коде могут использоваться одинарные английские кавычки (’), типа «DocumentRoot "C:\xampp\htdocs"», тогда вам самим придется исправлять наш скрипт под ваш httpd-vhosts.conf.

2.4. Для любознательных я расшифрую строки скрипта. Там речь идет типа этого:

Будет создан виртуальный сервер на порту 80, документы администратора root сервера будут располагаться в папке htdocs, создается почтовый ящик с именем webmaster@localhost;

2.5. Сохраняем изменения в файле httpd-vhosts.conf . Закрываем файлы httpd-vhosts.conf и httpd.conf .

Сервер Apache воспримет новые установки, только если мы его перезагрузим. Откроем Контрольную панель XAMPP и кнопкой Stop остановим работу Apache . Через некоторое время запустим его снова кнопкой Start .

2.6. Следующий шаг – проверяем, будут ли теперь работать короткие ссылки designfornet и www.designfornet в браузер. Копируем ссылки по очереди отсюда и вставляем в строку адреса браузера Mozilla Firefox.

Можно проверить и другие браузеры, однако Google Chrome может игнорировать локальные хосты.

Если мы сделали все аккуратно, то по любой ссылке http://designfornet/ или http://www.designfornet/ будет открываться один и тот же сайт designfornet на странице с приветствием «Это домашний сайт designfornet. Ура! ».

2.7. Сделаем небольшие выводы из нашего урока по созданию виртуальных хостов.

В системе Windows имеется специальный файл hosts в котором можно записать в виде исключения домашние сайты, тогда браузеры не будет искать их в Большом Интернете. Такой файл выполняет роль DNS сервера, который знает картографию сайтов в Интернете.

В программе сервера Apache в главном конфигурационном файле httpd.conf требуется активировать возможность определения синонимов (псевдонимов) сайта (без и с www ) в тексте ссылок, тогда по разным ссылкам:

http://designfornet/

http://www.designfornet/

будет открываться одна и та же страница.

Страницы designfornet и www.designfornet называются зеркалами.

Как создать виртуальный хост

3.1. Для закрепления урока попробуем быстро создать виртуальные хосты для сайта с произвольным именем. Придумаем сайту имя, по-русски означающее «мой_сайт-2_на_локальном_компе » - my_site-2.local , отвечающее всем требованиями: из букв латинского языка с разрешенными знаками и даже с несуществующей зоной local.

3.2. Создадим для этого сайта папку в папке htdocs (C:\xampp ) внутри севера XAMPP и дадим ей имя my_site-2.local . Следом уже внутри папки my_site-2.local создаем две подпапки: logs с пустым текстовым документом error_log.txt и вторую подпапку - www с файлом index.html . В файл index.html запишем новое приветствие: «Это сайт my_site-2.local ».

3.3. Настроим Windows , чтобы она заставляла браузер искать сайт внутрь компьютера, если ссылка будет иметь вид my_site-2.local (или www.my_site-2.local ).

Для этого открываем системный файл hosts (C:\Windows\System32\drivers\etc ) и подписываем имя нашего сайта и его зеркало (псевдоним с www ) под самые нижние строки, как мы это делали для сайта designfornet :

127.0.0.1 designfornet 127.0.0.1 www.designfornet 127.0.0.1 my_site-2.local 127.0.0.1 www.my_site-2.local

3.4. Сохраняем изменения в файле hosts и переходим в папку XAMPP. Главный конфигурационный файл httpd.conf нам уже не нужен, поэтому открываем только файл httpd-vhosts.conf по адресу C:\xampp\apache\conf\extra . Копируем из окна редактора кусок скрипта, касающийся сайта designfornet и вставляем его в какой-нибудь документ – или Блокнот или даже Word :

ServerAdmin webmaster@localhost DocumentRoot "C:\xampp\htdocs\designfornet\www" ServerName designfornet ServerAlias www.designfornet ErrorLog "C:\xampp\htdocs\designfornet\logs\error_log" CustomLog "C:\xampp\htdocs\designfornet\logs\access.log" combined AllowOverride All Order allow,deny Allow from all

3.5. Понятно, что это нам надо для того, чтобы заменить слово designfornet на имя нового сайта my_site-2.local . После смены имен мы должны получить следующий скрипт:

ServerAdmin webmaster@localhost DocumentRoot "C:\xampp\htdocs\my_site-2.local\www" ServerName my_site-2.local ServerAlias www.my_site-2.local ErrorLog "C:\xampp\htdocs\my_site-2.local\logs\error_log" CustomLog "C:\xampp\htdocs\my_site-2.local\logs\access.log" combined AllowOverride All Order allow,deny Allow from all

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

3.6. Вернем (подставим) этот текст снизу в файл httpd.conf и сохраним изменения в текстовом редакторе. В результате получим для сайта my_site-2.local секцию в файле httpd.conf , аналогичную секции, посвященной сайту designfornet .

3.7. Останавливаем через Контрольную панель XAMPP модуль Apache и запускаем снова кнопкой «Start », чтобы наши изменения вступили в силу.

3.8. Вставляем поочередно ссылки my_site-2.local и www.my_site-2.local в браузер. Если все было сделано без ошибок, то ссылки http://my_site-2.local и http://www.my_site-2.local будут вести на одну и туже страницу с приветствием «Это сайт my_site-2.local ».

Я надеюсь, что теперь ни у кого не будет трудностей с созданием сайта на вебсервере XAMPP и настройках виртуальных хостов.

Вы можете еще потренироваться в создании сайтов, например, с именем site3.home .

Я думаю что можно сделать даже небольшое обобщение по принципам устройства интернета .

Главной программой интернета является программа браузер, которую мы заставляем искать сайт, если укажем его в строке адреса. Сама она не знает, где лежит запрашиваемый сайт, поэтому вначале спрашивает у системы windows (в файле hosts ) – нет ли внутренних сайтов, как наши. Если сайта нет в списке, то браузер обращается на DNS сервер в Интернете, которые знают картографию сайтов в сети. Получив от DNS серверa адрес сайта браузер переходит на тот физический сервер, где лежит папка сайта и активирует серверные программы. Они выдают ему одну и туже страницу, даже при наличии в ссылке псевдонимов (без и с www).

Настройка виртуальных хостов – это лишь создание коротких и понятных для людей ссылок.

Веб-сервер Apache является наиболее популярным способом размещения веб-контента в Интернете. Более половины всех активных сайтов во всем мире используют именно его, так как Apache это крайне мощный и гибкий инструмент размещения веб-контента.

Apache разбит на отдельные блоки, каждый из которых отвечает за свою конкретную задачу и может быть настроен независимо от остальных блоков. Базовый блок, отвечающий за организацию использования доменов на вашем сервере, называется virtual host .

Virtual host позволяет администратору размещать несколько доменов или сайтов на одном сервере и одном ip-адресе. Это актуально для тех, кто желает размещать несколько сайтов на одном VPS.

Каждому домену, который вы настроите, будет присвоена своя отдельная директория на вашем сервере и посетители, попавшие на ваш сайт через разные домены, никогда не пересекутся и даже не будут знать, что на этом ip-адресе размещаются какие-либо другие сайты. Данная схема может включать неограниченное количество доменов, поддоменов и сайтов на них, возможности ограничены лишь мощностью железа, на котором установлен Apache.

В этой статье вы научитесь настраивать Virtual hosts в системе Ubuntu 16.04 и предоставлять разным пользователям различное содержимое, в зависимости от домена, который они указали в адресной строке.

Подготовка

Прежде чем начать выполнять действия, описанные в этой статье, крайне рекомендуется создать пользователя с Root-привилегиями, если вы этого еще не сделали. Как это сделать вы можете прочитать в этой статье , выполнив шаги №1-4.

Кроме того, у вас должен быть установлен веб-сервер Apache2. Если вы этого еще не сделали, установите его выполнением следующих команд:

Sudo apt-get update sudo apt-get install apache2

После выполнения вышеперечисленных шагов, мы можем начинать.

Для наглядности, в данном руководстве будут созданы виртуальные хосты для доменов example.com и test.com . В процессе всей статьи эти домены будут использованы во всех командах и конфигурационных файлах, когда же вы будете настраивать свой сервер, вы должны будете заменить эти два домена на те, что хотите использовать вы.

Если у вас еще нет доменов или вы какой-либо причине не хотите привязывать их к вашему VPS, в шестом шаге данного руководства есть инструкции, как можно эмулировать использование доменов при помощи файла hosts.

Шаг первый – Создаём дерево директорий

Первое, что вы должны сделать – это подготовить директории для ваших доменов. Корневая директория Apache находится по адресу /var/www и именно тут мы будем создавать каталоги для каждого из доменов, которые хотим использовать. В каждом из этих каталогов мы создадим папку public_html , где будем размещать файлы наших сайтов.

Для доменов, приведенных в качестве примера, команды на создание директорий будут выглядеть так:

Sudo mkdir -p /var/www/example.com /public_html sudo mkdir -p /var/www/test.com /public_html

Красным цветом выделены домены, которые вы собираетесь обслуживать при помощи вашего VPS.

Шаг второй – назначение прав доступа

Мы создали структуру каталогов для наших доменов, но на данном этапе доступ к этим каталогам есть только у root пользователя. Если мы хотим, чтобы обычный пользователь имел возможность изменять файлы, мы должны настроить права доступа, выполнив следующие команды:

Sudo chown -R $USER:$USER /var/www/example.com /public_html sudo chown -R $USER:$USER /var/www/test.com /public_html

Переменная $USER принимает значение имени пользователя, под которым вы сидите в данный момент, сразу после нажатия кнопки Enter. Таким образом, после выполнения данных команд владельцем директорий public_html , в которых вы будете хранить контент ваших сайтов, назначается наш текущий пользователь.

Помимо полного права доступа для текущего пользователя, вы должны быть убеждены что все ваши веб-папки открыты для чтения «для всех», это необходимо для корректной обработки запросов и отображения сайтов:

Sudo chmod -R 755 /var/www

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

Шаг третий – создание тестовых страниц для каждого виртуального хоста

Мы создали структуру директорий и настроили права на них. Пришло время размещать контент.
На данном этапе нам нужно будет лишь убедиться, что все правильно настроено и работает, поэтому ограничимся простенькими файлами index.html для каждого хоста.
Давайте начнем с example.com . Вы можете создать index.html и открыть его в текстовом редакторе, выполнив команду:

Nano /var/www/example.com /public_html/index.html

Внутри этого файла разместим небольшой html-код, благодаря которому сможем понять, что попали на нужный нам сайт. Например такой:

Добро пожаловать на Example.com !

Работает! Виртуальный хост example.com настроен правильно!

Сохраните и закройте файл.
Сделаем копию только что созданного файла, чтобы использовать её в качестве базы для аналогичного файла домена test.com:

Cp /var/www/example.com /public_html/index.html /var/www/test.com /public_html/index.html

Откроем копию файла и изменим в ней несколько значений:

Nano /var/www/test.com/public_html/index.html Добро пожаловать на Test.com !

Работает! Виртуальный хост test.com настроен правильно!

Сохраните и закройте файл. Теперь у нас есть страницы для проверки работы Виртуальных хостов.

Шаг четвёртый – создание конфигурационных файлов виртуальных хостов

Конфигурационные файлы виртуальных хостов – это такие файлы, в которых прописано, как должен вести себя Apache при запросах на различные домены.
По умолчанию в Apache уже существует один такой файл – 000-default.conf , мы можем воспользоваться им в качестве образца и отправной точки.
Нам предстоит скопировать 000-default.conf для первого домена, настроить его под наши нужды, после чего скопировать уже измененный файл и настроить его под второй домен, внеся небольшие поправки. Стоит отметить, что все названия конфигурационных файлов виртуальных хостов в Ubuntu должны заканчиваться на.conf

Создадим первый конфигурационный файл

Начнем с копирования файла 000-default.conf для нашего первого домена:

Sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com .conf

Откройте новый файл в текстовом редакторе с привилегиями root пользователя:

Sudo nano /etc/apache2/sites-available/example.com .conf

Вы должны увидеть приблизительно следующую картину (комментарии удалены из файла для повышения наглядности):

ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Как вы можете видеть, структура конфига довольно проста. Мы изменим несколько параметров, а также добавим несколько своих, чтобы этот файл описывал наш первый домен. Благодаря этому файлику будут обрабатываться любые запросы, поступившие на 80 порт – стандартный порт HTTP-запросов.

Для начала изменим параметр ServerAdmin , поместим туда адрес электронной почты, на которую администратор сайта будет получать сообщения:

ServerAdmin [email protected]

После этого вы должны добавить два параметра. Первый, ServerName , определяет домен, запросы на который будет обрабатывать данный виртуальный хост. Второй, ServerAlias, определяет дополнительные имена вашего сайта, которые будут обрабатываться точно также как основной домен. Это полезно, например, для сопоставления вашего основного и www.*** домена.

ServerName example.com ServerAlias www.example.com

Последняя вещь, которую нам нужно изменить в базовом конфигурационном файле, это параметр DocumentRoot , определяющий расположение директории, из которой будет грузиться наш сайт. Вы уже создали нужные директории в первом шаге нашего руководства, так что запишем нужный адрес в файл:

DocumentRoot /var/www/example.com /public_html

После проведенных манипуляций наш файл должен выглядеть примерно так:

ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com /public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Сохраним и закроем его.

Скопируем первый Виртуальный Хост и настроим его для обработки второго домена

Теперь, когда первый конфигурационный файл готов, мы можем скопировать его и настроить под второй домен.

Sudo cp /etc/apache2/sites-available/example.com .conf /etc/apache2/sites-available/test.com .conf

Откроем новый файл с привилегиями root:

Sudo nano /etc/apache2/sites-available/test.com .conf

Теперь мы должны изменить все параметры, настроив их под второй домен. Должно получится что-то вроде этого:

ServerAdmin [email protected] ServerName test.com ServerAlias www.test.com DocumentRoot /var/www/test.com /public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Когда закончите, сохраните и закройте файл.

Шаг пятый – активация виртуальных хостов

Теперь, когда мы создали конфигурационные файлы хостов, необходимо их активировать. Apache располагает несколькими инструментами, которые позволяют проводить операции по активации и деактивации хостов.

Используйте инструмент a2ensite для активации ваших хостов. Пример использования:

Sudo a2ensite example.com .conf sudo a2ensite test.com .conf

После выполнения данных команд, необходимо отключить стандартный хост:

Sudo a2dissite 000-default.conf

Чтобы изменения вступили в силу, необходимо перезапустить Apache:

Sudo systemctl restart apache2

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

Sudo service apache2 restart

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

Шаг шестой – настройка файла hosts (не обязательно)

Если вы настроили ваши виртуальные хосты для реально существующих доменов и настроили DNS так, чтобы запросы на домены перенаправлялись на ваш сервер, то все хорошо. Если же у вас еще нет доменов или же вы по какой-то причине пока что не хотите прицеплять их к вашему серверу, вы можете использовать файл hosts вашего локального компьютера, чтобы имитировать переход через нужный домен для проверки работы virtual host .
При выполнении описанных ниже действий запросы на определенные домены с вашего локального компьютера будут перехватываться и принудительно перенаправляться на ip-адрес вашего VPS, в обход DNS-серверов. При этом данные перенаправления будут обрабатываться исключительно для вашего локального компьютера, что очень удобно для тестирования различных систем на этапе создания сайтов, в том числе для тестирования virtual host .

Убедитесь что вы настраиваете локальный компьютер, а не VPS. У вас должны быть права администратора или вы должны знать пароль от учетной записи администратора для внесения изменений в файл hosts . Если вы используете операционную систему семейства Linux или Mac, выполните следующую команду:

Sudo nano /etc/hosts

Если вы используете операционную систему Windows, вы найдете файл hosts по адресу:

C:\Windows\System32\drivers\etc\hosts

В системе Windows данный файл скрыт и является системным, возможно вам придется включить отображение скрытых и системных файлов в настройках папок.

Вы должны добавить в файл домены, которые использовали в данном руководстве и публичный ip-адрес вашего VPS. Для доменов, которые использовал я, при условии что ip-адрес моего VPS 111.111.111.111 записи, которые необходимо добавить, будут выглядеть так:

127.0.0.1 localhost 111.111.111.111 example.com 111.111.111.111 test.com

Сохраните и закройте файл. Теперь все запросы на домены example.com и test.com будут автоматически перенаправляться на наш VPS 111.111.111.111 и обрабатываться виртуальными хостами так, как если бы мы использовали реальные домены.

Шаг седьмой – проверка работоспособности

Теперь все настроено и вы можете проверить работу Virtual hosts , введя в адресую строку вашего браузера examle.com . Если всё хорошо, вы увидите следующую страницу:

Аналогично, при запросе к домену test.com вы увидите соответствующую страницу:

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

Заключение

Если вы внимательно выполнили все пункты данного руководства, то ваш сервер успешно настроен на работу двух виртуальных хостов. Вы можете продолжить и, повторив все пункты, добавить столько доменов, сколько считаете необходимым. Можете не стесняться, Apache не имеет программных ограничений на количество virtual hosts , количество доменов и сайтов, которые может обрабатывать сервер, ограничено лишь техническими возможностями железа, на котором установлен Apache.

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

Будем считать, что у нас есть сайт на виртуальном хосте. Например, пусть это будет site.loc . Также даны два компьютера — один под Open SUSE (Apache2 + PHP + MySQL, IP: 192.168.0.100 , например), второй — под WinXP (пусть это будет ноутбук, если кому-то интересно). Мне нужно, чтобы я мог зайти в phpMyAdmin и работать с админкой site.loc c ноутбука . Ну, или просто посмотреть из-под винды, как оно будет выглядеть 🙂

Настроим сеть

Для начала, на компьютере, откуда хотим получить доступ (в нашем случае, с WinXP), открываем файл C:/Windows/System32/drivers/etc/hosts и добавляем строчку после 127.0.0.1 :

192.168.0.100 site.loc

Сохраняем файл. что тут написано — при наборе адреса «site.loc » идти на IP «192.168.0.100 «. Это вместо того, чтобы поднимать DNS ради одного-двух-пяти сайтов.

Если второй компьютер на Linux — файл будет /etc/hosts , действия — те же.

phpMyAdmin

Если с phpMyAdmin все относительно просто — пишем http://192.168.0.100/phpMyAdmin (регистр тут важен) и все открывается, то с виртуальными хостами придется расковырять пару файлов.

Виртуальные хосты

site.loc , соответственно, живет на виртуальном хосте, который прописан так:

UserDir public_html

Все прекрасно работает на локалхосте, но при попытке зайти на site.loc cо второго компьютера, нас ждет облом. Откроется страница, находящаяся в папке WWW (по умолчанию там будет написано «It worws! «). Вот тут-то мы и начинаем.

Для начала, апачу нужно сказать, какие порты слушать и на каких интерфейсах (он же не телепат, правильно?). Открываем файл /etc/apache2/listen.conf и видим там нечто следующее (исключая коммментарии, конечно):

Sudo nano /etc/apache2/listen.conf Listen 80 Listen 443

К этому всему добру надо указать апачу слушать два интерфейса — локальный (127.0.0.1 ), чтобы можно было смотреть сайт на локалхосте как раньше, и внешний (192.168.0.100 ), чтобы апач принимал запросы еще и с того интерфейса, который смотрит в локалку .

NameVirtualHost 192.168.0.100:80 NameVirtualHost 127.0.0.1:80

Можно добавить это в самый конец файла, можно в начало.

Чтобы апач слушал все интерфейсы на 80 порту — вместо того, что выше, добавляем

NameVirtualHost *:80

Этот вариант хорош именно в нашем случае, когда у нас по сути 2 интерфейса (значимых для дела) — 127.0.0.1 и 192.168.0.100

Чтобы все интерфейсы на всех портах (а надо ли?)

NameVirtualHost *

В принципе, все это описано в комментариях в этом же файле. Правда, на английском…

Теперь открываем известный нам уже файл /etc/apache2/vhosts.d/site.loc.conf и добавляем в него блок:

DocumentRoot /srv/www/vhosts/site.loc ServerName site.loc ServerAdmin [email protected] AllowOverride All Order allow,deny Allow from all UserDir public_html

Таким образом, должно получиться так:

Sudo nano /etc/apache2/vhosts.d/site.loc.conf DocumentRoot /srv/www/vhosts/site.loc ServerName site.loc ServerAdmin [email protected] AllowOverride All Order allow,deny Allow from all UserDir public_html DocumentRoot /srv/www/vhosts/site.loc ServerName site.loc ServerAdmin [email protected] AllowOverride All Order allow,deny Allow from all UserDir public_html

Собственно, осталось перезапустить апач:

Sudo /etc/init.d/apache2 restart

и проверять. Все должно работать на обоих компьютерах.

Похожие статьи