Домашняя страница WAMPServer 2.5, меню ваших проектов и виртуальные хосты
В WampServer 2.5 произошла смена концепции, и для этого есть веская причина!
В WampServer 2.5 теперь настоятельно рекомендуется создавать виртуальные хосты для каждого из ваших проектов, даже если вы держите их в структуре \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
На самом деле, это должно работать в основном одинаково для любого сервера Windows Apache, с отличиями только в том, где вы можете найти файлы конфигурации Apache.
Есть 3 шага для создания вашего первого виртуального хоста в Apache, и только 2, если у вас уже есть один определенный.
- Создайте определение (я) виртуального хоста.
- Добавьте ваше новое доменное имя в файл HOSTS.
- Раскомментируйте строку в httpd.conf, содержащую файл определения виртуальных хостов.
Шаг 1. Создайте определения виртуального хоста.
Отредактируйте файл с именем httpd-hosts.conf
который для WampServer находится в
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
(Номера версий Apache могут отличаться, включите мозг, прежде чем продолжить)
Если вы редактируете этот файл впервые, удалите пример кода по умолчанию, он бесполезен.
Я предполагаю, что мы хотим создать определение для сайта с именем project1, который живет в
\wamp\www\project1
Очень важно, во-первых, мы должны убедиться, что localhost по-прежнему работает, так что это первое определение VHOST, которое мы поместим в этот файл.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
AllowOverride All
Require local
</Directory>
</VirtualHost>
Теперь мы определяем наш проект: и это, конечно, вы делаете для каждого из ваших проектов, когда вы начинаете новый.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
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, и большинство ОС Windows работают с XP SP3.
Теперь мы должны сказать Windows обновить свой кэш доменных имен, поэтому снова запустите командное окно, используя опцию меню « Запуск от имени администратора» , и сделайте следующее.
net stop dnscache
net start dnscache
Это заставляет Windows очистить свой кэш доменных имен и перезагрузить его, при перезагрузке он перечитает файл 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 на панели задач больше не становится ЗЕЛЕНЫМ, это означает, что вы, вероятно, сделали что-то не так в \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 новых пункта меню. Один называется [b] «Мои проекты» [/b] и включен по умолчанию.
И второй, называемый [b] «Мои виртуальные хосты» [/b], который по умолчанию не активирован.
«Мои проекты» перечислит любой подкаталог в каталоге \wamp \www и предоставит ссылку для запуска сайта в этом подкаталоге.
Как я уже говорил ранее, он запускает «project1», а не «localhost /project1», поэтому, чтобы ссылка работала, мы должны создать определение виртуального хоста, чтобы эта ссылка фактически запускала этот сайт в вашем браузере, без определения виртуального хоста. вероятно, запустит веб-поиск по названию сайта в качестве ключевого слова или просто вернет сайт, который не найден
Пункт меню «Мои виртуальные хосты» немного отличается. Он ищет файл, который используется для определения виртуальных хостов (мы вернемся к этому через минуту), и создает ссылки меню для каждого найденного параметра ServerName и создает пункт меню для каждого из них.
Это может показаться немного запутанным, так как после того, как мы создадим определение виртуального хоста для подкаталогов в папке \wamp \www, некоторые пункты появятся как в меню «Мои проекты», так и в меню «Мои виртуальные хосты».
Как включить другое меню «Мои виртуальные хосты»?
- Сделайте резервную копию файла \wamp \wampmanager.tpl, на тот случай, если вы допустите ошибку, это очень важный файл.
- Отредактируйте \wamp \wampmanager.tpl
- Найдите этот параметр
;WAMPPROJECTSUBMENU
, он находится в '[Меню.Слева] 'раздел.
- Добавьте этот новый параметр
;WAMPVHOSTSUBMENU
до или после параметра ;WAMPPROJECTSUBMENU
.
- Сохраните файл.
- Теперь щелкните правой кнопкой мыши значок wampmanager и выберите «Обновить». Если это не добавляет меню, выйдите и перезапустите wampmanager.
Большое примечание Новое меню появится, только если у вас уже определены виртуальные хосты! В противном случае вы не увидите никакой разницы, пока не определите VHOST.
Теперь, если вы возьмете это на логическое расширение
Теперь вы можете полностью переместить код своего веб-сайта за пределы структуры \wamp\
folder, просто изменив параметр DocumentRoot в определении VHOST. Так, например, вы можете сделать это:
Создайте папку на диске WAMP или любом другом диске (остерегайтесь сетевого диска, они немного сложнее)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
Теперь вы копируете код своего сайта или начинаете создавать его в папке \ sites \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">
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.