Продукты и препараты

Создать виртуальный хост apache. Работаем с виртуальными хостами. Создаем конфигурационный файл хоста

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

Наверно, стоит напомнить читателям - как устроен Интернет. Сайты на жестких дисках у провайдера или на домашнем компьютере - это папки для размещения материала сайта и внутренних программ. Все сайты (как папки) Интернета, аналогично и внутри компьютера, связаны средствами связи, но для того, чтобы эти папки стали сайтами нужно, (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 windows.

И так давайте разберёмся зачем нам нужен виртуальный хост. После установки apache мы можем к нему обращаться набрав в браузере localhost. А хотелось бы что бы мы могли держать на сервере несколько сайтов и обращаться к ним по отдельному url. Для этого должна быть сделана на apache настройка виртуальных хостов. Для начала создадим на пример на диске С папку "www.Zametki". В папке С:\Zametki создадим три папки conf, htdocs, logs, Errors . В папке conf создадим файл zametki.conf. Откроем файл С:\www.Zametki\conf\zametki.conf и опишем наш виртуальный хост:

#Виртуальный хост zametki <VirtualHost *:80> #Настройки сервера ServerName www.zametki ServerAlias zametki ServerAdmin webmaster@zametki #Журналы сервера ErrorLog "c:/www.Zametki/logs/error.log" CustomLog "c:/www.Zametki/logs/access.log" common #корневая папка DocumentRoot "c:/www.Zametki/htdocs" <Directory "c:/www.Zametki/htdocs"> Options Indexes FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory> </VirtualHost>

Сохраняем файл zametki.conf. Теперь нам осталось подключить его к основному файлу конфигурации сервера httpd.conf. Он находится по адресу C:\Program Files\Apache Software Foundation\Apache2.2\conf. Открываем его и для начала дописываем в самый низ файла:

NameVirtualHost *:80 <VirtualHost *:80> ServerName localhost ServerAdmin admin@localhost </VirtualHost>

Мы создали виртуальный хост по умолчанию. Теперь подключим созданный нами хост. Пишем в тот же файл в самый низ документа:

# www.zametki Include "c:/www.Zametki/conf/zametki.conf"

Теперь нам осталось создать запись о нашем хосте в файле hosts по адресу C:\WINDOWS\system32\drivers\etc. Это будет замена DNS серверу.

//запись по умолчанию виндовс 127.0.0.1 localhost //наша запись 127.0.0.1 zametki www.zametki

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

За создание виртуальных папок у нас отвечает директива Alias. Создадим папку для хранения файлов с ошибками Apache. Добавим в файл zametki.conf в директиву <VirtualHost> … </VirtualHost> нашего виртуального хоста следующее:

# Папка с сообщениями об ошибках //назначаем алиас(псевдоним) для папки Alias /err/ "c:/www.Zametki/Errors/" <Directory "c:/www.Zametki/Errors/"> Options Indexes FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory>

Создание своих страниц с ошибками Apache

За сообщение об ошибках у нас отвечает директива ErrorDocument. Создадим в папке c:/www.Zametki/Errors/ файл например 404.html. Это будет наша html страничка, выводящаяся при ошибке сервера 404. В файл zametki.conf добавим следующие строки:

# Сообщения об ошибках ErrorDocument 404 /err/404.html

Термин Virtual Host (виртуальный хост) относится к практике запуска более чем одного сайта (такие как company1.example.com и company2.example.com) на одной машине. Виртуальные хосты могут быть "IP-based", что означает, что у вас есть различные IP адреса для каждого сайта, или "name-based", что означает, что у вас есть несколько имён, работающие на каждом IP адресе. Для конечного пользователя тот факт, что эти сайты работают на одном и том же физическом сервере, не является очевидным, то есть он может об этом и не знать.

Можно создать виртуальный хост Apache — один или сразу много. Суть хостов Apache в том, что в браузере вместо ввода IP к сайту можно обратиться по имени хоста — точно также как мы открываем все сайты в Интернете: мы вводим доменное имя, а не IP адрес сайта. Аналогично можно настроить и на локальном веб-сервере: в браузере вместо 127.0.0.1 или вместо localhost можно открывать свои локальные сайты, например, по легко запоминающимся именам.

Особенности настройки виртуальных хостов Apache в Windows

Прежде чем приступить к настройке, совсем немного теории: при открытии сайтов по доменному имени или по имени хоста, веб-браузеру всё равно нужно знать IP адрес веб-сервера, куда делается запрос. Эту проблему решают DNS сервера. То есть перед открытием они спрашивают у сервера имён DNS, какой IP имеет сайт, например, ?

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

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

Допустим я хочу создать виртуальный хост Apache с именем php.test , тогда я открываю файл C:\Windows\System32\drivers\etc\hosts и добавляю в него запись

127.0.0.1 php.test

Вы можете добавить в этот файл любое количество хостов с указанием любых IP адресов. Каждая запись должна быть на собственной строке. Первым должен быть помещён IP адрес, а затем соответствующее имя хоста. IP адрес и имя хоста должны быть разделены хотя бы одним пробелом. Вместо пробела можно использовать табуляцию (Tab).

В этом файле можно вставлять комментарии — комментариями считаются все строки, которые начинаются с символа # (решётка). Комментарии могут быть как размещены на отдельных строках, так и следовать после имени машины. Итак, мы выполнили подготовительный этап — прописали имя нашего виртуального хоста в файле hosts . В результате запрос, сделанный к этому виртуальному хосту, теперь будет перенаправляться веб-серверу Apache — именно этого мы и добивались.

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

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

Откройте главный конфигурационный файл httpd.conf (например у меня он расположен по адресу C:\Server\bin\Apache24\conf\httpd.conf ).

Найдите там строку:

#Include conf/extra/httpd-vhosts.conf

И раскомментируйте её, чтобы получилось:

Include conf/extra/httpd-vhosts.conf

Найдите строку

LoadModule log_config_module modules/mod_log_config.so

и убедитесь, что она раскомментирована.

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

Теперь откройте сам файл httpd-vhosts.conf (c:\Server\bin\Apache24\conf\extra\httpd-vhosts.conf ). Содержимое этого файла можно просто удалить — оно нам не понадобится.

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

  • ServerName — определяет само имя хоста
  • DocumentRoot — определяет, какие файлы показывать для этого имени, то есть содержит путь до сайта этого хоста

Секций может быть любое количество — столько, сколько вам нужно виртуальных хостов на данном сервере.

Ещё одно правило: первый раздел VirtualHost используется для сбора всех запросов, которые не соответствуют ServerName или ServerAlias в любом другом блоке . То есть первая секция является как бы дефолтной — для всех остальных запросов, которые не предназначены для виртуальных хостов. Поэтому нам нужно сделать как минимум два контейнера :

  1. Будет собирать запросы, которые не предназначены ни для какого из хостов. Обычные запросы, например, к localhost или 127.0.0.1
  2. Контейнер самого хоста (у меня хост называется php.test)

Что будет если не сделать первый («дефолтный») контейнер? Все запросы, которые даже те, которые не предназначаются для php.test, всё равно будут обрабатываться как будто бы они пришли для хоста php.test.

Вместе с контейнером VirtualHost можно указать IP адрес и порт, которые прослушиваются для данного хоста. Если вы используете какой-то нестандартный порт, который ещё не открыт с помощью директивы Listen , то вам нужно добавить эту директиву с соответствующим портом в главный конфигурационный файл или прямо в файл httpd-vhosts.conf . Например, я хочу, чтобы виртуальный хост был привязан к порту 81, тогда перед VirtualHost мне нужно добавить:

Listen 81

Для нашего примера я буду использовать стандартный 80 порт, а в качестве IP адреса укажу звёздочку. Дефолтным хостом у меня является localhost , файлы которого расположены по пути C:/Server/data/htdocs/ , тогда первый контейнер выглядит так:

Второй контейнер создан для хоста php.test , и его файлы будут располагаться в папке , тогда полностью код контейнера будет выглядеть так:

Собираем всё вместе, полное содержимое файла httpd-vhosts.conf :

ServerName localhost DocumentRoot "C:/Server/data/htdocs/" ServerName php.test DocumentRoot "C:/Server/data/htdocs/virthosts/host1/"

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

C:\Server\bin\Apache24\bin\httpd.exe -k restart

Открываю в веб-браузере ссылку http://php.test и вижу там тот файл, который создан для этого хоста (то есть размещён в папке C:/Server/data/htdocs/virthosts/host1/ ):

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

Например, кроме ServerName , можно добавить ещё ServerAlias :

ServerName dummy-host.example.com ServerAlias www.dummy-host.example.com

Можно установить отдельные файлы для каждого виртуального хоста:

ErrorLog "logs/dummy-host.example.com-error.log" CustomLog "logs/dummy-host.example.com-access.log" common

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

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

Как все мы знаем, Apache — очень мощный, очень гибкий и настраиваемый веб-сервер для ОС *Nix . Здесь, в этом руководстве, мы собираемся обсудить еще одну особенность Apache, которая позволяет нам размещать более одного веб-сайта на одной машине с Linux. Внедрение виртуального хостинга с веб-сервером Apache может помочь вам сэкономить средства, которые вы инвестируете в обслуживание вашего сервера и его администрирование.

Концепция общего веб-хостинга и реселлерского веб-хостинга основана только на этой возможности Apache .

Типы виртуальных хостов

Существует два типа виртуального хостинга, доступных с Apache.

Виртуальный хостинг на основе имени

С помощью на основе имени вы можете разместить несколько доменов / сайтов на одном компьютере с одним IP . Все домены на этом сервере будут использовать один IP-адрес. Это легче настроить, чем виртуальный хостинг на основе IP, вам нужно только настроить DNS домена, чтобы сопоставить его с правильным IP-адресом, а затем настроить Apache для распознавания его по доменным именам.



Виртуальный хостинг на основе IP

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

Давайте настроим Виртуальный хостинг на основе имени и Виртуальный хостинг на основе IP в RHEL, CentOS и Fedora .

Тестовая среда
  1. ОС CentOS 6.5
  2. Приложение веб-сервер Apache
  3. IP-адрес 192.168.0.100
  4. IP-адрес 192.168.0.101
  5. Домен www.example1.com
  6. Домен www.example2.com

Как настроить виртуальные хосты Apache на основе IP и имен

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

# yum install httpd

Настройка имени на основе виртуального хоста

Но перед созданием виртуального хоста вам необходимо создать каталог, в котором вы будете хранить все файлы вашего сайта. Итак, создайте каталоги для этих двух виртуальных хостов в папке /var/www/html . Помните, что
/var/www/html будет корневым каталогом документов по умолчанию в виртуальной конфигурации Apache.

# mkdir /var/www/html/example1.com/
# mkdir /var/www/html/example2.com/

Чтобы настроить виртуальный хостинг на основе имен, вы должны указать Apache, какой IP-адрес вы будете использовать для получения запросов Apache для всех веб-сайтов или доменных имен. Мы можем сделать это с помощью директивы NameVirtualHost . Откройте основной файл конфигурации Apache с помощью редактора VI .

# vi /etc/httpd/conf/httpd.conf

Найдите NameVirtualHost и раскомментируйте эту строку, удалив перед ней знак # .

NameVirtualHost

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

NameVirtualHost 192.168.0.100:80

Теперь пришло время для настройки виртуальных разделов хоста для ваших доменов, перейдите к нижней части файла, нажав Shift + G . Здесь, в этом примере, мы настраиваем разделы виртуального хоста для двух доменов.

  1. www.example1.com
  2. www.example2.com

Добавьте следующие две виртуальные директивы внизу файла. Сохраните и закройте файл.


DocumentRoot /var/www/html/example1.com
ServerName www.example1.com
CustomLog logs/www.example1.com-access_log common


DocumentRoot /var/www/html/example2.com
ServerName www.example2.com
CustomLog logs/www.example2.com-access_log common

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

# httpd -t

Syntax OK

Рекомендуется проверять синтаксис файла после внесения некоторых изменений и перед перезапуском веб-сервера, поскольку в случае неправильного синтаксиса Apache откажется работать с некоторыми ошибками и в конечном итоге повлияет на работу существующего веб-сервера на некоторое время, если «syntax OK» . Перезапустите ваш веб-сервер и добавьте его в chkconfig, чтобы ваш веб-сервер запускался на уровнях запуска 3 и 5 только во время загрузки.


Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[ root @ tecmint ~] # chkconfig --level 35 httpd on

Теперь пришло время создать тестовую страницу с именем index.html, добавить некоторое содержимое в файл, чтобы у нас было что проверить, когда IP-адрес вызывает виртуальный хост.

# vi /var/www/html/example1.com/index.html

www.example1.com


Hello, Welcome to www.example1.com.



[ root @ tecmint ~] # vi /var/www/html/example2.com/index.html

www.example2.com


Hello, Welcome to www.example2.com.



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

Http://www.example1.com http://www.example2.com

Предварительный просмотр: www.example1.com

Виртуальный хостинг: www.example1.com
Виртуальный хостинг: www.example2.com

Настройка виртуального хостинга на базе IP Linux

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

Это может быть одна карта NIC , например: eth0: 1 , eth0: 2 , eth0: 3 … и так далее. Можно также подключить несколько сетевых карт. Если вы не знаете, как создать несколько IP-адресов на одном сетевом адаптере , следуйте приведенному ниже руководству, которое поможет вам в создании.

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

Этот тип настройки требуется, когда веб-сайт работает с сертификатом SSL (mod_ssl ) или на разных портах и ​​IP-адресах. Вы также можете запустить несколько экземпляров Apache на одном компьютере. Чтобы проверить IP-адреса, подключенные к вашему серверу, проверьте его с помощью команды ifconfig .

Root @ tecmint ~] # ifconfig

