How do I enable apache modules from the command line in RedHat?

Solution 1:

There is no equivalent.

Debian/Ubuntu butcher the apache configuration into a large number of files, where directories of mods and sites enabled are symlinked to other snippets of configuration files. The a2enmod/a2ensite scripts just manipulate these symlinks.

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

On redhat systems the apache configuration is by default held in one file /etc/httpd/conf/httpd.conf. All modules are loaded from this file, and can be disabled by commenting out the appropiate LoadModule statement.

...
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
...

What RedHat/CentOS are doing is giving you a pretty stock apache setup, while debian are adding their own "improvements". You could of course use the debian split config system as a template to make your own, and copy the scripts. However, the main argument for the debian setup is so that apache module packages can install their own config files, so without that it's significantly less useful


Edit: If you're looking for an equivalent way of scripting this then i suggest you use /etc/httpd/conf.d directory, any config files in here will be included. Depending on how complicated the script is it might make sense to directly write one line files into conf.d, or use symlinks for more complicated bits.

Solution 2:

Typically, on a Redhat system, you'll find a line that looks like this inside /etc/httpd/conf/httpd.conf:

Include conf.d/*.conf

When you copy a configuration file into /etc/httpd/conf.d, and it has a .conf file extension, then it'll be picked up and processed as apache starts. You'll typically find configuration files for extensions like mod_php and mod_svn, and applications that are integrated with the webserver like trac, inside this folder.

Side note: for apache modules like mod_php or mod_auth_mysql on other systems that use RPM, like OpenSuSE, there may be other configuration files (like /etc/sysconfig/apache2) that need to get edited in order for apache to pick up a new module. Some of this is dependent on the system management tool that is being used, i.e. yast2. Some of it's dependent on aftermarket products that can be installed, like plesk/cpanel. However, the above folder is the best place to start.

Solution 3:

Command to enable multiple modules

sudo a2enmod headers http2 proxy_fcgi rewrite setenvif ssl ...

and command to disable multiple modules

sudo a2dismod headers http2 proxy_fcgi rewrite setenvif ssl ...

Solution 4:

yum list mod\*

install modules that you want

for example mod_perl

rpm -ql mod_perl.x86_64 | grep /etc/

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

edit /etc/httpd/conf.d/perl.conf to enable it

By default, all mods are loaded when are installed, if you want not load someone

edit file in /etc/httpd/conf.modules.d/02-perl.confand comment Load line with hash sign (#)