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.conf
and comment Load line with hash sign (#
)