Пытаясь программировать ...иногда даже получается

Гибкая настройка виртуальных хостов в WAMP

Если вы занимаетесь web-разработкой из-под Windows и еще не знаете что такое WAMP, то самое время узнать. Кратко, это очень мощная платформа для веб-разработки. Сегодня я хочу рассказать о гибкой настройке виртуальных хостов в ней.

Что такое WAMP?#

WAMP — очень удобная среда разработки под Windows. После его установки в вашем распоряжении будет связка Apache2 + PHP + MySQL с PHPMyAdmin. Что действительно очень удобно, так это наличие аддонов. Аддоны в WAMP дают возможность иметь на локальной машине сразу несколько версий вышеперечисленного одновременно и очень легко переключаться между ними. Думаю, такого вступления будет достаточно, чтоб определиться, нужно ли вообще читать дальше, а более подробную информацию можно найти на официальном сайте WAMP, ну и "поиск рулит".

Предмет сегодняшнего обсуждения возник в связи с тем, что WAMP не создает виртуальных хостов по умолчанию, хотя возможность такая в природе существует. После создания в дирректории www (корень локального сервера), например, папки test, вы сможете обращаться к нему по адресу http://localhost/test, но не http://test. В большинстве случаев, виртуальные хосты не нужны, но бывают и исключения. К тому же, мне так больше нравится. В дальнейшем, давайте условимся, что WAMP установлен в папку C:\wamp.

Как включить виртуальные хосты в WAMP#

Функционал виртуальных хостов не включен изначально. Для этого нужно открыть файл httpd.conf, который находится в папке conf активной версии сервера Apache. Например, для 2.4.4 — это C:\wamp\bin\apache\Apache2.4.4\conf\httpd.conf. Это обычный текстовый файл и открывается он соответственно. Далее ищем там фрагмент "Virtual hosts" и убираем знак комментария (#) в строке сразу после него, после нужно сохранить файл и перезапустить сервер. Должно получиться вот так:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

Как создать виртуальный хост в WAMP#

Для тех, кто не совсем понял, что произошло с изменениями в файле httpd.conf, поясню — мы указали, что при загрузке сервера нужно загружать еще один конфигурационный файл httpd-vhosts.conf, в котором как раз и хранится информация о виртуальных хостах.

Для того, чтобы создать виртуальный хост на локальном сервере, нужно сделать следующее:

  1. Создать папку с именем хоста в C:\wamp\www, например, C:\wamp\www\sample.
  2. Добавить его адрес в системный файл hosts:
    127.0.0.1 sample

    Для Windows 7, его расположение Windows\System32\drivers\etc\hosts. Это обычный тестовый файл и его можно править в "Блокноте".

    Не забывайте, что для внесения любых изменений в hosts нужно запустить программу для редактирования с правами администратора, а также разрешить изменения в программах защиты. Например, антивирус Avira не дает вносить правки, пока активен Real-Time Protection.

  3. Добавить хост в файл httpd-vhosts.conf:
    <VirtualHost *:80>
     ServerAdmin webmaster@localhost
     ServerName sample
     DocumentRoot "c:/wamp/www/sample"
     ErrorLog "logs/sample-error.log"
     CustomLog "logs/sample-access.log" common
     </VirtualHost>
  4. Сохраните все вышеупомянутые файлы и перезапустите сервер. Теперь http://sample станет доступен.

    Имейте ввиду, что некоторые браузеры могут перенаправить вас на сайт-поисковик по умолчанию, если при первом обращении к виртуальному хосту явно не указать протокол — http://

Как настроить виртуальные хосты в WAMP так, чтобы был доступен и localhost#

Вот здесь и начнутся проблемы, которые подтолкнули меня написать эту статью. Стал недоступен http://localhost, где находится много полезной информации, да и не для всех сайтов нужны виртуальные хосты, а запоминать их адреса и вводить постоянно вручную, откровенно, лень. Как бы забавно это не звучало, но вопрос решается добавлением еще одного виртуального хоста http://localhost. Пройдите все шаги создания виртуального хоста, но вместо sample используйте localhost, а в файл httpd-vhosts.conf нужно добавить следующее:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot "c:/wamp/www"
  ServerName localhost
  ErrorLog "logs/localhost-error.log"
  CustomLog "logs/localhost-access.log" common
</VirtualHost>

Вот теперь порядок! Можно пользоваться как виртуальными хостами, так и функционалом "домашней страницы" WAMP одновременно.