Для парсинга и изменения конфигурации 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; } } ... # Пример добавления новой секции VirtualHost с Location внутри. my $vhost = $conf->add_section(VirtualHost=>'127.0.0.1'); $vhost->add_directive(ServerAdmin=>'webmaster@localhost.localdomain'); $vhost->add_directive(DocumentRoot=>'/usr/share/www'); $vhost->add_directive(ServerName=>'www.localhost.localdomain'); $vhost->add_directive(ErrorLog=>'/var/log/apache/www-error.log'); my $location = $vhost->add_section(Location=>'/admin'); $location->add_directive(AuthType=>'basic'); $location->add_directive(Require=>'group admin'); $conf->save;
Модуль скорее полезен тем, кто использует конфиг в стиле апача, а не тем кто меняет конфиг самого апача.
На лету позволяет? Как мне добавить конфиг без перезапуска сервера?
Да, mod_vhost_alias известная штука. Но вопрос в другом - Как мне на "лету" изменить конфигурацию Апача? Без полного или неполного перезапуска сервера? Какие еще web сервера позволяют изменять конфигурцию "на лету", то есть без перезагрзки конфига целиком?
этот скрипт перезагрузит apache...
такого решщения я нигде не видел, есть конечно еще коменческие проекты...