如何在RedHat中从命令行启用apache模块?


29

如何在RedHat中从命令行启用apache模块?

在Debian / Ubuntu系统上,我使用a2enmod从命令行启用模块。

RedHat / CentOS类型的系统是否等效?

Answers:


27

没有对等的东西。

Debian / Ubuntu将apache配置分割成大量文件,其中mods和启用站点的目录与其他配置文件片段符号链接。a2enmod / a2ensite脚本只是操纵这些符号链接。

debian$ ls /etc/apache2/mods-enabled 
lrwxrwxrwx 1 root root 28 2009-03-12 18:02 alias.conf -> ../mods-available/alias.conf
lrwxrwxrwx 1 root root 28 2009-03-12 18:02 alias.load -> ../mods-available/alias.load
lrwxrwxrwx 1 root root 33 2009-03-12 18:02 auth_basic.load -> ../mods-available/auth_basic.load
lrwxrwxrwx 1 root root 33 2009-03-12 18:02 authn_file.load -> ../mods-available/authn_file.load
lrwxrwxrwx 1 root root 36 2009-03-12 18:02 authz_default.load -> ../mods-available/autoindex.load
lrwxrwxrwx 1 root root 26 2009-03-12 18:02 env.load -> ../mods-available/env.load
lrwxrwxrwx 1 root root 27 2009-03-12 18:02 mime.conf -> ../mods-available/mime.conf
lrwxrwxrwx 1 root root 27 2009-03-12 18:02 mime.load -> ../mods-available/mime.load
lrwxrwxrwx 1 root root 34 2009-03-12 18:02 negotiation.conf -> ../mods-available/negotiation.conf
lrwxrwxrwx 1 root root 34 2009-03-12 18:02 negotiation.load -> ../mods-available/negotiation.load
lrwxrwxrwx 1 root root 27 2009-06-16 21:47 php5.conf -> ../mods-available/php5.conf
lrwxrwxrwx 1 root root 27 2009-06-16 21:47 php5.load -> ../mods-available/php5.load

在Redhat系统上,默认情况下,Apache配置保存在一个文件/etc/httpd/conf/httpd.conf中。所有模块都从该文件加载,可以通过注释掉适当的LoadModule语句来禁用所有模块。

...
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
...

RedHat / CentOS所做的是为您提供漂亮的Apache设置,而debian则添加了自己的“改进”。当然,您可以使用debian split配置系统作为模板来制作自己的模板并复制脚本。但是,debian安装程序的主要参数是apache模块软件包可以安装自己的配置文件,因此如果没有它,它的用处就会大大减少


编辑:如果您正在寻找一种等效的脚本编写方式,那么我建议您使用/etc/httpd/conf.d目录,此处将包含所有配置文件。根据脚本的复杂程度,可以直接将一个行文件写入conf.d,或者对更复杂的位使用符号链接。


那么,在新服务器构建脚本中我该怎么做?awk / sed疯狂吗?创建我自己的配置文件并将其复制到位?这些选项听起来都不吸引人。
MarshallY

1
我不确定为什么所有人都对您的回答不满意;它正确地描述了为什么在Red Hat-alikes中找不到a2enmod脚本的原因。就个人而言,我的计划是使用人偶来管理RHEL盒上的类似布局。
2009年

1
@womble-我认为debian已经把微小文件的东西弄得太远了,例如,整个文件仅用于设置apache应该监听的端口,我认为仅用于建立符号链接的shell脚本也太过分了-他们混淆了不了解其配置文件实际工作方式的用户。我不会这么苦。
theotherre

十年后发表评论,至少在RHEL / CentOS 7上,您需要签入/etc/httpd/conf.modules.d
cdmo

3

通常,在Redhat系统上,您会在内部找到如下所示的行/etc/httpd/conf/httpd.conf

包括conf.d / *。conf

当您将配置文件复制到中/etc/httpd/conf.d,并且具有.conf文件扩展名时,它将在apache启动时被提取并处理。通常,您会在此文件夹中找到扩展名mod_php和的配置文件mod_svn,以及与Web服务器集成的应用程序,例如trac

旁注:对于apache模块mod_phpmod_auth_mysql在其他使用RPM的系统(例如OpenSuSE)上,可能/etc/sysconfig/apache2需要编辑其他配置文件(例如),以便apache提取新模块。其中一些取决于所使用的系统管理工具,即yast2。其中有些取决于可以安装的售后市场产品,例如plesk / cpanel。但是,以上文件夹是最好的开始。


对于使用Fedora 21(可能还有其他版本或其他RH系列发行版)的人员,模块加载已移至名为/etc/httpd/conf.modules.d/的新目录。Include conf.modules.d/*.conf如果是这种情况,您将在httpd.conf中看到以下行。
猫头鹰2015年

1
yum list mod\*

安装所需的模块

例如 mod_perl

rpm -ql mod_perl.x86_64 | grep /etc/

/etc/httpd/conf.d/perl.conf
/etc/httpd/conf.modules.d/02-perl.conf

编辑/etc/httpd/conf.d/perl.conf以启用它

默认情况下,如果您不想加载某人,则在安装时会加载所有mod

在中编辑文件/etc/httpd/conf.modules.d/02-perl.conf并注释用哈希符号(#)加载行


这是对问题的完美答案。“启用”与“ LoadModule”不同。
拉加夫·塔拉姆

0

“启用”模块与“ LoadModules”和“安装”不同

  • 如果已经安装并且离线,则root用户可以service enable httpd
  • 如果模块及其conf文件不可用,则 root用户可以yum install -y <mod_name>
  • 检查可用性 yum list mod\*
  • 如果已经启用并安装,请加载它们以使用草稿httpd.conf* .conf文件,如下所示:
    LoadModule ldap_module modules/mod_ldap.so

  • 要验证,如果正确加载并可以使用, apachectl -M

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.