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

Mar*_*llY 35 redhat apache-2.2

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

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

RedHat/CentOS 类型系统是否有等价物?

the*_*ive 28

没有等价物。

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
Run Code Online (Sandbox Code Playgroud)

在 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
...
Run Code Online (Sandbox Code Playgroud)

RedHat/CentOS 正在做的是给你一个漂亮的 apache 设置,而 debian 正在添加他们自己的“改进”。您当然可以使用 debian 拆分配置系统作为模板来制作自己的,并复制脚本。然而,debian 设置的主要论点是 apache 模块包可以安装他们自己的配置文件,所以没有它它的用处就大大降低了


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

  • 十年后评论,至少在 RHEL/CentOS 7 上,你需要检查 `/etc/httpd/conf.modules.d` (2认同)

小智 7

启用多个模块的命令

sudo a2enmod headers http2 proxy_fcgi rewrite setenvif ssl ...
Run Code Online (Sandbox Code Playgroud)

和禁用多个模块的命令

sudo a2dismod headers http2 proxy_fcgi rewrite setenvif ssl ...
Run Code Online (Sandbox Code Playgroud)

  • a2enmod 和 a2dismod 命令适用于 Debian/Ubuntu 系统。 (3认同)