如何从 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