Разное

Настройка виртуальных хостов apache: Создание виртуальных хостов в apache под Linux на Python / Хабр

Содержание

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

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

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

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

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

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

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

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

http://design-for.net/

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

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

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

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

длинной ссылки для сайта внутри компьютера с коротким путем

и

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

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

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

http://site.zona/

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

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

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.

Такая запись позволяет браузеру находить сайт localhost по его адресу (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» (намного ниже — и может быть уже без #)

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

Первая запись позволяете обрабатывать ссылки в простом и в вебовском виде (слово alias переводится как «псевдоним» – этой строчкой мы разрешаем существования зеркал для сайта, начинающихся с www и без.

Вторая строка включает (запускает) файл 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
<VirtualHost *:80>
    DocumentRoot "C:\xampp\htdocs"
    ServerName localhost
</VirtualHost>
<VirtualHost *:80>
    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
  <Directory "C:\xampp\htdocs\designfornet\www">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

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

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

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

— далее – создается виртуальный сайт с именем designfornet и с псевдонимом www.designfornet, указываются адреса журналов ошибок и запрет на допуск сторонним лицам.

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 называются зеркалами.

Чтобы получить короткий вид ссылки надо активировать файл httpd-vhosts.conf и внести в него настройки нашего сайта.

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

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:

<VirtualHost *:80>
    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
  <Directory "C:\xampp\htdocs\designfornet\www">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

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

<VirtualHost *:80>
    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
  <Directory "C:\xampp\htdocs\my_site-2.local\www">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

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

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 2 ( Статьи

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

 

Вначале небольшое объяснение.

 

Что такое виртуальный хост? Это такая настройка локального веб-сервера, при которой веб-сервер начинает откликаться на заданное имя, а не только на IP 127.0.0.1 или псевдоним localhost. То есть, при настройке виртуального хоста на имя site.ru, в браузере по этому URL начнет отвечать локальный веб-сервер.

 

Веб-сервер можно настроить на несколько имен сайтов. Тогда веб-сервер начнет выдавать страницы, соответсвующие каталогу, в котором находятся данные для указанного имени. Например, есть два виртуальных хоста — site.ru и money.com. Для site.ru настроен рабочий каталог /var/www/site.ru, а для money.com настроен рабочий каталог /var/www/money.com. Если теперь в браузере обратиться к site.ru, то веб-сервер будет выдавать страницы из каталога /var/www/site.ru, а если обратиться к money.com, то веб-сервер будет генерировать страницы из каталога /var/www/money.com. Как сделать такую настройку и написано в данной статье.

 

В Debian 5.x.x, сервер Apache-2 сразу после установки готов работать с виртуальными хостами. Но настроен только на один (default) хост, который доступен как localhost. Чтобы добавить еще один виртуальный хост, надо сделать следущее:

 

1. В каталог /etc/apache2/sites-available нужно добавить пустой файл с произвольным именем. Для удобства, лучше давать имя файла, содержащее имя виртуального хоста. Например, если планируется добавить виртуальный хост с именем studio.ru, надо задатьдать имя файла studio.ru.conf.

 

2. В этот файл надо вписать (примерно) следующее:

 

<VirtualHost *:80>

 ServerName studio.ru
 ServerAlias www.studio.ru

 DocumentRoot «/var/www/studio»

 <Directory «/var/www/studio»>
  allow from all
  Options +Indexes
 </Directory>

</VirtualHost>

 

Где:

  • ServerName, ServerAlias — это URL, набираемый в браузере, на который должен откликаться данный виртуальный хост;
  • DocumentRoot — это корневая директория данного виртуального хоста;
  • Секция Directory — настройка прав доступа к указанной директории. В данном случае настраиваются права доступа к корневой директории виртуального хоста.

Нужно обратить внимание на параметр секции VirtualHost. Здесь он написан как «*:80». Но обязательно нужно заглянуть в файл /etc/apache2/sites-available/default и посмотреть, какой параметр написан там в такой же секции VirtualHost. Если написано «*», то в нашем файле надо так же написать «*».

 

Другоми словами, нужно заглянуть в файл /etc/apache2/ports.conf. Там нужно найти директиву:

 

NameVirtualHost *:80

Какое значение стоит в этой директиве (здесь — «*:80»), такое значение и нужно прописать в качестве параметра секции VirtualHost во всех файлах директории /etc/apache2/sites-available, иначе хосты видны не будут.

 

Частая ошибка — когда в /etc/apache2/ports.conf прописано «*.80», а в файле хоста в секции VirtualHost прописано «*». Несмотря на то, что маска «*» покрывает маску «*.80», сервер Apache не понимает такой записи. При такой настройке, сервер Apache не найдет нужного хоста!

 

3. Надо перейти в каталог /etc/apache2/sites-enabled и создать там символическую ссылку на созданный нами файл:

 

# cd /etc/apache2/sites-enabled
# ln -s /etc/apache2/sites-available/studio.ru.conf studio.ru.conf

 

4. Необходимо перезапустить Apache командами:

 

# /etc/init.d/apache2 stop
Stopping web server: apache2 … waiting .

# /etc/init.d/apache2 start
Starting web server: apache2.

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

 

5. Завершающее действие — нужно открыть файл /etc/hosts и прописать там новую строку следующего содержания:

 

127.0.0.1 studio.ru

 

это позволит браузеру обращаться локально к Апачу, а не искать данный сайт в интернете.

 

Все, конфигурирование закончено. Никаких перезагрузок не требуется.

Можно в браузере набрать URL http://studio.ru/index.html, и должен открыться файл /var/www/studio/index.html (если он есть). Таким образом, сразу видно, что виртуальный хост создался, и отображается в браузере. Подобным образом добавляются и другие виртуальные хосты.

Виртуальные хосты Apache2, доступные из локальной сетиБлог MerinovKV

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

Будем считать, что у нас есть сайт на виртуальном хосте. Например,, пусть это будет 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, соответственно, живет на виртуальном хосте, который прописан так:

sudo nano /etc/apache2/vhosts.d/site.loc.conf

<VirtualHost 127. 0.0.1:80>
	DocumentRoot /srv/www/vhosts/site.loc
	ServerName site.loc
	ServerAdmin [email protected]
	<Directory /srv/www/vhosts/site.loc>
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
	UserDir public_html
</VirtualHost>

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

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

sudo nano /etc/apache2/listen.conf

Listen 80
<IfDefine SSL>
	<IfDefine !NOSSL>
		<IfModule mod_ssl.c>
			Listen 443
		</IfModule>
	</IfDefine>
</IfDefine>

К этому всему добру надо указать апачу слушать два интерфейса — локальный (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 и добавляем в него блок:

<VirtualHost 127.0.0.1:80>
	DocumentRoot /srv/www/vhosts/site.loc
	ServerName site.loc
	ServerAdmin mail@ya. ru
	<Directory /srv/www/vhosts/site.loc>
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
	UserDir public_html
</VirtualHost>

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

sudo nano /etc/apache2/vhosts.d/site.loc.conf

<VirtualHost 192.168.0.100:80>
	DocumentRoot /srv/www/vhosts/site.loc
	ServerName site.loc
	ServerAdmin [email protected]
	<Directory /srv/www/vhosts/site.loc>
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
	UserDir public_html
</VirtualHost> 

<VirtualHost 127.0.0.1:80>
	DocumentRoot /srv/www/vhosts/site.loc
	ServerName site.loc
	ServerAdmin [email protected]
	<Directory /srv/www/vhosts/site.loc>
		AllowOverride All
		Order allow,deny
		Allow from all
	</Directory>
	UserDir public_html
</VirtualHost>

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

sudo /etc/init. d/apache2 restart

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

Примеры

VirtualHost — HTTP-сервер Apache, версия 2.4

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

См. Также

Ваш сервер имеет несколько имен хостов, которые разрешаются в один адрес,
и вы хотите ответить по-другому: www.example.com
и www.example.org .

Note

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

 # Убедитесь, что Apache прослушивает порт 80
Слушай 80

    DocumentRoot "/ www / example1"
    ServerName www.example.com

    # Другие директивы здесь



    DocumentRoot "/ www / example2"
    ServerName www.example.org

    # Другие директивы здесь
 

Звездочки соответствуют всем адресам, поэтому главный сервер не обслуживает
Запросы. В связи с тем, что виртуальный хост с
ServerName www.example.com — первый
в файле конфигурации он имеет наивысший приоритет и его можно увидеть
как по умолчанию или основной сервер . Это означает
что если получен запрос, который не соответствует ни одному из указанных
ServerName , он будет обслуживаться этим первым
<виртуальный хост> .

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

Примечание

Вы можете заменить * конкретным IP-адресом.
в системе. Такие виртуальные хосты будут использоваться только для
HTTP-запросы, полученные при подключении к указанному IP
адрес.

Однако дополнительно полезно использовать *
в системах, где IP-адрес непредсказуем — для
например, если у вас есть динамический IP-адрес у вашего интернет-провайдера, и
вы используете несколько разновидностей динамического DNS-решения.поскольку
* соответствует любому IP-адресу, эта конфигурация
будет работать без изменений всякий раз, когда ваш IP-адрес
изменения.

Примечание

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

У сервера два IP-адреса. По одному ( 172.20.30.40 ) мы
будет обслуживать «основной» сервер, server.example.com и на
другие ( 172.20.30.50 ) мы будем обслуживать два и более виртуальных хоста.

 Слушайте 80

# Это "основной" сервер, работающий на 172.20.30.40
Имя сервера server.example.com
DocumentRoot "/ www / mainserver"


    DocumentRoot "/ www / example1"
    ServerName www.example.com

    # Остальные директивы здесь ...



    DocumentRoot "/ www / example2"
    ServerName www.example.org

    # Остальные директивы здесь ...
 

Любой запрос на адрес, отличный от 172.20.30.50 будет
обслуживается с главного сервера. Запрос на номер 172.20.30.50 с
неизвестное имя хоста или отсутствие заголовка Host: , будет обслуживаться из
www.example.com .

Серверная машина имеет два IP-адреса ( 192.168.1.1
и 172.20.30.40 ). Машина находится между
внутренняя (интранет) сеть и внешняя (интернет) сеть. за пределами
сети имя server.example.com разрешает
внешний адрес ( 172.20.30.40 ), но внутри
сеть, то же имя преобразуется во внутренний адрес
( 192.168.1.1 ).

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

 
    DocumentRoot "/ www / server1"
    Имя сервера server.example.com
    ServerAlias ​​сервер
 

Теперь запросы из обеих сетей будут обслуживаться из одной
<виртуальный хост> .

Примечание:

На внутреннем
сети, можно просто использовать имя server скорее
чем полное имя хоста
server. example.com .

Обратите внимание, что в приведенном выше примере вы можете заменить список
IP-адресов с * , что приведет к
отвечают одинаково на все адреса.

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

 Слушайте 80
Слушай 8080


    ServerName www.example.com
    DocumentRoot "/ www / domain-80"



    ServerName www.example.com
    DocumentRoot "/ www / domain-8080"



    ServerName www.example.орг
    DocumentRoot "/ www / otherdomain-80"



    ServerName www.example.org
    DocumentRoot "/ www / otherdomain-8080"
 

Сервер имеет два IP-адреса ( 172. 20.30.40 и
172.20.30.50 ), которые разрешаются к именам
www.example.com и www.example.org
соответственно.

 Слушайте 80


    DocumentRoot "/ www / example1"
    Имя сервера www.example.com



    DocumentRoot "/ www / example2"
    ServerName www.example.org
 

Запросы на любой адрес, не указанный в одном из
директив (например,
localhost , например) перейдет на главный сервер, если
существует одна.

Серверный компьютер имеет два IP-адреса ( 172.20.30.40 и
172.20.30.50 ), которые разрешаются к именам
www.example.com и www.example.org
соответственно. В каждом случае мы хотим запускать хосты на портах 80 и
8080.

 Слушайте 172.20.30.40:80
Слушайте 172. 20.30.40:8080
Слушайте 172.20.30.50:80
Слушайте 172.20.30.50:8080


    DocumentRoot "/ www / example1-80"
    ServerName www.example.com



    DocumentRoot "/ www / example1-8080"
    ServerName www.example.com



    DocumentRoot "/ www / example2-80"
    ServerName www.example.org



    DocumentRoot "/ www / example2-8080"
    ServerName www.example.org
 

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

 Слушайте 80

    DocumentRoot "/ www / example1"
    Имя сервера www.example.com



    DocumentRoot "/ www / example2"
    ServerName www.example.org



    DocumentRoot "/ www / example3"
    ServerName www. example.net


# На основе IP

    DocumentRoot "/ www / example4"
    ServerName www.example.edu



    DocumentRoot "/ www / example5"
    ServerName www.example.gov
 

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

 
    ProxyPreserveHost On
    ProxyPass "/" "http://192.168.111.2/"
    ProxyPassReverse "/" "http://192.168.111.2/"
    ServerName hostname.example.com
 

_default_ vhosts
для всех портов

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

 
    DocumentRoot "/ www / default"
 

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

Vhost по умолчанию никогда не обслуживает запрос, который был отправлен
адрес / порт, который используется для виртуальных хостов на основе имен. Если запрос
содержит неизвестный заголовок Host: или отсутствует, он всегда
обслуживается с основного виртуального хоста на основе имени (виртуальный хост для этого
адрес / порт, указанные первым в файле конфигурации).

Вы можете использовать AliasMatch или
RewriteRule для перезаписи любого
запрос на единую информационную страницу (или скрипт).

_default_ vhosts
для разных портов

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

 
    DocumentRoot "/ www / default80"
    # ...



    DocumentRoot "/ www / default"
    #...
 

Vhost по умолчанию для порта 80 ( должно быть перед любым
vhost по умолчанию с подстановочным портом) ловит все отправленные запросы
на неуказанный IP-адрес. Главный сервер никогда не используется для обслуживания
запрос.

_default_ vhosts
для одного порта

Мы хотим иметь виртуальный хост по умолчанию для порта 80, но не использовать другое значение по умолчанию.
vhosts.

 
    DocumentRoot "/ www / default"
...
 

Запрос на неуказанный адрес на порту 80 обслуживается из
по умолчанию vhost. Любой другой запрос на неуказанный адрес и порт
обслуживается с главного сервера.

Любое использование * в объявлении виртуального хоста будет иметь
более высокий приоритет, чем _default_ .

Vhost на основе имени с именем хоста
www.example.org (из нашего примера на основе имени, установка 2) должен получить собственный IP-адрес.
адрес.Чтобы избежать проблем с серверами имен или прокси, которые кэшировали
старый IP-адрес для виртуального хоста на основе имени, который мы хотим предоставить как
варианты на этапе миграции.

Решение простое, потому что мы можем просто добавить новый IP-адрес.
( 172.20.30.50 ) на VirtualHost
директива.

 Слушайте 80
ServerName www.example.com
DocumentRoot "/ www / example1"


    DocumentRoot "/ www / example2"
    Имя сервера www.example.org
    # ...



    DocumentRoot "/ www / example3"
    ServerName www.example.net
    ServerAlias ​​* .example.net
    # ...
 

Теперь к виртуальному хосту можно получить доступ через новый адрес (как
Vhost на основе IP) и через старый адрес (как на основе имени
vhost).

У нас есть сервер с двумя именами vhosts. Чтобы соответствовать
правильный виртуальный хост, клиент должен отправить правильный Host:
заголовок.Старые клиенты HTTP / 1.0 не отправляют такой заголовок, а Apache имеет
не знаю, к какому vhost клиент пытался добраться (и обслуживает запрос
с первичного хоста). Чтобы обеспечить такую ​​же обратную совместимость, как
возможно, мы создаем первичный vhost, который возвращает одну страницу
содержащие ссылки с префиксом URL на виртуальный
хосты.

 
    # основной vhost
    DocumentRoot "/ www / поддомен"
    RewriteEngine On
    RewriteRule "." "/ www / поддомен / index.(/sub2/.*) "" / www / subdomain $ 1 "
    # ...
 

Из-за ServerPath
директива запрос к URL
http: //www.sub1.domain.tld/sub1/ — это всегда обслуживается
с sub1-vhost.
Запрос на URL
http: //www.sub1.domain.tld/ только
обслуживается с sub1-vhost, если клиент отправил правильный
Хост: заголовок . Если нет Host: заголовок отправляется
клиент получает информационную страницу с основного хоста.

Обратите внимание, есть одна странность: запрос на
http: //www.sub2.domain.tld/sub1/ также обслуживается с
sub1-vhost, если клиент не отправил заголовок Host: .

Директивы RewriteRule
используются, чтобы убедиться, что клиент, отправивший правильный
Host: заголовок может использовать оба варианта URL: , то есть ,
с префиксом URL или без него.

4. Виртуальные хосты — Поваренная книга Apache [Книга]

Глава 4.Виртуальные хосты

Система веб-сервера поддерживает несколько веб-сайтов аналогично тому, как человек отвечает на
ее имя, а также ее прозвище. В конфигурации Apache
файл, каждая альтернативная личность и, возможно,
«Главный» также известен как
виртуальный хост (иногда обозначаемый как vhost), идентифицированный с помощью
<виртуальный хост>

директива контейнера. В зависимости от имени, используемого для доступа в Интернет
сервер, Apache отвечает соответствующим образом, так же как кто-то может ответить
по-разному в зависимости от того, обращаются ли к ней как
«Мисс Джонс» или
«Привет, Дебби!» Если ты хочешь иметь
одна система поддерживает несколько веб-сайтов, необходимо настроить Apache
соответственно.

Apache поддерживает два разных типа виртуальных хостов.
Первый тип, названный

на основе адреса или IP, привязан к
числовой сетевой адрес, используемый для доступа к системе. Брюс Уэйн никогда
ответил на телефон в гостиной: «Бэтмен.
Вот!» и он не отвечал на телефонные звонки в Batcave
говоря: «Брюс Уэйн говорит».
Однако к телефону отвечает тот же человек,
точно так же, как это тот же веб-сервер, получающий
запрос.

Другой тип виртуального хоста
именной, потому что
ответ сервера зависит от того, как он называется.Чтобы
Продолжая телефонную аналогию, рассмотрим квартиру, которую
несколько соседей по комнате; Вы звоните по тому же номеру, хотите ли вы
поговорите с Дэйвом, Джойсом, Аматерасу или Джорджем. Так же, как несколько человек
могут использовать один номер телефона, несколько веб-сайтов могут использовать общий
тот же IP-адрес. Однако все IP-адреса, общие для нескольких Apache
виртуальные хосты должны быть объявлены с
ИмяVirtualHost
директива.

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

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

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

Существуют две основные формы виртуальных хостов: виртуальные хосты на основе IP,
где каждый виртуальный хост имеет свой уникальный IP-адрес; и по имени
виртуальные хосты, где несколько виртуальных хостов работают на одном IP
адрес, но с другими именами. Эта глава покажет вам, как
настроить каждый из них и как их объединить на одном сервере.Вы также узнаете, как решать распространенные проблемы, которые
происходят с виртуальными хостами.

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

У вас есть только один IP-адрес, но вы хотите
поддержка
более одного веб-сайта в вашей системе.

Используйте имя VirtualHost
*
директива в сочетании с
разделы:

 ServerName 127.0.0.1
ИмяVirtualHost *


    Имя сервера TheSmiths.название
    DocumentRoot "C: / Apache / Sites / TheSmiths"

        

    Имя сервера JohnSmith.name
    DocumentRoot "C: / Apache / Sites / JustJohnSmith"
 

Поскольку IP-адреса становятся все сложнее, виртуальные
хостинг — это наиболее распространенный способ запуска нескольких веб-сайтов на одном
Сервер Apache. Предыдущий рецепт работает для большинства пользователей, в большинстве
ситуации виртуального хостинга.

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

, или localhost
адрес. Таким образом, если вы сидите в системе физического сервера, вы
можете просматривать веб-сайт.

Аргумент в пользу
<виртуальный хост>
директива контейнера такая же
в качестве аргумента
ИмяVirtualHost
директива. Указание здесь имени хоста может
игнорировать виртуальный хост при запуске сервера и запросы к этому
виртуальный хост может неожиданно уйти в другое место.Если ваш сервер имен
не работает или не отвечает в то время, когда ваш сервер Apache
запускается, то Apache не может соответствовать
конкретный раздел в
NameVirtualHost директива, которой он принадлежит.

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

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

Для конкретного виртуального хоста можно указать несколько имен с помощью
ServerAlias ​​

директиве, как показано здесь:

 ServerName TheSmiths.название
Se 

Как настроить виртуальный хост локально с помощью XAMPP в Ubuntu

Использование виртуальных хостов в xampp — это практика запуска более одного веб-сайта (ориентированного на локальные ресурсы) на одной машине.

Виртуальные хосты основаны на IP, что означает, что у вас есть разные IP-адреса для каждого веб-сайта, или «на основе имени», что означает, что у вас есть несколько имен, работающих на каждом IP-адресе. Эта практика с использованием XAMPP пригодится, когда вы хотите смоделировать производственную среду (но работающую в среде разработки), локально обращаясь к вашему проекту с помощью обычного URL-адреса в браузере.

Чтобы настроить собственный виртуальный компьютер, нам необходимо выполнить следующие шаги:

  • Разрешить использование файла vhosts.conf , редактируя файл httpd.conf .
  • Теперь создайте пользовательский домен в файле hosts системы ( / etc / hosts ).
  • Создайте свой собственный виртуальный хост.
  • Запустите apache.
  • Проверьте это.

Приступим!

1. Разрешить использование настраиваемых виртуальных хостов

По умолчанию xampp в ubuntu не использует httpd-vhosts.conf (расположение виртуальных хостов), поэтому нам нужно указать, что этот файл будет включен во время выполнения apache. Откройте с помощью вашего любимого редактора кода файл httpd.conf , обычно расположенный в / opt / lampp / etc , или просто выполните следующую команду в своем терминале, чтобы открыть простой редактор:

  судо gedit /opt/lampp/etc/httpd.conf  

Теперь найдите себя (примерно) в строке 487 , где вы, вероятно, найдете следующие строки:

  # Виртуальные хосты
# Включить etc / extra / httpd-vhosts.конф  

Как видите, оператор Include, который включает файл httpd-vhosts.conf , закомментирован как . Продолжайте изменять строку , раскомментируя эту строку:

  # Виртуальные хосты
Включите etc / extra / httpd-vhosts.conf  

И вы готовы настроить свой собственный виртуальный хост.

2. Создайте собственный домен в файле hosts вашей системы

Вам необходимо создать собственный домен, на который будет указывать наш виртуальный хост apache.Этот домен обычно имеет IP-адрес (на основе 127.0.0.xx) и настраиваемое имя.

Для начала отредактируйте файл hosts , расположенный в / etc , используя свой любимый редактор кода или просто выполнив следующую команду в терминале:

  sudo gedit / etc / hosts  

И приступайте к добавлению своего собственного хоста. В этом примере наш ip будет 127.0.0.3 , а домен myawesomeproject . Итак, наконец, наш файл hosts будет выглядеть так:

  127.0.0.1 локальный
127.0.0.5 myawesomeproject

# не трогайте другие существующие значения
# Следующие строки желательны для хостов с поддержкой IPv6
:: 1 ip6-localhost ip6-loopback
fe00 :: 0 ip6-локальная сеть
ff00 :: 0 ip6-mcastprefix
ff02 :: 1 ip6-все узлы
ff02 :: 2 ip6-allrouters  

Сохраните файл, и теперь домен myawesomeproject является псевдонимом для локального адреса 127.0.0.5 .

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

Как правило, вам необходимо создать виртуальный хост в httpd-vhosts.conf , расположенный в папке / opt / lampp / etc / extra . Используйте свой любимый редактор, чтобы отредактировать этот файл, или просто выполните следующую команду, чтобы отредактировать его в терминале:

  sudo gedit /opt/lampp/etc/extra/httpd-vhosts.conf  

И создайте в этом файле свой виртуальный хост. Как показано в нашем пользовательском домене в файле vhost системы, порт, который мы собираемся использовать, — 127.0.0.5 , поэтому наш виртуальный хост будет:

  
  DocumentRoot "/ opt / lampp / htdocs / my-first-project"
  DirectoryIndex index.php

  <Каталог "/ opt / lampp / htdocs / my-first-project">
Опции Все
AllowOverride All
Требовать все предоставлено
  
  

Глубокая и индивидуальная конфигурация вашего VirtualHost зависит от вас. Сохраните файл, и вы готовы его протестировать.

4. Протестируйте виртуальный хост

Чтобы проверить это, в папке / opt / lampp / htdocs / my-first-project создайте простой файл PHP ( index.php ), который будет содержать следующий PHP-код:

    

Запустите apache, mysql (весь XAMPP) с помощью следующей команды (или любым другим способом, которым вы запускаете apache и другие необходимые службы):

  sudo / opt / lampp / lampp start  

Перейдите в своем любимом браузере по адресу http: // myawesomeproject / или http://127.0.0.5/, и вы должны получить в качестве вывода « Hello World » в браузере.

Удачного кодирования !

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

mountaindogmedia оставил следующий комментарий к моему сообщению об установке Apache, PHP и MySQL на Mac OS X:

Джейсон, пробовали ли вы модифицированный оператор Include для виртуальных хостов для сопоставления каталога? Поэтому вместо /etc/apache2/extra/httpd-vhosts.conf , как указано, можно использовать /etc/apache2/extra/vhosts/*.conf , а затем просто создать по умолчанию.conf для первого виртуального хоста, а затем добавьте / отредактируйте / удалите файлы vhost по мере необходимости. Думаю, было бы проще управлять хост-файлами и изменениями.

Действительно, mountaindogmedia , это более простой способ. Фактически, это конфигурация по умолчанию для многих серверов.

По умолчанию конфигурация виртуального хоста Apache в Mac OS X находится в одном файле: /etc/apache2/extra/httpd-vhosts.conf . Вам необходимо отредактировать конфигурацию Apache, чтобы включить этот файл и включить виртуальные хосты.

За эти годы я создал много виртуальных хостов. Каждый раз редактируя httpd-vhosts.conf . Для точки mountaindogmedia управлять этим становится сложно. Более того, конфигурации Apache часто сбрасываются при обновлении Mac OS X. За то же количество шагов (два) вы можете принять более управляемую конфигурацию.

Что такое виртуальные хосты?

Из документации виртуального хоста Apache:

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

По умолчанию конфигурация Apache в Mac OS X обслуживает файлы из / Library / WebServer / Documents , доступ к которым осуществляется по имени locahost . По сути, это конфигурация одного сайта. Вы можете имитировать несколько сайтов, создав подкаталоги и получив доступ к сайту по адресу localhost / somesite .

Это не идеально по нескольким причинам. В первую очередь, мы предпочли бы получить доступ к сайту, используя имя вроде somesite.local . Для этого вам необходимо настроить виртуальные хосты.

Конфигурация более чистого

До меня, я полагаю, вы уже установили и настроили Apache в Mac OS X.

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

  судо су -  

Отредактируйте файл конфигурации Apache:

  vi /etc/apache2/httpd.conf  

Найдите следующую строку:

  # Включить / private / etc / apache2 / extra / httpd-vhosts.конф  

Ниже добавьте следующую строку:

  Включить /private/etc/apache2/vhosts/*.conf  

Это настраивает Apache для включения всех файлов, оканчивающихся на .conf , в каталог / private / etc / apache2 / vhosts / . Теперь нам нужно создать этот каталог.

  мкдир / и т.д. / apache2 / vhosts
компакт-диск / etc / apache2 / vhosts  

Создайте файл конфигурации виртуального хоста по умолчанию.

  vi _default.conf  

Добавьте следующую конфигурацию:

  
    DocumentRoot "/ Библиотека / Веб-сервер / Документы"
  

Я создаю этот файл в качестве виртуального хоста по умолчанию.Когда Apache не может найти подходящий виртуальный хост, он будет использовать первую конфигурацию. Добавив к этому файлу знак подчеркивания, Apache сначала включит его. Технически этот файл не нужен, поскольку он просто повторяет конфигурацию из httpd.conf . Однако он предоставляет место для добавления пользовательской конфигурации для виртуального хоста по умолчанию (например, localhost ).

Теперь вы можете создать свой первый виртуальный хост. Пример ниже содержит конфигурацию виртуального хоста для моего сайта.Конечно, вы захотите заменить jasonmccreary.me своим доменным именем.

Создайте файл конфигурации виртуального хоста:

  vi jasonmccreary.me.conf  

Добавьте следующую конфигурацию:

  
        DocumentRoot "/Users/Jason/Documents/workspace/jasonmccreary.me/htdocs"
        ServerName jasonmccreary.local
        ErrorLog "/private/var/log/apache2/jasonmccreary.local-error_log"
        CustomLog "/ частный / вар / журнал / apache2 / jasonmccreary.local-access_log "общий

        <Каталог "/Users/Jason/Documents/workspace/jasonmccreary.me/htdocs">
            AllowOverride All
            Требовать все предоставлено
        
  

Эта конфигурация VirtualHost позволяет мне получить доступ к моему сайту с http: //jasonmccreary.local для локальной разработки.

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

Примечание : Конфигурация Require all grant стала доступна в Apache 2.4, который поставляется с Mac OS X Yosemite. Если вы используете версию OS X до Yosemite, используйте эквивалентную конфигурацию 2.2 в примерах обновления Apache.

Последний шаг — перезапустить Apache:

  перезапуск apachectl  

Если у вас возникнут проблемы, запустите:

  конфигурация apachectl  

Это проверит вашу конфигурацию Apache и отобразит все сообщения об ошибках.

Сопоставление расширения .local

Чтобы получить доступ к сайтам локально, вам необходимо отредактировать файл hosts .

  vi / etc / hosts  

Добавьте строку в конец этого файла для вашего виртуального хоста. Оно должно соответствовать значению, которое вы использовали для конфигурации ServerName . Например, мой сайт:

  127.0.0.1 jasonmccreary.local  

Мне нравится запускать следующее, чтобы очистить локальный кеш DNS:

  dscacheutil -flushcache  

Теперь вы можете получить доступ к своему сайту с помощью.местное расширение. Например, http: //jasonmccreary.local .

Примечание о разрешениях

Вы можете получить 403 Forbidden при посещении местного сайта. Вероятно, это проблема с разрешениями. Проще говоря, пользователь Apache ( _www ) должен иметь доступ для чтения, а иногда и записи в ваш веб-каталог.

Если вы не знакомы с разрешениями, прочтите больше. На данный момент проще всего сделать так, чтобы ваш веб-каталог имел разрешения 755 .Вы можете изменить разрешения с помощью команды:

  chmod 755 некоторые / веб / каталог /  

В моем случае все мои файлы находились в моем локальном каталоге ~ / Documents . Который по умолчанию доступен только мне. Поэтому мне пришлось полностью изменить разрешения моего веб-каталога до ~ / Documents , чтобы решить проблему 403 Forbidden .

Примечание : Есть много способов решить проблемы с разрешениями. Я представил это как самое простое решение , а не как лучшее из .

При закрытии

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

Находите это интересным? Давайте продолжим разговор в Твиттере.

Как включить виртуальный хост Apache в Windows 10.

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

Включить виртуальный хост в Apache

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

Отредактируйте файл index.php

Первое, что нам нужно сделать, это изменить файл index.php, расположенный по следующему пути: C: \ Apache24 \ htdocs .Если вы хотите узнать, как это сделать, ознакомьтесь с нашим сообщением о PHP в Windows 10.

Изменение файла index.php

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

сайт localhost

Отредактируйте файл httpd-vhosts.conf

Далее мы собираемся отредактировать конфигурацию виртуального хоста в Apache.С этим намерением перейдите по этому адресу C: \ Apache24 \ conf \ extra , как только там выберите файл httpd-vhosts.conf и измените его с помощью вашего любимого текстового редактора:

конфигурация файла httpd-vhosts.conf по умолчанию

В затененной области, которую мы видели на предыдущем изображении, мы можем увидеть информацию, которую мы должны отредактировать. В этой возможности мы собираемся добавить два виртуальных хоста с именами osradar1.com и osradar2.com . Обратите внимание, что вы можете назначить имя по своему усмотрению, вам просто нужно изменить файл по своему вкусу.Кроме того, мы также включили порт 80, но также можно включить порт 443. Таким образом, мы собираемся заменить этот код следующими строками:

  
ServerAdmin [email protected]
DocumentRoot "/sites/osradar1.com"
ServerName osradar1.com
ServerAlias ​​www.osradar1.com
<Каталог "c: /sites/osradar1.com">
AllowOverride All
Требовать все предоставлено
Индексы опций FollowSymLinks

ErrorLog "журналы / osradar1.com-error.log "
CustomLog "logs / osradar1.com-access.log" общий



ServerAdmin [email protected]
DocumentRoot "/sites/osradar2.com"
Имя сервера osradar2.com
ServerAlias ​​www.osradar2.com
<Каталог "c: /sites/osradar2.com">
AllowOverride All
Требовать все предоставлено
Индексы опций FollowSymLinks

ErrorLog "журналы / osradar2.com-error.log"
CustomLog "журналы / osradar2.com-access.журнал "общий
  

Сохраните файл, чтобы изменения вступили в силу.

Отредактируйте файл httpd.conf

Далее мы собираемся изменить конфигурацию Apache, чтобы загрузить модуль виртуального хоста. Имея это в виду, перейдите по следующему адресу: C: \ Apache24 \ conf . Затем выберите файл httpd.conf и откройте его в текстовом редакторе. Найдите строку с текстом vhost, примерно номер строки 515. Затем удалите числовой знак ( # ).

  • Настройка по умолчанию
  • Конфигурация для загрузки модуля vhost.

При удалении знака цифры используется линия и загружается только что измененная дополнительная конфигурация. Сохраните файл, чтобы продолжить. Не выходя из изменения файла, найдите строку 187, соответствующую модулям vhost_alias_module / mod_vhost_alias.so . Так же, как это было сделано с предыдущей строкой, необходимо удалить знак цифры.

  • Настройка по умолчанию
  • Конфигурация, которая позволяет Apache размещать более одного модуля.

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

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

Как вы, возможно, помните, на предыдущих этапах мы модифицировали Apache для размещения двух виртуальных сайтов с именами osradar1.com и osradar2.com . Что ж, необходимо вручную создать папки, в которых будут храниться нужные файлы, чтобы сайты загружались корректно. Сначала перейдите в корень диска C и создайте папку с именем sites .Оказавшись внутри, создайте две новые папки с названием веб-сайта. В данном случае osradar1.com и osradar2.com :

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

Затем войдите в папку osradar1.com и создайте новый файл с именем index.php:

Создает файл index.php

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

  

Osradar 1

Добро пожаловать на сайт Osradar 1

Эту процедуру необходимо выполнить в папке osradar2.com :

Создайте файл index.php в папке osradar2.com

Таким же образом нам нужно изменить файл index.php , добавив следующие строки кода. Откройте файл в текстовом редакторе и вставьте следующий текст:

  

Osradar 2

Добро пожаловать на сайт Osradar 2

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

Запустите команду services.msc и перезапустите сервер Apache.

Отредактируйте файл hosts в Windows.

Наконец, мы собираемся отредактировать файл хоста в Windows 10. Это позволит системе правильно загружать виртуальные хосты, которые мы только что создали. В этом случае открывает CMD от имени администратора и вводит следующие команды:

 cd драйверы
cd и т. д.
реж
блокнот хосты 

Доступ к файлу хоста

Последняя команда запустит блокнот, и в файл hosts необходимо добавить следующие строки:

  127.0.0.1 osradar1.com www.osradar1.com
127.0.0.1 osradar2.com www.osradar2.com  

Наконец-то отредактирован файл Hosts.

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

Тестирование виртуальных хостов в браузере.

Если вы в точности выполнили инструкции, которые я вам дал, то уже будет возможно разместить более одного веб-сайта на нашем сервере Apache. Помните, что если вы получите какие-либо ошибки, проверьте, правильно ли были отредактированы файлы.Чтобы проверить, все ли в порядке, откройте веб-браузер и введите localhos t. Откройте еще две вкладки и введите названия созданных нами веб-сайтов, в данном случае http://www.osradar1.com// и http://www.osradar2.com// . И все три веб-сайта будут одновременно работать на сервере Apache.

localhost на веб-сервере Apache Пример веб-сайта osradar1.com, работающего в браузере. Пример веб-сайта osradar2.com, работающего в браузере.

Заключение

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

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

Для удобного редактирования нескольких динамических веб-сайтов в Dreamweaver одновременно вам не потребуется несколько серверов для сообщений. Вместо этого вы можете настроить виртуальные хосты в существующей установке Apache. Это будет работать с любым популярным дистрибутивом, включая MAMP, WAMP и XAMP.Сегодня мы покажем вам, как настроить виртуальные хосты на MAMP.

1. Установите MAMP

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

Установка MAMP и MAMP Pro

На этом этапе у вас должна быть рабочая установка Apache с MySQL.
Для управления серверами найдите папку с именем MAMP в папке «Приложения» и дважды щелкните MAMP.приложение.

MAMP: остановить серверы

Чтобы завершить другие шаги, вам следует остановить серверы сейчас.

2. Отредактируйте / etc / hosts на вашем Mac.

Откройте Терминал и введите

Судо Пико / и т. Д. / Хосты

При появлении запроса введите пароль вашей учетной записи администратора.

Отредактируйте файл так, чтобы результат был примерно таким:

##
# База данных хоста
#
# localhost используется для настройки интерфейса обратной петли
# при загрузке системы.Не меняйте эту запись.
##
127.0.0.1 localhost localhost2 localhost3
255.255.255.255 broadcasthost
:: 1 localhost
fe80 :: 1% lo0 localhost

Вместо localhost , localhost2 , localhost3 вы можете фактически ввести имя проекта.

редактирование / etc / hosts в Mac OS X

Когда вы закончите редактировать файл / etc / hosts, нажмите Control-O, чтобы вывести свои изменения в файл. Когда будет предложено перезаписать существующий файл, подтвердите, нажав Return.Редактор перезапишет существующий файл / etc / hosts. Нажмите Control-X, чтобы выйти из pico.

3. Отредактируйте файл httpd.conf

Откройте файл httpd.conf , расположенный в / Applications / MAMP / conf / apache , в любом текстовом редакторе (подойдет TextEdit в текстовом режиме, TextWrangler или BBEdit).

Путь к вашим файлам Apache в MAMP на OS X

Откройте файл httpd.conf, расположенный в / Applications / MAMP / conf / apache , в текстовом редакторе по вашему выбору (подойдет TextEdit или BBEdit).

Перейдите к концу этого файла и введите следующее:

#NameVirtualHost *: 8888
Include /Applications/MAMP/conf/apache/vhosts.conf

Это гарантирует, что Apache прочитает содержимое файла vhosts.conf, который вы собираетесь создать.

3. Создайте файл vhosts.conf

Создайте новый текстовый файл и сохраните его в пути включения, который вы определили на предыдущем шаге. Введите в него этот код:

# Virtual Hosts
#
# Пример VirtualHost:
# Практически любая директива Apache может помещаться в контейнер VirtualHost.
# Первый раздел VirtualHost используется для всех запросов, которые не
# соответствуют ServerName или ServerAlias ​​в любом блоке.
#
# ServerAdmin [email protected]
# DocumentRoot "/www/docs/dummy-host.example.com"
# ServerName dummy-host.example.com
# ServerAlias ​​www.dummy-host. example.com
# ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
# CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log common"
#
# ServerAdmin webmaster @ dummy-host2.example.com
# DocumentRoot "/www/docs/dummy-host2.example.com"
# ServerName dummy-host2.example.com
# ErrorLog "/private/var/log/apache2/dummy-host2.example.com -error_log "
# CustomLog" /private/var/log/apache2/dummy-host2.example.com-access_log common "

ServerName localhost
DocumentRoot / Applications / MAMP / htdocs /

индексы опций FollowSymLinks MultiViews
AllowOverride All
Order allow, deny
Allow from all

ServerName localhost2
DocumentRoot / Applications / MAMP / htdocs2 /

индексы опций FollowSymLinks MultiViews
AllowOverride All
Order allow, deny
Allow from all

ServerName localhost3
DocumentRoot / Applications / MAMP / htdocs3 /

индексы опций FollowSymLinks MultiViews
AllowOverride All
Order allow, deny
allow from all

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

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

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

htdocs2
htdocs3

Расположение сервера MAMP в Mac OS X

5. Перезагрузите и проверьте

Перезапустите службы MAMP.
Чтобы убедиться, что все в порядке, укажите в браузере:
http: // localhost2: 8888/

Это то, что вы увидите, когда ваша конфигурация заработает.

Если вы видите что-либо, кроме сообщения об ошибке браузера, например, если вы видите эту информацию:

Индекс /
Apache / 2.0.64 (Unix) PHP / 5.3.5 DAV / 2 Server на порту localhost2 8888

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

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *