Как создать виртуальный хост в WampServer
WAMPServer 3 значительно упростил этот процесс!
Вы можете делать практически все с помощью утилиты, входящей в состав WAMPServer.
Создайте внутри папку, в которой будет находиться ваш project.site. Это может быть в C:\wamp\www\
каталоге или в совершенно отдельной папке, например C:\websites
.
Создайте папку в выбранном вами месте EG C:\websites\project1\www
или подc:\wamp\www\project1\www
Теперь откройте localhost wampmanager->localhost
и щелкните ссылку Add a Virtual Host
в разделе ИНСТРУМЕНТЫ на главной странице.
Вы увидите такую страницу:
Заполните поля, как указано в инструкциях над каждым полем.
Конфигурация виртуального хоста будет создана для вас.
Теперь вы должны перезапустить кеш DNS. Вы можете сделать это из меню wampmanager вот так right click wampmanager->Tools->Restart DNS
. Кэш DNS будет перезапущен, а затем Apache также будет остановлен и перезапущен. Когда значок wampmanager снова станет зеленым, все будет готово.
Теперь вы должны создать простой index.php
файл или установить свой сайт в папку, которую вы создали выше.
Предполагая, что ваш VH был вызван, project.dev
вы должны увидеть это имя в разделе « Ваши виртуальные хосты» на домашней странице WAMPServer.
Вы можете запустить сайт из этого меню или просто использовать новое доменное имя в адресной строке EG project1.dev
и запустить сайт.
Старый механизм WAMPServer 2.5, или, если вы хотите сделать все вручную
В WampServer 2.5 и выше произошла смена концепции, и для этого есть веская причина!
В WampServer сейчас НАСТОЯТЕЛЬНО рекомендуется создавать виртуальный хост для каждого из ваших проектов, даже если вы держите их в \wamp\www\subfolder
структуре.
Документация по виртуальным хостам
Примеры виртуального хоста
Домашняя страница WampServer ( \wamp\www\index.php
) теперь ожидает, что вы создали виртуальный хост для всех ваших проектов, и поэтому будет работать правильно только в том случае, если вы это сделаете.
История
Чтобы облегчить жизнь новичкам, использующим WampServer для изучения PHP, Apache и MySQL, было предложено создать подпапки в \wamp\www\
папке.
wamp
|
|
|
|
Эти подпапки затем будут отображаться как ссылки на домашней странице WampServer в меню под названием «Ваши проекты», и эти ссылки будут содержать ссылку на localhost/subfoldername
.
Допустимо только для простых руководств
Это упростило жизнь новичку и было вполне приемлемо, например, для тех, кто следовал инструкциям по программированию PHP. Однако он никогда не предназначался для использования при разработке настоящего веб-сайта, который позже вы захотите скопировать на свой действующий размещенный сервер. Фактически, если вы действительно использовали этот механизм, он часто вызывал проблемы, поскольку конфигурация живых сайтов не соответствовала вашей конфигурации разработки.
Проблема реальной разработки веб-сайтов.
Причина этого, конечно, в том, что значение DocumentRoot по умолчанию для wamp -
DocumentRoot "c:/wamp/www/"
независимо от того, как называлась ваша подпапка. Это мент, который часто использовал PHP-код, который запрашивал структуру или ваш сайт получал информацию при запуске на вашем WampServer разработки, отличную от той, которую он получал бы при работе на живом размещенном сервере, где конфигурация DocumentRoot указывает на папку в верхней части веб-сайта. файловая иерархия. Такой код существует во многих фреймворках и CMS, например WordPress, Joomla и т. Д.
Например
Допустим, у нас есть проект под названием project1, который хранится wamp\www\project1
и работает неправильно какlocalhost/project1/index.php
Вот что сообщит некоторые из рассматриваемых PHP-команд:
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
Теперь, если мы правильно определили этот сайт с помощью определения виртуального хоста и запустили его, так как http://project1
результаты на сайте разработки WAMPServer будут совпадать с результатами, полученными в реальной размещенной среде.
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
Поначалу это различие может показаться тривиальным, но если бы вы использовали фреймворк, такой как WordPress, или одну из CMS, например, Joomla, это может вызвать и действительно вызывает проблемы при перемещении вашего сайта на активный сервер.
Как создать виртуальный хост в WampServer
На самом деле это должно работать в основном одинаково для любого сервера Apache wndows, с различиями только в том, где вы можете найти файлы конфигурации Apache.
Есть 3 шага для создания вашего первого виртуального хоста в Apache и только 2, если он у вас уже определен.
- Создайте определение виртуального хоста
- Добавьте ваше новое доменное имя в файл HOSTS.
- Раскомментируйте строку в httpd.conf, которая включает файл определения виртуальных хостов.
Шаг 1. Создайте определение виртуального хоста
Отредактируйте файл с именем, в httpd-hosts.conf
котором находится WampServer.
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Номера версий Apache могут отличаться, задействуйте мозг, прежде чем продолжить)
Если вы редактируете этот файл впервые, удалите пример кода по умолчанию, он бесполезен.
Я предполагаю, что мы хотим создать определение для сайта с именем project1, который живет в
\wamp\www\project1
Очень важно, сначала мы должны убедиться, что localhost по-прежнему работает, поэтому это первое определение VHOST, которое мы добавим в этот файл.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
Теперь мы определяем наш проект: и это, конечно, вы делаете для каждого из своих проектов, когда начинаете новый.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
ПРИМЕЧАНИЕ. Каждый виртуальный хост определен как собственный DocumentRoot
. Есть также много других параметров, которые вы можете добавить в определение виртуальных хостов, проверьте документацию Apache.
Маленький в сторону
Как виртуальные хосты работают в Apache: первое определение в этом файле также будет сайтом по умолчанию, поэтому, если имя домена, используемое в браузере, не совпадает с каким-либо фактически определенным виртуально размещенным доменом, что делает localhost первым доменом в файле, поэтому это сайт, который загружается, если попытка взлома просто использует ваш IP-адрес. Поэтому, если мы гарантируем, что безопасность Apache для этого домена ВСЕГДА УСТАНАВЛИВАЕТСЯ НА
Require local
любой случайный взлом с внешнего адреса приведет к ошибке и не попадет на ваш компьютер, но если вы ошибетесь в написании домена, вам будет показана домашняя страница WampServer, потому что вы находитесь на том же компьютере, что и WampServer, и поэтому local
.
Шаг 2 :
Добавьте ваше новое доменное имя в файл HOSTS. Теперь нам нужно добавить доменное имя, которое мы использовали в определении виртуального хоста, в файл HOSTS, чтобы Windows знала, где его найти. Это похоже на создание записи DNS A, но в этом случае она видна только на этом конкретном ПК.
редактировать C:\windows\system32\drivers\etc\hosts
Файл не имеет расширения и должен оставаться таким. Не упустите блокнот, так как он может попытаться добавить.txt
расширение, если у вас нет лучшего редактора. Я предлагаю вам скачать Notepad ++, бесплатный и очень хороший редактор.
Кроме того, это защищенный файл, поэтому вы должны редактировать его с правами администратора, поэтому запустите редактор, используя Запуск от имени администратора. меню .
После внесения изменений файл hosts должен выглядеть следующим образом.
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Обратите внимание, что здесь у вас должны быть определения для адреса обратной связи IPV4, 127.0.0.1
а также адреса обратной связи IPV6.::1
поскольку Apache теперь поддерживает IPV6, а браузер будет использовать либо IPV4, либо IPV6, либо оба. Я понятия не имею, как он решает, что использовать, но он может использовать и то, и другое, если у вас включен стек IPV6, а большинство оконных ОС работают с XP SP3.
Теперь мы должны указать Windows обновить кэш доменного имени, поэтому снова запустите командное окно, используя параметр меню « Запуск от имени администратора» , и выполните следующие действия.
net stop dnscache
net start dnscache
Это заставляет Windows очистить кэш доменного имени и перезагрузить его, при перезагрузке он перечитает файл HOSTS, чтобы теперь он знал о домене project1
.
Шаг 3 Раскомментируйте строку в httpd.conf, которая включает файл определения виртуальных хостов.
Отредактируйте свой httpd.conf, используйте меню wampmanager.exe, чтобы убедиться, что вы редактируете правильный файл.
Найдите эту строку в httpd.conf
И просто удалите, #
чтобы раскомментировать эту строку.
Чтобы активировать это изменение в вашем запущенном Apache, мы должны теперь остановить и перезапустить службу Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Теперь, если значок WAMP на панели задач больше не становится ЗЕЛЕНЫМ, это означает, что вы, вероятно, сделали что-то не так с \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
файлом.
Если да, то вот полезный механизм, чтобы выяснить, что не так. Он использует функцию Apache exe (httpd.exe), чтобы проверять свои файлы конфигурации и сообщать об ошибках по имени файла и номерам строк.
Запустить командное окно.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
Так что исправьте ошибки и повторите тест, пока не получите результат
Syntax OK
Теперь еще кое-что.
На самом деле в системе меню wampmanager появилось 2 новых пункта меню. Один под названием «Мои проекты» включен по умолчанию. И второй под названием «Мои виртуальные хосты». , который по умолчанию не активирован.
«Мои проекты» перечислит все подкаталоги каталога \ wamp \ www и предоставит ссылку для запуска сайта в этом подкаталоге. Как я сказал ранее, он запускает 'project1', а не 'localhost / project1', поэтому для того, чтобы ссылка работала, мы должны создать определение виртуального хоста, чтобы эта ссылка действительно запускала этот сайт в вашем браузере, без определения виртуального хоста, скорее всего, запустить веб-поиск по названию сайта в качестве ключевого слова или просто вернуть условие «сайт не найден».
Пункт меню «Мои виртуальные хосты» немного отличается. Он ищет файл, который используется для определения виртуальных хостов (мы вернемся к этому через минуту), и создает ссылки меню для каждого найденного параметра ServerName и создает пункт меню для каждого из них. Это может показаться немного запутанным, поскольку после того, как мы создадим определение виртуального хоста для подкаталогов папки \ wamp \ www, некоторые элементы появятся как в меню «Мои проекты», так и в меню «Мои виртуальные хосты».
Как мне включить это другое меню «Мои виртуальные хосты»?
- Сделайте резервную копию файла \ wamp \ wampmanager.tpl, на всякий случай, если вы ошиблись, это очень важный файл.
- Отредактируйте \ wamp \ wampmanager.tpl
- Найдите этот параметр
;WAMPPROJECTSUBMENU
в разделе «[Menu.Left]».
- Добавьте этот новый параметр
;WAMPVHOSTSUBMENU
до или после;WAMPPROJECTSUBMENU
параметра.
- Сохраните файл.
- Теперь щелкните правой кнопкой мыши значок wampmanager и выберите «Обновить». Если это не добавит меню, «выйдите» и перезапустите wampmanager.
Важное примечание
Новое меню появится только в том случае, если у вас уже есть определенные виртуальные хосты! В противном случае вы не увидите разницы, пока не определите VHOST.
Теперь, если вы доведете это до логического продолжения
Теперь вы можете полностью переместить код своего веб-сайта за пределы \wamp\
структуры папок, просто изменив параметр DocumentRoot в определении VHOST. Так, например, вы можете сделать это:
Создайте папку на wamp-диске или любом другом диске (остерегайтесь сетевого диска, они немного сложнее)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Теперь вы копируете код своего сайта или начинаете создавать его в \websites\example.com\www
папке и определяете свой VHOST следующим образом:
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
Затем добавьте этот новый домен разработки в файл HOSTS:
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
ПРИМЕЧАНИЕ. Не рекомендуется использовать ServerName или ServerAlias, совпадающие с вашим живым доменным именем, так как если бы мы использовали example.com в качестве ServerName, это означало бы, что мы больше не сможем попасть на реальный действующий сайт с этого ПК, поскольку он направит example.com на 127.0.0.1, то есть на этот компьютер, а не в Интернет.
ТАКЖЕ: обратите внимание, что я разрешил доступ к этому сайту из Интернета из определений VHOST, это изменение будет применяться только к этому сайту и никакому другому. Очень полезно, чтобы позволить клиенту просматривать ваши изменения в течение часа или около того, не копируя их на рабочий сервер. Это означает, что мы должны редактировать этот файл вручную, чтобы включать и выключать этот доступ, а не использовать пункт меню «Подключить / Автономный» в wampmanager.
Также я добавил некоторые изменения в конфигурацию PHP, опять же, которые будут применяться только к этому сайту. Очень полезно при поддержке сайта с особыми требованиями в отличие от всех других сайтов, которые вы поддерживаете. Я предполагаю, что из используемых параметров мы можем предположить, что у него где-то есть давно работающая страница, и она очень плохо написана и не будет работать с ошибками, отображаемыми в браузере, без ужасного беспорядка на странице. Поверьте мне сайты , как этого есть и люди все еще хотят их сохранить плохо . Но это означает, что нам нужно изменить эти параметры только для этого конкретного сайта, а не глобально для всех виртуальных сайтов, работающих на WampServer.