找出 a2enmod 的正确 Apache 模块名称

找出 a2enmod 的正确 Apache 模块名称

我有一个现有的 httpd.conf 文件,我应该让它在运行 Ubuntu 的 Vagrant 实例上运行,我正在使用 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)我想安装和启用哪些模块名称。问题是模块名称不是与 httpd.conf 行 1:1 匹配。换句话说,模块名称并不总是可以从文件中推断出来。

例如,下面是我尝试启用文件的第一行(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!            

总结:a2enmod我怎样才能在不猜测的情况下知道正确的模块名称?

答案1

如果您要搜索的模块是一个变量,您可以在其中搜索其名称/etc/apache2/mods-available/

使用find命令搜索包含你知道的有关该模块的字符串部分的文件,

例如 find /etc/apache2/mods-available/ -name *\lite\*

输出 /etc/apache2/mods-available/charset_lite.load

将您想要的字符串放在*\...\*这个单词之前或之后

答案2

  • a2enmod[输入] -> 查看所有可用模块
  • apache2ctl -M-> 查看已加载的模块(可以apachectl在 RedHat 上)

答案3

消除 mod_ 和 .so 并加载结果:

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

相关内容