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

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

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

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

是否有与 RedHat/CentOS 类型系统等效的程序?

答案1

没有同等的东西。

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 拆分配置系统作为模板来制作自己的配置,然后复制脚本。但是,debian 设置的主要目的是让 apache 模块包可以安装自己的配置文件,因此如果没有这个设置,它的用处就会大大减少


编辑:如果您正在寻找一种等效的脚本编写方法,那么我建议您使用 /etc/httpd/conf.d 目录,其中的任何配置文件都将包含在内。根据脚本的复杂程度,直接将一行文件写入 conf.d 可能更有意义,或者对更复杂的部分使用符号链接。

答案2

启用多个模块的命令

sudo a2enmod headers http2 proxy_fcgi rewrite setenvif ssl ...

并命令禁用多个模块

sudo a2dismod headers http2 proxy_fcgi rewrite setenvif ssl ...

答案3

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以启用它

默认情况下,安装时会加载所有模块,如果您不想加载某个模块

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

答案4

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

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

  • 验证是否正确装载并准备使用,apachectl -M

相关内容