определение понятие значение информация система структура принцип |
Этой статьей я закрываю уроки о том как сделать домашний сайт при помощи веб сервера XAMPP. Принцип создания домашних сайтов одинаков для всех локальных серверов. Физически сайт в домашних условиях представляет собой отдельную папку среди папок серверной программы. Имя папки определяет название сайта. Теперь разберемся с устройством интернета внутри компьютера и создадим для нашего сайта на XAMPP виртуальные хосты.
Статья входит в цикл статей Локальный веб сервер для пояснения процесса создания сайта внутри домашнего компьютера.
Наверно, стоит напомнить читателям - как устроен Интернет. Сайты на жестких дисках у провайдера или на домашнем компьютере - это папки для размещения материала сайта и внутренних программ. Все сайты (как папки) Интернета, аналогично и внутри компьютера, связаны средствами связи, но для того, чтобы эти папки стали сайтами нужно, (1) чтобы в сети работала программа сервер (даже внутри компа она должна создать среду Интернета) и (2) у пользователя на компьютере должна быть включена программа браузер, которая позволяет "видеть" сайты - потому что браузер, если знает адрес сайта в сети или домашнем компьютере, умеет заходить внутрь его папки, брать текст и картинки и "рисовать" их на экране монитора у посетителя сайта.
Потребительский кредит на неотложные нужды
Потребительский единовременный кредит
Потребительский возобновляемый кредит
Кредит на приобретение товаров
Потребительский кредит на недвижимость
Программа сервер - это вроде операционной системы для всего Интернета, а браузер - это аналог программы Word, но только браузер умеет читать не документы, а сайты - как документы, написанные на языках HTML, PHP, PERL ...
Статья написана для пояснения статей в рубрике Программы для создания сайта и имеет постоянную ссылку: //design-for.net/page/nastrojka-virtualnyh-hostov
Создание виртуальных хостов
1.1. Мы уже знаем, что нет никакой разницы между сайтом designfornet на компьютере дома или сайтом design-for.net на сервере у хостера. Однако, если для перехода к сайту design-for.net достаточно вставить его имя в строку адреса браузера, как мы сразу попадаем на первую страницу моего сайта: //design-for.net/ А вот по ссылке //designfornet/ этого не произойдет, хотя сам сайт существует. Причина в том, что любой браузер будет искать его в большом интернете. Для перехода на сайт designfornet потребуется более сложная ссылка вида //localhost/designfornet/www/ И это при условии запуска веб сервера XAMPP (ведь сервер для //design-for.net/ где-то работает круглосуточно). 1.2. В тексте этой ссылки //localhost/designfornet/www/ для браузера указан путь, какой ему надо преодолеть до папки www нашего сайта, где лежит страница index.html, из которой он вычитывает и рисует нам на экране приветствие «Это домашний сайт designfornet. Ура!». 1.3. Я вижу противоречие в написаниях ссылок: - длинной ссылки для сайта внутри компьютера с коротким путем
и
- короткой ссылки для перехода на сайт, расположенный за тысячи миль от моего дома на чужом компьютере (сервере). 1.4. Весь секрет состоит в существовании специальных серверов DNS, в которых прописывают место расположения (IP) каждого сайта в сети, что позволяет для нас - людей – указывать только короткую ссылку с понятными для человека словами, тогда как в действительности ссылка для самой программы браузера остается в виде ряд чисел. Для людей же составляются ЧПУ – человеко-понятные урлы. В тексте человеко-понятной ссылки //design-for.net/ весь длинный путь от моего компьютера до сервера хостера и через его папки к папке сайта был спрятан, а указана лишь эта конечная папка design-for.net на физическом сервере, адрес которого был подсказан браузеру на DNS сервере. |
1.5. Если мы хотим сделать интернет внутри компьютера копией Большого, то нам надо прописать наш домашний сайт designfornet в особом файле, который является аналогом сервера DNS и научиться сокращать вид ссылки до общепринятого вида:
//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 может игнорировать локальные хосты.
Если мы сделали все аккуратно, то по любой ссылке //designfornet/ или //www.designfornet/ будет открываться один и тот же сайт designfornet на странице с приветствием «Это домашний сайт designfornet. Ура!».
2.7. Сделаем небольшие выводы из нашего урока по созданию виртуальных хостов.
В системе Windows имеется специальный файл hosts в котором можно записать в виде исключения домашние сайты, тогда браузеры не будет искать их в Большом Интернете. Такой файл выполняет роль DNS сервера, который знает картографию сайтов в Интернете.
В программе сервера Apache в главном конфигурационном файле httpd.conf требуется активировать возможность определения синонимов (псевдонимов) сайта (без и с www) в тексте ссылок, тогда по разным ссылкам:
//designfornet/
//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 в браузер. Если все было сделано без ошибок, то ссылки //my_site-2.local и //www.my_site-2.local будут вести на одну и туже страницу с приветствием «Это сайт my_site-2.local».
Я надеюсь, что теперь ни у кого не будет трудностей с созданием сайта на вебсервере XAMPP и настройках виртуальных хостов.
Вы можете еще потренироваться в создании сайтов, например, с именем site3.home.
Я думаю что можно сделать даже небольшое обобщение по принципам устройства интернета.
Главной программой интернета является программа браузер, которую мы заставляем искать сайт, если укажем его в строке адреса. Сама она не знает, где лежит запрашиваемый сайт, поэтому вначале спрашивает у системы windows (в файле hosts) – нет ли внутренних сайтов, как наши. Если сайта нет в списке, то браузер обращается на DNS сервер в Интернете, которые знают картографию сайтов в сети. Получив от DNS серверa адрес сайта браузер переходит на тот физический сервер, где лежит папка сайта и активирует серверные программы. Они выдают ему одну и туже страницу, даже при наличии в ссылке псевдонимов (без и с www).
Настройка виртуальных хостов – это лишь создание коротких и понятных для людей ссылок.
Комментариев: 11 RSS
1Сергей07-08-2013 13:34
Я недавно откопал для плагин позволяющий добавлять хосты через интерфейс xampp, как по мне очень удобно
//www.kutsevalov.name/2013/08/05/xampp-virtual-host-manager-add-on/
2Игорь19-12-2013 13:44
Добрый день!
создал сайт по адресу C:/my_project/cs.local/www
внес все вышеуказанные настройки в файлах (hosts, httpd.conf,httpd-vhosts.conf)
однако, при запуске //localhost/xampp/ выдает ошибку
Доступ запрещен!
Новый XAMPP концепция безопасности:
Доступ к запрошенного объекта доступна только из локальной сети.
Этот параметр может быть настроен в файле "HTTPD-xampp.conf".
Если вы думаете, что это ошибка сервера, пожалуйста, свяжитесь с веб-мастером
при переходе по адресу //localhost/www.cs.local
выдает ошибку
Доступ запрещен!
Вы не имеете доступа к запрашиваемый объект. Это либо читать-защищенные или не может быть прочитан сервером.
Если вы думаете, что это ошибка сервера, пожалуйста, свяжитесь с веб-мастером
Ошибка 403
локальный
Apache/2.4.7 (Win32) OpenSSL/1.0.1e PHP/5.5.6
Ошибка 403
в папке сайта error_log
[Чт 19 декабря 13:29:30.436559 2013] [authz_core: ошибка] [PID 7056: раза в сутки 1988] [клиент 127.0.0.1:58158] AH01630: клиент отрицает конфигурации сервера: C :/ my_project / cs.local / WWW / www.cs.local[Чт 19 декабря 13:29:30.452560 2013] [authz_core: ошибка] [PID 7056: раза в сутки 2000] [клиент 127.0.0.1:58153] AH01630: клиент отрицает конфигурации сервера: C :/ my_project / cs.local / WWW / XAMPP[Чт 19 декабря 13:29:31.444617 2013] [authz_core: ошибка] [PID 7056: раза в сутки 2064] [клиент 127.0.0.1:58163] AH01630: клиент отрицает конфигурации сервера: C :/ my_project / cs.local / WWW /локальный
Apache/2.4.7 (Win32) OpenSSL/1.0.1e PHP/5.5.6
Подскажите - как и где исправить ошибку!!!
3Vladimir Tochilin22-12-2013 16:02
Добрый день, Игорь
Собственно, я не слишком большой спец по КСАМПУ, но если вы устанавливаете его на компе дома, то я советую использовать старые версии. Попробуйте повторить как у меня - вроде и даже не раз получалось без запинок.
Если вы уж ставите сайт на ксамп и открываете его в Интернет - то тут уж вам самим придется изучать матчасть - я считаю это нерационально, хотя, если комп постоянно включен - и может иметь место. Однако - это не серьезно, как макет сайта - ДА, а сам сайт стоит устанавливать сразу на хостинг и не заморачиваться - все ошибки сервера перебрать и исправить - вам не хватит жизни
4АНДРЕЙ29-12-2013 00:55
ХОРОШАЯ СТАТЬЯ ПО НАСТРОЙКАМ xampp! НО У МЕНЯ ТАКАЯ ЖЕ ОШИБКА КАК У ИГОРЯ!
ТЕ В ПАПКЕ HTDOCS БЕЗ ПРОБЛЕМ СОЗДАЮТСЯ ВИРТУАЛЬНЫЕ ХОСТЫ А ВОТ НА ДИСКАХ C:D: НИ В КАКУЮ.....
КАК Я ПОНЯЛ НАДО РАЗБИРАТЬСЯ С ПУТЯМИ В httpd-xampp.conf
Access forbidden!
You don't have permission to access the requested directory. There is either no index document or the directory is read-protected.
If you think this is a server error, please contact the webmaster.
5Cypher28-01-2015 23:52
Все получилось. Спасибо.
Возможно ли обобщить эту схему для сайта с произвольным именем?
Что-то типа
127.0.0.1 *.local
//*.local/
c:\xampp\htdocs\*\index.html
чтобы для каждого сайта не прописывать каждый раз одно и тоже?
6Vladimir Tochilin29-01-2015 09:33
Ответ Cypher. Я так понимаю, что вам не ндравится настраивать сервер, и вы хотели бы где-то получить форму, куда можно было только вписывать имена сайтов. Так процедура записи имени сайта в настройки сервера – как раз и есть такая форма – ведь программе сервера фиолетово, как вы там напишите адрес сайта БУКВАМИ – она всё равно соотнесет его с определенным числом - номером, которое будет IT-адресом нового узла в среде Интернета.
По умолчанию ваш компьютер уже является узлом Интернета (читаем правильно – уже имеет IT-адрес) – а новый сайт как новый узел ОБЯЗАН иметь конкретный адрес – а если адрес размыт – то взаимодействия узлов не будет. А адрес нельзя указать где-то, кроме как в сервере – он связывает узлы, только если знает их адреса. Не указали конкретный адрес - нет узла, а знать и самого сайта, а возможность для неоганиченного числа *local уже встроена. Причем в Интернете письма "на деревню дедушке" даже на почту не принимают.
7Иван26-04-2015 22:30
Здравствуйте!
В случае html-сайта вроде всё понятно, но что делать, если для разработки используется CMS? Конкретно у меня стоит Joomla. Сейчас есть необходимость быстро накропать сайт для домоуправления, не прерывая работы над тем сайтом, для которого собственно всё и устанавливалось. Как это сделать? Joomla лежит в Apps и там алгоритм "сделать еще одну папку и скопировать в нее всё" не прокатывает даже с правкой конфигурационных файлов. Видимо из-за того, что всё хранится в базе, а новую базу никто не делал.
Как тут быть?
8Vladimir Tochilin27-04-2015 09:27
Ответ для Ивана
Наверно, надо следовать инструкции не для Джумлы, а для КСАМПа Сайт на XAMPP
1.1. Для размещения сайтов в XAMPP предназначена специальная папка с именем htdocs (C:\xampp\htdocs). Перейдем в нее и создадим новую папку с именем сайта designfornet для размещения файлов нашего сайта.
Пример создания сайта
Собственно - под файлами вашего сайта и подразумевается CMS Удачи
9Владислав21-10-2016 21:19
Большущее спасибо за статью!
Всё работает XAMPP-win32-5.5.28
10Alexey22-04-2017 11:28
нашел решение проблемы с доступом, исправил, вроде работает, может кому поможет
DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
ServerName dropbox.local
ErrorLog "logs/dropbox.local-error.log"
CustomLog "logs/dropbox.local-access.log" combined
# AllowOverride All # Deprecated
# Order Allow,Deny # Deprecated
# Allow from all # Deprecated
# --New way of doing it
Require all granted
11Vadim01-05-2017 17:43
Спасибо, Alexey! Работает и у меня.