Пример вывода
eth0 Link encap:Ethernet HWaddr 08:00:27:4C:EB:CE
inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe4c:ebce/64 Scope:Link
RX packets:17550 errors:0 dropped:0 overruns:0 frame:0
TX packets:15120 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:16565983 (15.7 MiB) TX bytes:2409604 (2.2 MiB)
eth0:1 Link encap:Ethernet HWaddr 08:00:27:4C:EB:CE
inet addr:192.168.0.101 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1775 errors:0 dropped:0 overruns:0 frame:0
TX packets:1775 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:3416104 (3.2 MiB) TX bytes:3416104 (3.2 MiB)

Как видно из вышеприведенного вывода, два IP-адреса 192.168.0.100 (eth0 ) и 192.168.0.101 (eth0: 1 ) подключены к серверу, оба IP-адреса назначены одному физическому сетевому устройству (eth0 ).

Теперь, назначив определенный IP / порт для получения http-запросов, вы можете просто сделать это, изменив директиву Listen в файле httpd.conf .

# vi /etc/httpd/conf/httpd.conf

Ищите слово «Listen ». Вы найдете раздел, в котором написано краткое описание директивы Listen. В этом разделе прокомментируйте оригинальную строку и напишите собственную директиву ниже этой строки.

# Listen 80
Listen 192.168.0.100:80

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


