Для парсинга и изменения конфигурации Apache удобно использовать модуль
Apache::Admin::Config
(http://search.cpan.org/dist/Apache-Admin-Config)Пример использования.
Имеем блок конфигурации
<VirtualHost *:80>
ServerAdmin rr522@dfghg.com
DocumentRoot /home/ab/www/data
ServerName mydomain.com
ServerAlias mydomain.com *.ydomain.com
CustomLog /home/ab/log/httpd-access.log combined
ErrorDocument 101 http://s.org
</VirtualHost>Нижеприведенный кусок кода, считает содержимое некоторых директив VirtualHost для определенного сервера
use Apache::Admin::Config;
...
my $conf = new Apache::Admin::Config "путь к файлу конфигурации"
or die $Apache::Admin::Config::ERROR;# Перебираем все директивы VirtualHost
foreach my $vh ( $conf->section('VirtualHost') ) {if ( $vh->directive('ServerName')->value eq "имя искомого хоста" ) {
# Нашли нужный хост, читаем параметры
my $serveradmin = $vh->directive('ServerAdmin');
my $costomlog = $vh->directive('CustomLog');
my $errorlog = $vh->directive('ErrorLog');
my @drtvs4 = $vh->directive('ErrorDocument');
my $serveralis = $vh->directive('ServerAlias');
....
# Добавляем новый алиас к параметрам ServerAlias
$vh->directive('ServerAlias')->set_value($serveralis . " " . "новый алиас");
....
# Записываем измененный файл на диск
$conf->save;
}
}URL: http://unixforum.org.ua/index.php?topic=14622
Обсуждается: http://www.opennet.me/tips/info/1842.shtml
я понимаю на лету вхост добавить, а это шара
Сам апач позволяет такое сделать?
Вообще-то позволяет. А совет действительно:
1. Несущественный. На CPAN есть тысячи модулей, можно из каждого выдрать sysnopsis и сделать такой совет.
2. Несущий мало практического смысла. Статические виртуальные хосты лучше вообще добавлять по другому и там шелла хватит, прочие настройки апача менять потоково регексами.Модуль скорее полезен тем, кто использует конфиг в стиле апача, а не тем кто меняет конфиг самого апача.
>Вообще-то позволяет. А совет действительно:
>1. Несущественный. На CPAN есть тысячи модулей, можно из каждого выдрать sysnopsis
>и сделать такой совет.
>2. Несущий мало практического смысла. Статические виртуальные хосты лучше вообще добавлять по
>другому и там шелла хватит, прочие настройки апача менять потоково регексами.
>
>
>Модуль скорее полезен тем, кто использует конфиг в стиле апача, а не
>тем кто меняет конфиг самого апача.На лету позволяет? Как мне добавить конфиг без перезапуска сервера?
Вообще-то многие изменения конфига апач может подчитать и без полного перезапуска. Но кроме того для виртуалхостов есть еще один механизм:
http://httpd.apache.org/docs/2.2/vhosts/mass.html
Ну и наконец mod_perl позволяет вообще творить с апачем чудеса, в отличии от например mod_php.
>Вообще-то многие изменения конфига апач может подчитать и без полного перезапуска. Но
>кроме того для виртуалхостов есть еще один механизм:
>http://httpd.apache.org/docs/2.2/vhosts/mass.html
>Ну и наконец mod_perl позволяет вообще творить с апачем чудеса, в отличии
>от например mod_php.Да, mod_vhost_alias известная штука. Но вопрос в другом - Как мне на "лету" изменить конфигурацию Апача? Без полного или неполного перезапуска сервера? Какие еще web сервера позволяют изменять конфигурцию "на лету", то есть без перезагрзки конфига целиком?
Что _именно_ вы хотите изменить? Например загрузить/выгрузить на лету модуль или поменять настройки другого чайлда врядли получится. А так инструменты следующие:
1. Использование .htaccess
2. Использование существующих модулей типа mod_perl
3. Написание своего модуля
>Что _именно_ вы хотите изменить? Например загрузить/выгрузить на лету модуль или поменять
>настройки другого чайлда врядли получится. А так инструменты следующие:
>1. Использование .htaccess
>2. Использование существующих модулей типа mod_perl
>3. Написание своего модуляИстория началась с ответа на коммент: "я понимаю на лету вхост добавить, а это шара".
Я хочу "на лету" добавить VirtualHost в сервере Apache2.2. Как мне это сделать? Пришлите готовое решение +).Или получается вы ошибались?
Давайте вы для начала научитесь _внимательно_ читать. Во-первых, это утверждение сделано не мной, я его лишь подтвердил. Во-вторых, я уже указал несколько способов, поставьте себе апач и проверьте.
>Давайте вы для начала научитесь _внимательно_ читать. Во-первых, это утверждение сделано не
>мной, я его лишь подтвердил. Во-вторых, я уже указал несколько способов,
>поставьте себе апач и проверьте.Ясно.
Вы таки попробовали reload? :)
>Вы таки попробовали reload? :)Нет, так как он не позволяет "на лету" добавить Vhost в апач.
Вы бы хоть попробовали прежде чем утверждать. Позволяет и добавить и удалить, причем можно удалить в момент выполнения скрипта и скрипт как ни в чем не бывало продолжит работать, а вот следующее обращение уже наткнется на 404. Если это для вас это не "на лету", то дальше говорить не о чем.
>Вы бы хоть попробовали прежде чем утверждать. Позволяет и добавить и удалить,
>причем можно удалить в момент выполнения скрипта и скрипт как ни
>в чем не бывало продолжит работать, а вот следующее обращение уже
>наткнется на 404. Если это для вас это не "на лету",
>то дальше говорить не о чем.Я тоже так думаю. Мы оперируем разными понятиями "на лету" и "добавить Vhost".
/usr/local/etc/rc.d/apache22 gracefulэтот скрипт перезагрузит apache...
>Что _именно_ вы хотите изменить?такого решщения я нигде не видел, есть конечно еще коменческие проекты...