azzrael-denwer-ParseHosts

Как известно широко известный и популярный пакет для разработчика Denwer подключает виртуальные хосты автоматически. Достаточно положить в папку /home папку с именем домена. Способ простой и удобный. Но есть нюансы.

Синхронизация проектов под Denwer между разными компьютерами

У меня достаточно много доменов. В данный момент я настроил у себя процесс разработки таким образом: все проекты, над которыми я работаю, лежат в папках Денвера. Каждая подпапка www домена является папкой проекта в PhpStorm. В проектах настройки баз данных, прочие девелоперские настройки вынесены в отдельные файлы ( проекты в основном на WordPress и Yii, где это сделать не сложно ). Эти проекты средствами PhpStorm деплоются на рабочие сервера. Файл настроек, что очевидно, зависят от окружения сервера. Поэтому исключены средствами PhpStorm из деплоя. Рабочих места у меня как минимум два – сейчас это стационарный комп и ноутбук. Некоторое время ещё был и второй стационарный комп в офисе. Некоторые проекты довольно объемные 2-4Гб файлов и база MySQL под 100Мб.

Я пытался содержать это хозяйство на флешке. В принципе работало, но совершенно тормозно. Офисный комп был ещё с USB 1, и там с Денвером на флешке работать было совершенно не возможно.
Долгое время рабочим вариантом была синхронизация избранных папок проектов через симлинки и дропбокс. Необходимые папки и папка базы MySQL Denwer лежали в Dropbox, а из локальных версий Денвера в папки в Дропбоксе вели симлинки. Схема работала отлично. Но, к сожалению, из-за больших размеров проектов и ограничений Dropbox по бесплатным объемам, не получалось держать синхронизированными проекты целиком. Кроме того, Dropbox не дает выбрать разные папки для синхронизации и эта морока с симлинками не больно то радовала.
В итоге всё это привело к BTSync. Тут всё просто. Я синхронизирую папку Денвера целиком. То есть и с проектами и с базами данных. Со всем. Проблем с объемом нет. Синхронизация и по локалке, и по интернет. Можно выбирать папки для синхронизаций. Рассказывать тут особо нечего. Разве что от самого BTSync впечатления сыроватой программы. Но в итоге всё отлично синхронизируется. Причем не отдельные папки, а все проекты целиком. У меня на всех рабочих местах, включая ноутбук, всегда есть актуальная версия всех проектов. Также и сам денвер везде одинаковый. Для того чтобы начать работать над локальной версией проекта я просто запускаю денвер, отключаю в PhpStorm Automatic Deploy и всё работает. Единственный вопрос который я пока не придумал как автоматизировать – это синхронизация баз MySQL на продакшене и в денвере. Это приходится делать вручную.

Отлючение некоторых доменов в Денвере

Но была проблема у этой схемы, которая меня напрягала больше всего. Так как в Денвере лежали все проекты, даже те работы с которыми сейчас закончены, то при запуске денвера локально поднимались и те проекты, которые локально сейчас не нужны. Это реально проблема. Скажем рабочий есть проект на вордпрессе. Появляются комменты, пользовательский контент, я этот процесс мониторю, отвечаю на комменты и т.д. Если запущен денвер, то в браузере я вижу локальную версию. Вариант с переименованием папки в корне Денвера не подходит. И в целом по концепции, чтобы у меня всегда были готовые рабочие проекты. И гит ругается. И после переименования BTSync убивает полностью папку, создает новую и начинает синхронизироваться. При больших проектах это долго. И вообще это проблема Денвера. Встала задача запретить Денверу полнимать локальные хосты на все папки в /home.
По умолчанию у Денвера такого функционала нет. Есть папка – есть домен. После копания на dklab выяснилось, что если ручками прописать в hosts пары домен – IP, то денвер не будет поднимать такие домены локально. Схема рабочая. Но, на каждой рабочей машине свой hosts, синхронизировать его BTSync не хотелось. Да и опять же, вариант кривой.
В итоге после копания нашлось решение. Несколько кривое в силу того что я совершенно не знаю Perl на котором написаны скрипты Денвера. Но рабочее и пока меня устраивающее потому что не требующее изменений никаких файлов кроме одного файла скрипта Денвера.

Файл:

Функция:

После

Прописываем:

Каждая строка обозначает то слово, наличие которого в названии папки ( домена ) означает для денвера не создавать локальный хост. Если пост прочитает, кто разбирается в перле, то возможно поможет поправить так чтобы вынести это всё хозяйство в список. Пишите в комментах.

24 апреля 2014 |

Есть что сказать по теме статьи? Пожалуйста - пишите!