Назад | Перейти на главную страницу

Определение правильных имен модулей 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 не пытаясь угадать?

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

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

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

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

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

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

удалите mod_ и .so и загрузите результат:

$ MODUL=mod_auth_basic.so
$ sudo a2enmod $(<<< $MODUL sed 's#mod_\(.*\)\.so#\1#')
Module auth_basic already enabled