Как стать автором
Обновить

Комментарии 15

Очень годное решение.
Да, это решение значительно лучше того, что я описывал с помощью PHP.
а с mod_vhost_alias все ещё проще, хосты создаются динамически.
Да, с этим модом еще проще создавать динамические хосты. Причина, по которой я использую mod_macro — возможность конфигурировать настройки php.
А мне вот не нравится такой вариант. Сложно определиться, в чем конкретно, но по совокупности мелких недостатков. Сразу на поверхности видятся 2 причины:

1. Плохо расширяемо: например хотим чтобы в каких-то вхостах была строка с конфигом логов, в каких-то не была, т.е. общий лог. В таком случае придется каждому макросу параметр передавать. Или там все же есть что-то вроде if?

2. Чем больше парсеров по пути, тем хуже. Начиная от необходимости продумывать для каждого «отбивание» (в смысле различные эксейп-последовательности для спецсимволов — это видно даже в вышеприведенном примере, предлагаю продумать все возможные варианты инъекции), и заканчивая необходимостью поддерживать в случае обновления софта на любом уровне изменений (это скорее сферический случай в вакууме, но тем не менее).
Вдогонку: тут был бы интересен вариант с Makefile. То есть на входе «исходник» — конфиги своего формата для php-скрипта, а на выходе — конфиги апача. И make будет следить за тем чтобы при обновлении исходника обновлялся конфиг апача (собственно, для этого он и предназначен, хоть немного и нестандартно его применение в данном контексте).
Каждой задаче — свое решение. Мой метод не претендует на универсальность, это лишь способ упростить создание нового виртуального хоста с заданным набором параметров.
Необходимость править ручками /etc/hosts выводит решение на PHP на первое место.
еще одна строчка в скрипт:
echo "127.0.0.1 $1" >> /etc/hosts
Создайте зону .dev и пропишите для нее *.dev на сервер разработки
А как под виндой этот модуль собрать никто не подскажет?
Правда к сожалению дальше этого я не ушёл.

Есть какая нибудь аналогичная програма для винды аля apache2ctl с помощью которой можно добавлять вирт. хосты?
apache2ctl restart аналогично виндового net apache2 restart
никто не мешает в винде делать batch файл с
echo Use VHost %1 %2 >> c:\path\to\myconfig.conf
#!/bin/bash
case $# in
	2)
		sudo echo "127.0.0.1 $1" >> /etc/hosts
		sudo echo "Use VHost $1 $2" >> /etc/apache2/conf.d/custom/vhosts
		sudo apache2ctl configtest && apache2ctl reload
	;;

	*)
		script_name=`basename $0`
		echo "Usage: $script_name <hostname> </path/to/wwwroot>" 
		echo "Example: $script_name myhost /apps/myhost"
	;;

esac
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории