The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Управление конфигурацией Apache из скрипта, при помощи Perl модуля Apache::Admin::Config
Для парсинга и изменения конфигурации 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;
 
20.11.2008 , Автор: User Di , Источник: http://unixforum.org.ua/index.php?t...
Ключи: apache, perl, config
Раздел:    Корень / Программисту и web-разработчику / Perl / Полезные подпрограммы на Perl / Подпрограммы для WEB

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, shutdown now (?), 23:56, 19/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    я понимаю на лету вхост добавить, а это шара

     
     
  • 2.2, DoktorPZ (ok), 15:41, 23/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Сам апач позволяет такое сделать?
     
     
  • 3.3, angra (ok), 08:31, 24/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Вообще-то позволяет. А совет действительно:
    1. Несущественный. На CPAN есть тысячи модулей, можно из каждого выдрать sysnopsis и сделать такой совет.
    2. Несущий мало практического смысла. Статические виртуальные хосты лучше вообще добавлять по другому и там шелла хватит, прочие настройки апача менять потоково регексами.

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

     
     
  • 4.4, DoktorPZ (ok), 10:45, 24/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >Вообще-то позволяет. А совет действительно:
    >1. Несущественный. На CPAN есть тысячи модулей, можно из каждого выдрать sysnopsis
    >и сделать такой совет.
    >2. Несущий мало практического смысла. Статические виртуальные хосты лучше вообще добавлять по
    >другому и там шелла хватит, прочие настройки апача менять потоково регексами.
    >
    >
    >Модуль скорее полезен тем, кто использует конфиг в стиле апача, а не
    >тем кто меняет конфиг самого апача.

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

     
     
  • 5.5, angra (ok), 11:21, 24/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Вообще-то многие изменения конфига апач может подчитать и без полного перезапуска. Но кроме того для виртуалхостов есть еще один механизм:
    http://httpd.apache.org/docs/2.2/vhosts/mass.html
    Ну и наконец mod_perl позволяет вообще творить с апачем чудеса, в отличии от например mod_php.
     
     
  • 6.6, DoktorPZ (ok), 11:37, 24/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >Вообще-то многие изменения конфига апач может подчитать и без полного перезапуска. Но
    >кроме того для виртуалхостов есть еще один механизм:
    >http://httpd.apache.org/docs/2.2/vhosts/mass.html
    >Ну и наконец mod_perl позволяет вообще творить с апачем чудеса, в отличии
    >от например mod_php.

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

     
     
  • 7.7, angra (ok), 12:07, 24/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Что _именно_ вы хотите изменить? Например загрузить/выгрузить на лету модуль или поменять настройки другого чайлда врядли получится. А так инструменты следующие:
    1. Использование .htaccess
    2. Использование существующих модулей типа mod_perl
    3. Написание своего модуля
     
     
  • 8.9, DoktorPZ (ok), 22:23, 24/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    История началась с ответа на коммент я понимаю на лету вхост добавить, а это ш... текст свёрнут, показать
     
     
  • 9.10, angra (ok), 23:27, 24/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Давайте вы для начала научитесь _внимательно_ читать Во-первых, это утверждение... текст свёрнут, показать
     
     
  • 10.11, DoktorPZ (ok), 23:47, 24/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Ясно ... текст свёрнут, показать
     
     
  • 11.12, angra (ok), 23:59, 24/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Вы таки попробовали reload ... текст свёрнут, показать
     
     
  • 12.13, DoktorPZ (ok), 00:01, 25/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Нет, так как он не позволяет на лету добавить Vhost в апач ... текст свёрнут, показать
     
     
  • 13.14, angra (ok), 01:10, 25/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Вы бы хоть попробовали прежде чем утверждать Позволяет и добавить и удалить, пр... текст свёрнут, показать
     
     
  • 14.15, DoktorPZ (ok), 09:15, 25/11/2008 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    Я тоже так думаю Мы оперируем разными понятиями на лету и добавить Vhost ... текст свёрнут, показать
     

  • 1.8, bibi (?), 21:34, 24/11/2008 [ответить] [﹢﹢﹢] [ · · · ]  []     [к модератору]
  • +/
    /usr/local/etc/rc.d/apache22 graceful

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

     
     
  • 2.16, bibi (?), 14:11, 05/01/2009 [^] [^^] [^^^] [ответить]      [к модератору]
  • +/
    >Что _именно_ вы хотите изменить?

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

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру