Ответ 1
Как создать виртуальный хост в 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
в разделе TOOLS на главной странице.
Вы увидите такую страницу:
-
Заполните поля, как указано инструкциями выше каждого поля
-
Конфигурация виртуального хоста будет создана для вас.
-
Теперь вы должны перезапустить DNS-кеш. Вы можете сделать это из меню wampmanager, как это
right click wampmanager->Tools->Restart DNS
. Кэш DNS будет перезапущен, а затем Apache также будет остановлен и перезапущен. Когда значок wampmanager станет зеленым, все будет завершено. -
Теперь вы должны создать простой файл
index.php
или установить свой сайт в созданную вами папку. -
Предполагая, что ваш VH был вызван
project.dev
Вы должны увидеть это имя в разделе Виртуальные хосты главной страницы WAMPServer. -
Вы можете запустить сайт из этого меню или просто использовать новое доменное имя в адресной строке EG
project1.dev
и запуск сайта shoudl.
Старый механизм WAMPServer 2.5 или если вы хотите сделать это вручную
В WampServer 2.5 и выше произошла смена концепции и есть веская причина для этого изменения!
В WampServer теперь настоятельно рекомендуется создавать виртуальный хост для каждого из ваших проектов, даже если вы держите их в структуре \wamp\www\subfolder
.
Документация виртуальных хостов
Домашняя страница WampServer (\wamp\www\index.php
) теперь ожидает, что вы создали виртуальный хост для всех своих проектов и, следовательно, будете работать правильно, только если вы это сделаете.
История
Чтобы облегчить жизнь начинающим, использующим WampServer для изучения PHP Apache и MySQL, было предложено создать подпапки в папке \wamp\www\
.
wamp
|-- www
|-- Chapter1
|-- Chapter2
|-- etc
Эти подпапки затем будут отображаться как ссылки на домашней странице 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, с различиями только в том, где вы можете найти файлы конфигурации Apache.
Есть три шага для создания вашего первого виртуального хоста в 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: первое определение в этом файле также будет сайтом по умолчанию, поэтому имя домена, используемое в браузере, не соответствует фактически фактически фактически размещенному домену, что делает локальный хост первым доменом в файле поэтому он сделает сайт загруженным, если попытка взлома просто использует ваш IP-адрес. Поэтому, если мы гарантируем, что безопасность Apache для этого домена ВСЕГДА УСТАНАВЛИВАЕТСЯ
Require local
любой случайный взломать с внешнего адреса получит ошибку и не попадет на ваш компьютер, но если вы опечатаете домен, вам будет показана домашняя страница WampServer, потому что вы находитесь на том же ПК, что и WampServer и thethefore local
.
Шаг 2:
Добавьте новое доменное имя в файл HOSTS. Теперь нам нужно добавить имя домена, которое мы использовали в определении виртуального хоста, в файл HOSTS, чтобы окна знали, где его найти. Это похоже на создание записи DNS A, но это видно только в этом случае на этом конкретном ПК.
Изменить C:\windows\system32\drivers\etc\hosts
Файл не имеет расширения и должен оставаться таким. Следите за записью, так как он может попытаться добавить расширение .txt
, если у вас нет лучшего редактора.
Я предлагаю вам загрузить Notepad ++, его бесплатный и очень хороший редактор.
Также это защищенный файл, поэтому вы должны отредактировать его с правами администратора, поэтому запустите редактор, используя опцию Run as Administrator.
Файл 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, либо в большинстве ОС Windows с XP SP3.
Теперь мы должны сказать окнам, чтобы обновить его кеш-имя домена, поэтому снова запустите окно команд, используя параметр Run as Administrator и сделайте следующее.
net stop dnscache
net start dnscache
Это заставляет окна очищать кеш-имя домена и перезагружать его, при перезагрузке он перечитывает HOSTS файл, поэтому теперь он знает о домене project1
.
Шаг 3: раскомментируйте строку в httpd.conf, которая содержит файл определения виртуальных хостов.
Измените свой httpd.conf, используйте меню wampmanager.exe, чтобы убедиться, что вы редактируете правильный файл.
Найти эту строку в httpd.conf
# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
И просто удалите #
, чтобы раскомментировать эту строку.
Чтобы активировать это изменение при запуске Apache, мы должны теперь остановить и перезапустить службу Apache.
wampmanager.exe -> Apache -> Service -> Restart Service
Теперь, если значок WAMP в системном трее снова не появляется GREEN, это означает, что вы, вероятно, сделали что-то не так в файле \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 есть два новых пункта меню. Один из них называется "Мои проекты" , который включен по умолчанию. И второй, называемый "Мои виртуальные хосты" , который по умолчанию не активирован.
'Мои проекты' перечислит любую вспомогательную директорию каталога \wamp\www и предоставит ссылку для запуска сайта в этом подкаталоге. Как я уже говорил ранее, он запускает "project1", а не "localhost/project1", поэтому для создания ссылки мы должны создать определение виртуального хоста, чтобы эта ссылка фактически запустила этот сайт в вашем браузере, без определения виртуального хоста, которое, вероятно, запустите веб-поиск имени сайта в качестве ключевого слова или просто верните не найденное условие сайта.
Пункт меню "Мои виртуальные хосты" немного отличается. Он ищет файл, который используется для определения виртуальных хостов (мы это получим через минуту) и создает ссылки меню для каждого параметра ServerName, который он находит, и создает пункт меню для каждого из них. Это может показаться немного запутанным, поскольку как только мы создадим определение виртуального хоста для вспомогательных каталогов папки \wamp\www, некоторые элементы появятся в обоих меню "Мои проекты" и в меню "Мои виртуальные хосты".
Как включить это другое меню "Мои виртуальные хосты"?
- Сделайте резервную копию файла \wamp\wampmanager.tpl, на случай, если вы допустили ошибку, это очень важный файл.
- Отредактируйте \wamp\wampmanager.tpl
- Найдите этот параметр
;WAMPPROJECTSUBMENU
, его в разделе "[Menu.Left]". - Добавьте этот новый параметр
;WAMPVHOSTSUBMENU
до или после параметра;WAMPPROJECTSUBMENU
. - Сохраните файл.
- Теперь щелкните правой кнопкой мыши значок wampmanager и выберите "Обновить". Если это не добавит меню, "exit" и перезапустите wampmanager.
Большая записка Новое меню появится, только если у вас уже есть определенные виртуальные хосты! В противном случае вы не увидите разницы, пока не определите VHOST.
Теперь, если вы примете это к своему логическому расширению
Теперь вы можете полностью переместить код веб-сайта вне структуры папок \wamp\
, просто изменив параметр DocumentRoot в определении VHOST. Например, вы можете сделать это:
Создайте папку на жестком диске или любом другом диске (остерегайтесь сетевого диска, они немного сложнее)
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, это изменение относится только к этому сайту и никому другому. Очень полезно для того, чтобы позволить клиенту просматривать ваши изменения в течение часа или около того, не копируя их на живой сервер. Это означает, что мы должны отредактировать этот файл вручную, чтобы включить или отключить этот доступ, вместо того, чтобы использовать пункт меню "Путь Online/Offline" на wampmanager.
Также я добавил некоторые изменения в конфигурацию PHP, опять же, которые будут применяться только к одному сайту. Очень полезно при обслуживании сайта с особыми требованиями, в отличие от всех других сайтов, которые вы поддерживаете. Я предполагаю, что из используемых параметров можно предположить, что у него в нем есть длинная страница, и он очень плохо написан и не будет работать с ошибками, отображаемыми в браузере, без ужасного беспорядка страницы. Поверьте мне, что такие сайты существуют, и люди все еще хотят, чтобы их поддерживали плохо. Но это означает, что нам нужно только изменить эти параметры для этого конкретного сайта, а не глобально для всех виртуальных сайтов, работающих на WampServer.