The OpenNET Project / Index page

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

Управление конфигурацией 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 / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Perl / Полезные подпрограммы на Perl / Подпрограммы для WEB

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

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

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

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

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

     
     
  • 5.5, angra, 11:21, 24/11/2008 [^] [ответить] [смотреть все]
  • +/
    Вообще-то многие изменения конфига апач может подчитать и без полного перезапуска. Но кроме того для виртуалхостов есть еще один механизм:
    http://httpd.apache.org/docs/2.2/vhosts/mass.html
    Ну и наконец mod_perl позволяет вообще творить с апачем чудеса, в отличии от например mod_php.
     
     
  • 6.6, DoktorPZ, 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, 12:07, 24/11/2008 [^] [ответить] [смотреть все]  
  • +/
    Что _именно_ вы хотите изменить? Например загрузить/выгрузить на лету модуль или поменять настройки другого чайлда врядли получится. А так инструменты следующие:
    1. Использование .htaccess
    2. Использование существующих модулей типа mod_perl
    3. Написание своего модуля
     
     
  • 8.9, DoktorPZ, 22:23, 24/11/2008 [^] [ответить] [смотреть все]  
  • +/
    >Что _именно_ вы хотите изменить? Например загрузить/выгрузить на лету модуль или поменять
    >настройки другого чайлда врядли получится. А так инструменты следующие:
    >1. Использование .htaccess
    >2. Использование существующих модулей типа mod_perl
    >3. Написание своего модуля

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

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

     
     
  • 9.10, angra, 23:27, 24/11/2008 [^] [ответить] [смотреть все]  
  • +/
    Давайте вы для начала научитесь _внимательно_ читать. Во-первых, это утверждение сделано не мной, я его лишь подтвердил. Во-вторых, я уже указал несколько способов, поставьте себе апач и проверьте.

     
     
  • 10.11, DoktorPZ, 23:47, 24/11/2008 [^] [ответить] [смотреть все]  
  • +/
    >Давайте вы для начала научитесь _внимательно_ читать. Во-первых, это утверждение сделано не
    >мной, я его лишь подтвердил. Во-вторых, я уже указал несколько способов,
    >поставьте себе апач и проверьте.

    Ясно.

     
     
  • 11.12, angra, 23:59, 24/11/2008 [^] [ответить] [смотреть все]  
  • +/
    Вы таки попробовали reload? :)
     
     
  • 12.13, DoktorPZ, 00:01, 25/11/2008 [^] [ответить] [смотреть все]  
  • +/
    >Вы таки попробовали reload? :)

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

     
     
  • 13.14, angra, 01:10, 25/11/2008 [^] [ответить] [смотреть все]  
  • +/
    Вы бы хоть попробовали прежде чем утверждать. Позволяет и добавить и удалить, причем можно удалить в момент выполнения скрипта и скрипт как ни в чем не бывало продолжит работать, а вот следующее обращение уже наткнется на 404. Если это для вас это не "на лету", то дальше говорить не о чем.
     
     
  • 14.15, DoktorPZ, 09:15, 25/11/2008 [^] [ответить] [смотреть все]  
  • +/
    >Вы бы хоть попробовали прежде чем утверждать. Позволяет и добавить и удалить,
    >причем можно удалить в момент выполнения скрипта и скрипт как ни
    >в чем не бывало продолжит работать, а вот следующее обращение уже
    >наткнется на 404. Если это для вас это не "на лету",
    >то дальше говорить не о чем.

    Я тоже так думаю. Мы оперируем разными понятиями "на лету" и "добавить 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:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor