URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 45321
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Управление конфигурацией Apache из скрипта, при помощи Perl модуля Apache::Admin::Config"

Отправлено auto_tips , 19-Ноя-08 23:56 
Для парсинга и изменения конфигурации 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


Содержание

Сообщения в этом обсуждении
"Управление конфигурацией Apache из скрипта, при помощи Perl модуля Apache::Admin::Config"
Отправлено shutdown now , 19-Ноя-08 23:56 
я понимаю на лету вхост добавить, а это шара


"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено DoktorPZ , 23-Ноя-08 15:41 
Сам апач позволяет такое сделать?

"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено angra , 24-Ноя-08 08:31 
Вообще-то позволяет. А совет действительно:
1. Несущественный. На CPAN есть тысячи модулей, можно из каждого выдрать sysnopsis и сделать такой совет.
2. Несущий мало практического смысла. Статические виртуальные хосты лучше вообще добавлять по другому и там шелла хватит, прочие настройки апача менять потоково регексами.

Модуль скорее полезен тем, кто использует конфиг в стиле апача, а не тем кто меняет конфиг самого апача.


"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено DoktorPZ , 24-Ноя-08 10:45 
>Вообще-то позволяет. А совет действительно:
>1. Несущественный. На CPAN есть тысячи модулей, можно из каждого выдрать sysnopsis
>и сделать такой совет.
>2. Несущий мало практического смысла. Статические виртуальные хосты лучше вообще добавлять по
>другому и там шелла хватит, прочие настройки апача менять потоково регексами.
>
>
>Модуль скорее полезен тем, кто использует конфиг в стиле апача, а не
>тем кто меняет конфиг самого апача.

На лету позволяет? Как мне добавить конфиг без перезапуска сервера?


"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено angra , 24-Ноя-08 11:21 
Вообще-то многие изменения конфига апач может подчитать и без полного перезапуска. Но кроме того для виртуалхостов есть еще один механизм:
http://httpd.apache.org/docs/2.2/vhosts/mass.html
Ну и наконец mod_perl позволяет вообще творить с апачем чудеса, в отличии от например mod_php.

"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено DoktorPZ , 24-Ноя-08 11:37 
>Вообще-то многие изменения конфига апач может подчитать и без полного перезапуска. Но
>кроме того для виртуалхостов есть еще один механизм:
>http://httpd.apache.org/docs/2.2/vhosts/mass.html
>Ну и наконец mod_perl позволяет вообще творить с апачем чудеса, в отличии
>от например mod_php.

Да, mod_vhost_alias известная штука. Но вопрос в другом - Как мне на "лету" изменить конфигурацию Апача? Без полного или неполного перезапуска сервера? Какие еще web сервера позволяют изменять конфигурцию "на лету", то есть без перезагрзки конфига целиком?


"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено angra , 24-Ноя-08 12:07 
Что _именно_ вы хотите изменить? Например загрузить/выгрузить на лету модуль или поменять настройки другого чайлда врядли получится. А так инструменты следующие:
1. Использование .htaccess
2. Использование существующих модулей типа mod_perl
3. Написание своего модуля

"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено DoktorPZ , 24-Ноя-08 22:23 
>Что _именно_ вы хотите изменить? Например загрузить/выгрузить на лету модуль или поменять
>настройки другого чайлда врядли получится. А так инструменты следующие:
>1. Использование .htaccess
>2. Использование существующих модулей типа mod_perl
>3. Написание своего модуля

История началась с ответа на коммент: "я понимаю на лету вхост добавить, а это шара".
Я хочу "на лету" добавить VirtualHost в сервере Apache2.2. Как мне это сделать? Пришлите готовое решение +).

Или получается вы ошибались?


"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено angra , 24-Ноя-08 23:27 
Давайте вы для начала научитесь _внимательно_ читать. Во-первых, это утверждение сделано не мной, я его лишь подтвердил. Во-вторых, я уже указал несколько способов, поставьте себе апач и проверьте.


"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено DoktorPZ , 24-Ноя-08 23:47 
>Давайте вы для начала научитесь _внимательно_ читать. Во-первых, это утверждение сделано не
>мной, я его лишь подтвердил. Во-вторых, я уже указал несколько способов,
>поставьте себе апач и проверьте.

Ясно.


"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено angra , 24-Ноя-08 23:59 
Вы таки попробовали reload? :)

"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено DoktorPZ , 25-Ноя-08 00:01 
>Вы таки попробовали reload? :)

Нет, так как он не позволяет "на лету" добавить Vhost в апач.


"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено angra , 25-Ноя-08 01:10 
Вы бы хоть попробовали прежде чем утверждать. Позволяет и добавить и удалить, причем можно удалить в момент выполнения скрипта и скрипт как ни в чем не бывало продолжит работать, а вот следующее обращение уже наткнется на 404. Если это для вас это не "на лету", то дальше говорить не о чем.

"Управление конфигурацией Apache из скрипта, при помощи Perl ..."
Отправлено DoktorPZ , 25-Ноя-08 09:15 
>Вы бы хоть попробовали прежде чем утверждать. Позволяет и добавить и удалить,
>причем можно удалить в момент выполнения скрипта и скрипт как ни
>в чем не бывало продолжит работать, а вот следующее обращение уже
>наткнется на 404. Если это для вас это не "на лету",
>то дальше говорить не о чем.

Я тоже так думаю. Мы оперируем разными понятиями "на лету" и "добавить Vhost".


"Управление конфигурацией Apache из скрипта, при помощи Perl "
Отправлено bibi , 24-Ноя-08 21:34 
/usr/local/etc/rc.d/apache22 graceful

этот скрипт перезагрузит apache...


"Управление конфигурацией Apache из скрипта, при помощи Perl "
Отправлено bibi , 05-Янв-09 14:11 
>Что _именно_ вы хотите изменить?

такого решщения я нигде не видел, есть конечно еще коменческие проекты...