Доброго времени суток!
В процессе разработке всегда хочется автоматизировать рутинные операции (или мне так кажется) и приступить непосредственно к действительно интересным вещам. Так как я являюсь веб-разработчиком, для меня такой операцией всегда было развертывание окружения. Сегодня я попытаюсь максимально упростить задачу создания нового хоста для нового проекта на локальной машине.
Если Вас замучило ручное создание хостов для Apache, а использовать готовый пакет типа XAMPP или Denwer нету желания/возможности/свой вариант, прошу под кат.
Конечно, что нам нужен Apache. Скачиваем и инсталлируем. Далее немного магии:
Первым делом выбираем папку где будут жить все наши проекты и делаем её доступной для Apache. Пусть это будет d:/sites (я использую Windows, так что все примеры будут для нее, но должно работать и в Linux):
Теперь автоматизируем процесс создания новых хостов. Для этой цели нужно включить модуль mod_vhost_alias для Apache и добавить всего 2 строчки в конфигурационный файл:
Ключ %-2 указывает Apache взять предпоследнюю часть URL запроса и направить запрос к подпапке в d:/sites. Как бонус будут работать и поддомены. Несколько примеров:
Больше про возможные ключи можно прочесть на странице документации.
Замечание. При такой конфигурации хостов не будет работать mod_rewrite. Проблему исправить очень просто: нужно лишь указать «RewriteBase /». В результате должно получиться как-то так:
Самым лучшим решением будет прописать новую зону *.local в роутере (если имеется), потому-что hosts файлы не поддерживают wildcard (*). Если роутера нету, то проблему можно обойти с помощью дополнительного софта.
Чтобы каждый раз не прописывать новый хост вручную, можно установить локальный DNS прокси. Я использую Acrylic DNS Proxy. Программа миниатюрная и предельно проста в использовании.
Для этих же целей есть Dnsmasq (спасибо Anonym). Редактируем /etc/dnsmasq.conf. Для зоны *.local нужно дописать:
Сохраняем изменения и перезапускаем Dnsmasq.
Windows не имеет встроенного sendmail. Я использую крошечную утилитку Test Mail Server Tool, которая просто складывает письма в папку.
В процессе разработке всегда хочется автоматизировать рутинные операции (или мне так кажется) и приступить непосредственно к действительно интересным вещам. Так как я являюсь веб-разработчиком, для меня такой операцией всегда было развертывание окружения. Сегодня я попытаюсь максимально упростить задачу создания нового хоста для нового проекта на локальной машине.
Если Вас замучило ручное создание хостов для Apache, а использовать готовый пакет типа XAMPP или Denwer нету желания/возможности/свой вариант, прошу под кат.
Конечно, что нам нужен Apache. Скачиваем и инсталлируем. Далее немного магии:
Mass virtual hosts
Первым делом выбираем папку где будут жить все наши проекты и делаем её доступной для Apache. Пусть это будет d:/sites (я использую Windows, так что все примеры будут для нее, но должно работать и в Linux):
<Directory d:/sites>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Теперь автоматизируем процесс создания новых хостов. Для этой цели нужно включить модуль mod_vhost_alias для Apache и добавить всего 2 строчки в конфигурационный файл:
NameVirtualHost *:80
VirtualDocumentRoot d:/sites/%-2
Ключ %-2 указывает Apache взять предпоследнюю часть URL запроса и направить запрос к подпапке в d:/sites. Как бонус будут работать и поддомены. Несколько примеров:
http://test.local -> d:/sites/test
http://qwerty.local -> d:/sites/qwerty
http://a.domain.local -> d:/sites/domain
Больше про возможные ключи можно прочесть на странице документации.
Замечание. При такой конфигурации хостов не будет работать mod_rewrite. Проблему исправить очень просто: нужно лишь указать «RewriteBase /». В результате должно получиться как-то так:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
# Your rewrite rules go next
</IfModule>
Автоматическая конфигурация DNS
Самым лучшим решением будет прописать новую зону *.local в роутере (если имеется), потому-что hosts файлы не поддерживают wildcard (*). Если роутера нету, то проблему можно обойти с помощью дополнительного софта.
Windows
Чтобы каждый раз не прописывать новый хост вручную, можно установить локальный DNS прокси. Я использую Acrylic DNS Proxy. Программа миниатюрная и предельно проста в использовании.
- В свойствах соединения с интернетом меняем адрес DNS на 127.0.0.1
- Редактируем файл настроек Acrylic: Программы\Acrylic DNS Proxy\Config\Edit Configuration File. Нужно указать DNS сервера Вашего провайдера или любой другой доступный (например DNS Google 8.8.8.8), которые будет использовать Acrylic, когда доменное имя отсутствует в кэше.
- Редактируем Программы\Acrylic DNS Proxy\Config\Edit Custom Hosts File. Acrylic понимает звёздочку. Ура! Лично я использую *. local
- Очищаем кэш и перезапускаем Acrylic: Программы\Acrylic DNS Proxy\Config\Purge Acrylic Cache Data
Linux
Для этих же целей есть Dnsmasq (спасибо Anonym). Редактируем /etc/dnsmasq.conf. Для зоны *.local нужно дописать:
address=/local/127.0.0.1
listen-address=127.0.0.1
Сохраняем изменения и перезапускаем Dnsmasq.
Бонус: настройка email
Windows не имеет встроенного sendmail. Я использую крошечную утилитку Test Mail Server Tool, которая просто складывает письма в папку.