Выяснение правильных имен модулей Apache для a2enmod

У меня есть существующий файл httpd.conf, который я должен получить для работы с экземпляром Vagrant под управлением Ubuntu, который я использую Puppet для подготовки.

Проблема, с которой я сталкиваюсь, связана с именами модулей. httpd.conf определяет несколько таких модулей:

LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so

Чтобы настроить все эти модули, мне нужно сообщить модулю Puppet Apache, который я использую (по примеру 42), какие имена модулей я хочу установить и включить. Проблема в том, что имена модулей не соответствуют 1:1 со строками httpd.conf. Другими словами, имена модулей не всегда могут быть выведены из файла.

Например, вот я, пытаюсь включить первую строку в файле (mod_access_compat.so):

vagrant@lucid64:~$ sudo a2enmod access_compat             
ERROR: Module access_compat does not exist!               
vagrant@lucid64:~$ sudo a2enmod access_compat_module      
ERROR: Module access_compat_module does not exist!        
vagrant@lucid64:~$ sudo a2enmod accesscompat              
ERROR: Module accesscompat does not exist!            

tl; dr: Как узнать правильное имя модуля для a2enmod не пытаясь угадать?

3 ответа

Решение

Если модуль, который вы ищете, является переменной, вы можете искать его имя внутри /etc/apache2/mods-available/

использование find команда для поиска файла с той частью строки, которую вы знаете о моде,

например find /etc/apache2/mods-available/ -name *\lite\*

выход /etc/apache2/mods-available/charset_lite.load

вставьте нужную строку между *\...\* как то, что когда-либо до или после этого слова

  • a2enmod [введите] -> посмотреть все доступные модули
  • apache2ctl -M -> увидеть загруженные модули (можно apachectl на RedHat)

Исключить mod_ и.so и загрузить результат:

$ MODUL=mod_auth_basic.so
$ sudo a2enmod $(<<< $MODUL sed 's#mod_\(.*\)\.so#\1#')
Module auth_basic already enabled
Другие вопросы по тегам