ServerAdmin [email protected]
DocumentRoot /var/www/html/example1
ServerName www.example1.com
ErrorLog logs/www.example1.com-error_log
TransferLog logs/www.example1.com-access_log


ServerAdmin [email protected]
DocumentRoot /var/www/html/example2
ServerName www.example2.com
ErrorLog logs/www.example2.com-error_log
TransferLog logs/www.example2.com-access_log

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

# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

Проверьте настройки виртуального хостинга на основе IP, открыв URL-адреса в веб-браузере, как показано ниже.

Http://www.example1.com
http://www.example2.com

Это все, что касается виртуального хоста Apache сегодня.

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

Плюс ко всему, в Apache2 по умолчанию файлы сайта хранятся в /var/www, у меня же они будут находиться в моей домашней папке, /home/goodigy/sites .

Apache2 может определять хосты по ip-адресам, по доменным именам и по портам.

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

В Apache2, установленном в Ubuntu 16.04 и Ubuntu 14.04, для этого уже почти все готово.

В папке /etc/apache2/ sites-available будут храниться все конфигурационные файлы виртуального хоста.
Затем мы его просто будем включать и выключать по надобности.
Один файл там уже есть, на основе его мы и сделаем свой.

Скопируем под именем example (наш хост будет называться example, и в браузере станет доступен по ссылке http://example)

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

В предыдущих версиях apache2 (до версии 2.4), не использовались расширения файлов.conf. В новых версиях (с версии 2.4) это приведет к ошибке.

Теперь надо отредактировать, вновь созданный, файл

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

Файл приводим к следующему виду:

ServerName example DocumentRoot /home/goodigy/sites/example AllowOverride All Require all granted ErrorLog /home/goodigy/sites/example/error.log CustomLog /home/goodigy/sites/example/access.log combined

Разъяснение настроек:

  • ServerName example - указание доменного имени по которому будет определяться хост.
  • DocumentRoot /home/goodigy/sites/example - привязывает папку к хосту.

  • Options Indexes FollowSymlinks
    AllowOverride All
    Require all granted
    - это настройки папки,
  • Options Indexes FollowSymlinks - если нет индексного файла (index.html, index.php), показывать список файлов, удобно на локальном сервере.
  • AllowOverride All - разрешает переопределять настройки в.htaccess.
  • Require all granted - доступ разрешен всем.
  • ErrorLog - указывает расположение файла с логом ошибок, я их храню в папке с сайтом.
  • CustomLog - указывает расположение файла с логом доступа, я их храню в папке с сайтом.

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

Mkdir /home/goodigy/sites mkdir /home/goodigy/sites/example

Включаем сайт

Sudo a2ensite example.conf

И отключаем тот, который по умолчанию

Sudo a2dissite 000-default.conf

Перезапускаем Apache2

Sudo nano /etc/hosts

Выглядит он, примерно, так

127.0.0.1 localhost 127.0.1.1 googidy-comp # The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

Туда надо добавить указание на наш домен example

127.0.0.1 localhost 127.0.1.1 igy-nout 127.0.0.1 example # The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

Сохраняем.
Все, теперь по адресу http://example доступен наш новый хост. В браузере должна отобразиться папка с файлами, так как там отсутствует индексный файл.