Домашняя страница 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
На самом деле это должно работать в основном одинаково для любого сервера Apache wndows, с отличиями только в том, где вы можете найти файлы конфигурации Apache.
Есть 3 шага для создания вашего первого виртуального хоста в Apache, и только 2, если у вас уже есть один определенный.
- Создайте определение (я) виртуального хоста
- Добавьте ваше новое доменное имя в файл HOSTS.
- Раскомментируйте строку в httpd.conf, содержащую файл определения виртуальных хостов.
Шаг 1. Создайте определения виртуального хоста.
Отредактируйте файл с именем httpd-vhosts.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">
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, чтобы окна знали, где его найти. Это похоже на создание записи 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
# 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-vhosts.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.