WAMP - настройка виртуальных хостов
Если вы хотите держать несколько веб-проектов на своей рабочей машине с WAMP'ом, то этот пост для вас!
Если у вас ещё нет WAMP'а, то вот тут написано, как его установить: http://forum.boolean.name/showthread.php?t=16026 Спешу заметить, что данная инструкция, в-общем-то справедлива и для всех остальных веб-серверов, основанных на Апаче, в т.ч. и на других операционных системах (например, LAMP). Конечно, пути будут иные, но httpd.conf везде есть, и если вы поймёте, что туда писать - сможете настроить где угодно. Предупреждение: думаю, вы уже догадались, что прежде чем какие-то файлы менять, нужно сделать их резервную копию, чтобы в случае криворукости можно было их восстановить? Для начала немного теории. Что такое доменные имена, как работают и зачем нужны? Как вы знаете, у компов в Сети есть IP-адреса. Зная IP-адрес, можно обратиться к нужному хосту (хостом называется любая машина в Сети - обычный комп, сервер и т.д.). Например, есть машина с IP-адресом 173.194.32.20 и на ней есть какой-то сайт. Мы заходим по адресу http://173.194.32.20 и видим его (да, это сайт Гугла). И всё было бы здорово, но человеку трудно запоминать циферки. Гораздо проще запомнить какое-то осмысленное слово. Например google.ru. Вот это и есть доменное имя. Доменное имя указывает на IP-адрес. То есть мы ввели в браузер http://google.ru/, а браузер уже понял, что нужно стучаться на хост 173.194.32.20, а нам помнить IP вовсе необязательно. Как браузер узнаёт о том, что Гугл - он на 173.194.32.20 ? Как браузер (и вообще Операционная Система) узнаёт о появлении новых сайтов? Для этого существует Доменная Система Имён - DNS. И множество DNS-серверов в мире. Сначала Браузер получает от юзера домен - google.ru. Браузер стучится к ближайшему DNS-серверу (обычно это сервер вашего провайдера): — Эй, ДНС-север! Ты не в курсе, где находится google.ru ? — Не вопрос, сейчас посмотрю у себя в записях! Если сайт появился недавно, и DNS-сервер про него не знает, он идёт к другому DNS-серверу и спрашивает его: — Эй, сосед! Тут google.ru спрашивают, ты не знаешь, где это? — Хмм, сейчас погляжу. Если и он не знает, то спрашивает у другого сервера и т.д., до тех пор, пока не найдёт (или не узнает, что нет такого). Однако обычно если сайт популярный, то DNS-сервер обычно уже знает ответ. И говорит Браузеру: — google.ru - это вот тут: 173.194.32.20 ! — ОК, спасибо! Но на этом функция доменного имени не кончается. Далее Браузер идёт к 173.194.32.20 и говорит: — Эй, 173.194.32.20! Покажи-ка мне сайт google.ru! — Вот, держи! Как вы заметили, Браузер сказал Хосту, что хочет именно сайт google.ru. Хорошо Гуглу, у них на целый сервер один сайт. Поэтмоу даже если Браузер идёт по ссылке http://173.194.32.20, то Хост всё равно покажет ему сайт: — Эй, 173.194.32.20! Покажи-ка мне сайт! — А какой вас интересует? — Дык... Не сказали! — Ну ничего, у меня всего один сайт. Вот, держите! Ну, если честно, Браузер в этом случае считает доменом ip-адрес хоста, то есть 173.194.32.20 Но суть та же. Ситуация совсем другая, если сервер один, а сайтов на нём несколько. Например сайт site1.ru и site2.ru лежат на одном и том же хосте. с ip-адресом IP. Что делает браузер, если идёт по ссылке site1: 1. Уточняет IP у DNS. Получает IP 2. Идёт к хосту IP и запрашивает site1 3. Поулчает site1 Что есть site2: 1. Уточняет IP у DNS. Получает IP 2. Идёт к хосту IP и запрашивает site2 3. Поулчает site2 Как вы поняли, доменное имя ещё и помогает серверу понять, какой именно сайт от него хотят увидеть. Точно так же вы можете иметь несколько веб-проектов на одной машине! Для начала создадим папку для нашего нового сайта. Я сделал папку C:\wamp\projects\mysupermegasite, сделал там файл ololo.php с таким содержимым: PHP код:
Теперь я хочу, чтобы этот сайт "висел" на домене mysupermegasite. Займёмся настройкой. Для этого необходимо 2 вещи: 1. Настроить сервер, чтобы он знал, что выдавать в случае домена site1, а что в случае site2, что делать в остальных случаях. 2. Заставить Браузер по нужному домену обращаться на ваш комп. Со вторым пунктом - подробнее. Я не упомянул одну вещь: до того, как стучаться к DNS-серверу, Браузер лезет в hosts-файл. В нём хранятся записи, какой домен на какой IP отправлять. Если он находит там нужный адрес, то к DNS jн уже не пойдёт. Вывод: в том файле можно написать неправду. Чем и займёмся. Открываем Блокнотом (либо любым другим плейнтекстовым редактором) вот этот файл (если включён UAC, то понадобится запустить Блокнот с админскими правами): Цитата:
127.0.0.1 mysupermegasite Разберёмся, что это такое. 127.0.0.1 - по этому IP любой комп ссылается сам на себя. То есть 127.0.0.1 - это вдрес вашего компа в любой сети либо без неё. mysupermegasite - ваш домен. Можно использовать также домен второго уровня mysupermegasite.com, и третьего ololo.mysupermegasite.com т.д., я обычно когда придумываю домен для нового проекта люблю не указывать домен первого уровня (.com, .ru и т.д.) чтобы не путать с обычными, Интернетовскими сайтами. Но если вдруг надо - можете юзать. Например вы точно знаете, что в Интернете у вашего сайта точно будет домен mysupermegasite.com. Тогда можете его разрабатывать с таким адресом на рабочей машине, а после заливать на сервак в Интернете и не бояться, что будут какие-то проблемы из-за другого домена (хотя у хорошо сделанного сайта таких проблем быть не должно). + ещё неприятность: на рабочей машине и в Интернете они будут висеть на одном и том же домене и вам придётся всё время менять hosts чтобы переключиться. Итак, эта строчка говорит вашей Винде: если вдруг захотят попасть на mysupermegasite, то отправляй желающих сюда: 127.0.0.1 Для верности сделайте вот ещё что: запускаем командную строку (Win+К и в окошко пишем "cmd") В чёрное окошко пишем: Цитата:
Хотя обычно это не требуется. Так, Винду "обманули". Теперь пора настраивать наш сервер. В WAMP уже заготовлен файл для виртуальных хостов. Он отделён от основного конфига (чтобы там кривыми ручками не нагадили), но отключён. Для начала надо его включить. Открываем вот этот файл: Цитата:
Цитата:
Цитата:
Код:
<VirtualHost *:80> Всё добро у нас обрамлено в VirtualHost. В открывающем теге стоит *:80 .Это значит, что посетителей мы будем ждать именно на 80-й порт (стандартный порт http, на нём работают все сайты). Можно вешать его на другой порт, если вы по каким-то причинам не хотите, чтобы посетитель, не зная нужного порта, не мог зайти. Кроме того, с разными портами можно на одном домене держать несколько сайтов (например, сам сайт на 80 порту, а админка - на порту, например, 2083). Если вы хотите "постучаться" на сайт не по 80 порту, а по какому-то другому, то после адреса сайта нужно добавить этот порт через двоеточие. Например, если порт 2083: http://mysupermegasite:2083/ololo.php Пока что я рекомендую оставить 80. DocumentRoot "C:\wamp\projects\mysupermegasite" Здесь указывается папка, где у вас на компе лежит сайт. Тут всё понятно, наверное. Options Indexes Тут указываются опции. Пока что тут всего одна опция - Indexes. Она отвечает за то, чтобы если юзер зашёл в папку на сервере, ему бы показывался список файлов внутри. Если Indexes не будет, то вы увидите ошибку 403, если попытаетесь посмотреть содержимое папки. Можно дабавлять их несколько через пробел. Например: Options Indexes FollowSymLinks Тут уже две опции. FollowSymLinks - позволяет давать вашим скриптам доступ к файлам, которые находятся за пределами папки с вашим сайтом. Не рекомендую это включать, если у вас нет такой необходимости. AllowOverride all AllowOverride позволяет изменять правила для этой папки при помощи, например файлов .htaccess. Например, для всей папки вы запретили Indexes, а для подпапки "download" вы хотите разрешить. Тогда создаёте соответствующий .htaccess, кладёте в ту папку и она будет работать по правилам, которые в .htaccess'е, а не здесь. Order Deny,Allow Запрещаем доступ к нашему сайту, если не указано обратное. Deny from all Запретить заходить на наш сайт с любых компов. Allow from 127.0.0.1 но разрешить заходить со 127.0.0.1 (то есть с нашего компа) Да, наш сайт на WAMP'е доступен из Интернета не будет. Это золотое правило - не пущать в Интернет сайты в разработке, особенно с собственного компа. Если очень надо - меняем настройки (например добавляем IP-адрес друга, которому надо показать сайт, в разрешённые или, если вы очень храбрый, то all) Перезапускаем WAMP и заходим на http://mysupermegasite/ Там мы должны увидеть список файлов. Попробуйте запустить ololo.php. Он выведет тройку. Если всё так - то поздравляю, вы настроили виртуальный хост! Аналогично можно добавлять ещё виртуальные хосты и иметь на компе несколько разных сайтов. |
Ответ: WAMP - настройка виртуальных хостов
Хорошая статья, заслуженный, отечественный ПЛЮС на погоны =)
|
Часовой пояс GMT +4, время: 11:01. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot