Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > PHP / MySQL

PHP / MySQL Создание динамических Веб-ресурсов

Ответ
 
Опции темы
Старый 13.12.2011, 18:01   #1
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
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 echo (1+2); ?>
Положил ещё парочку других файлов для массовки.
Теперь я хочу, чтобы этот сайт "висел" на домене mysupermegasite. Займёмся настройкой.

Для этого необходимо 2 вещи:
1. Настроить сервер, чтобы он знал, что выдавать в случае домена site1, а что в случае site2, что делать в остальных случаях.
2. Заставить Браузер по нужному домену обращаться на ваш комп.

Со вторым пунктом - подробнее. Я не упомянул одну вещь: до того, как стучаться к DNS-серверу, Браузер лезет в hosts-файл. В нём хранятся записи, какой домен на какой IP отправлять. Если он находит там нужный адрес, то к DNS jн уже не пойдёт. Вывод: в том файле можно написать неправду. Чем и займёмся.

Открываем Блокнотом (либо любым другим плейнтекстовым редактором) вот этот файл (если включён UAC, то понадобится запустить Блокнот с админскими правами):
C:\Windows\System32\drivers\etc\hosts
И пишем добавляем в него новую строчку:
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")
В чёрное окошко пишем:
ipconfig /flushdns
И жмакаем Enter. Этим действием вы сбрасываем кэш DNS Винды. Иногда запись о домене может там заваляться, и ваша строчка в hosts-файле не сработает как надо.
Хотя обычно это не требуется.

Так, Винду "обманули". Теперь пора настраивать наш сервер.

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

Для начала надо его включить.

Открываем вот этот файл:
C:\wamp\bin\apache\Apache2.2.21\conf\httpd.conf
В нём ищем строчку:
#Include conf/extra/httpd-vhosts.conf
Раскомменчиваем её (убираем решётку в начале). Всё. теперь можно и его самого редактировать. Открываем

C:\wamp\bin\apache\Apache2.2.21\conf\extra\httpd-vhosts.conf
В нём в конец добавляем вот такое:
<VirtualHost *:80>
    DocumentRoot "C:\wamp\projects\mysupermegasite"
    ServerName mysupermegasite
    <directory "C:\wamp\projects\mysupermegasite">
        Options Indexes
        AllowOverride all
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
    </directory>
</VirtualHost>
Разбираем.

Всё добро у нас обрамлено в 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. Он выведет тройку.
Если всё так - то поздравляю, вы настроили виртуальный хост! Аналогично можно добавлять ещё виртуальные хосты и иметь на компе несколько разных сайтов.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена


Последний раз редактировалось ABTOMAT, 25.12.2011 в 16:35.
(Offline)
 
Ответить с цитированием
Эти 11 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Harter (14.12.2011), HolyDel (25.12.2011), Hurrit (15.11.2012), johnk (22.03.2012), moka (13.12.2011), Nuprahtor (13.12.2011), pax (22.03.2012), Randomize (14.12.2011), SBJoker (13.12.2011), treycerok (25.12.2011), Черный крыс (15.08.2013)
Старый 25.12.2011, 01:25   #2
treycerok
Оператор ЭВМ
 
Аватар для treycerok
 
Регистрация: 11.11.2011
Адрес: Ростов-на-Дону
Сообщений: 41
Написано 9 полезных сообщений
(для 17 пользователей)
Ответ: WAMP - настройка виртуальных хостов

Хорошая статья, заслуженный, отечественный ПЛЮС на погоны =)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:47.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com