Авто-подхват новых VirtualHost

Роберт

Аналитик
Авто-подхват новых VirtualHost

Есть сайт www.что-то.ru работающий в каталоге /var/www/что-то
Есть сайт aaa.что-то.ru работающий в каталоге /var/www/virtual
Есть сайт bb.что-то.ru работающий в каталоге /var/www/virtual
Есть сайт ccc.что-то.ru работающий в каталоге /var/www/virtual
Есть сайт 4444.что-то.ru работающий в каталоге /var/www/virtual
Другими словами есть основной сайт и куча виртуальных (для разных пользователей) , но все виртуальные работают в одном каталоге!
Самый правильный способ , это создание собственного блока в httpd.conf для каждого такого виртуального сайта. Типа:
---
<VirtualHost ххх.хх.хх.ххх>
ServerName aaa.что-то.ru
DocumentRoot /var/www/virtual/
ErrorLog /var/log/error_aaa.что-то.ru
CustomLog /var/log/access_aaa.что-то.ru combined
</VirtualHost>
---
Но для этого мне надо после каждого создания такого сайта перестартовывать Apache чтобы он подхватил новые настройки. А мне очень-очень хочется сделать возможность создания новых сайтов для пользователей автоматически.
1) Можно ли как-то уговорить Апачи подхватывать внесённые изменения в настройки автоматически?
Или как сделать это минимальными жертвами? Ведь , я так понимаю , что если пользователь тянет с моего сервера большой файл , и в этот момент крон сделает "httpd stop;httpd start" , то файл оборвётся. Как хоть как-нибудь автоматизировать процесс обновления настроек для Апача?
2) Чтобы набрав aaa.что-то.ru люди попали на мой сайт , я должен прописать его в праймери и секондари NS серверах. А могу ли я написать там что-то типа *.что-то.ru , чтобы при вводе любого домена третьего уровня для моего "что-то.ru" , пользователь попадал бы на мою машину (я не смог найти чтобы в NS можно было бы писать маски). Если там это невозможно - подтвердите моё опасение.
 

Роберт

Аналитик
1) Ты предлогаешь это делать через маски? Мне кажется это неправильно , тогда я не контролирую адреса! Я бы хотел чтобы они явно прописывались в настройках. Только я не могу понять как заставить Апачи подхватывать эти настройки на лету?
2) Я не могу найти хоть какой-то пример того как создаётся в NS доступ с маской типа "*.сервер.ru". Может можешь чем-то намекнуть - каким образом это делается?
 

MiRacLe

просто Чудо
1) ты читал ссылку приведённую voodoo?
mod_vhost_alias
2)так и делается.. Настройка Bind

==cat==
$TTL 3600
$ORIGIN zone.tld.
@ IN SOA zone.tld. miracle.zone.tld. (

2004101802 ;
3600 ;
900 ;
3600000 ;
3600
);
@ IN NS 19X.XXX.XXX.XXX
* IN A 19X.XXX.XXX.XXX
==/cat==
 

Роберт

Аналитик
MiRacLe
Поправь если я ошибаюсь - voodoo предложил просто через маски типа VirtualDocumentRoot /var/www/%2/ дават доступ всем кто зашёл (и у каждого будет разный каталог). А мне этого совсем не надо - каталог будет у всех один , но чтобы я мог разрешать доступ в неё только тем кто зашёл через адрес который имеется у меня в списке (пропускаются только по списку). Для этого надо как-то уговорить РНР подхватывать на лету сделанные мной изменения (чтобы после каждого обновления httpd.conf изменения принимались). Я так понимаю что это невозможно (только если через крон). РНР не сможет дать команду на обновление сервера , так как у него недостаточно на это прав. Да и если делать "httpd stop;httpd start" , то апачи оборвёт все качающиеся в данный момент файлы.
mod_vhost_alias ведь не даст возможность мне проверить есть ли у %0 (у зашедшего домена) право на гуляние в моём сервере.

Ну простой пример:
есть сайт у которого чтобы ни написал: 1.сайт.ру , 2.сайт.ру или 3.сайт.ру - попадаешь в один и тот же каталог. Тоесть в DNS введено что все домены третьего уровня для сайт.ру - это мой сервер. И вдруг кто-то вводит 4.сайт.ру! А этот экаунт в моей базе данных не числится. Я хочу разрешить только для тех кому можно...
 

ys

отодвинутый новичок
Роберт

Тогда тебе прямой путь к mod_rerite и
External Rewriting Program, которая будет мапить, то что тебе надо и не будет мапить, что ненадо.

Кстати, тут лично для меня только одна проблема: я хочу, чтоб для всех сайтов были разные access/errror log, но с ходу не получается, приходится их разруливать внешними средствами :( .
 

Роберт

Аналитик
ys
Хм... Ты предлогаешь иметь один виртуальный сервер для всех каталогов , и просто через mod_rerite проверять - можно переправлять на него или нет? Интересная идея!
Но тогда ты легко можешь решить проблему логов если будешь использовать mod_vhost_alias. Как тебе моя идея?
А мог бы ты привести пример , как у тебя правила mod_rerite написаны и в виртуальном хосте?
 
Сверху