We can add to the review list of how it works : I mean we have 3 httpd engine prefork mpm and event Some modules are engine specific like cgi is only for prefork event and mpm are looking for mod_cgid For example this one is located correctly under /usr/lib64/apache2-event for event etc which is great. All share modules are linked to the /usr/lib64/apache2/ directory. But the script that create /etc/apache2/sysconfig.d/loadmodule.conf use the wrong location (always /usr/lib64/apache2/*.conf) it should use the one of the mpm specified in /etc/sysconfig/apache2 otherwise the start_apache script actually failed with (or ignore the unknown module) Jun 09 18:20:50 c-3po.labaroche.ioda.net systemd[1]: Starting The Apache Webserver... Jun 09 18:20:50 c-3po.labaroche.ioda.net start_apache2[14268]: Warning: no MPM found. Some modules are dependant on the type of MPM. Jun 09 18:20:50 c-3po.labaroche.ioda.net start_apache2[14268]: Module "cgid" is not installed, ignoring. Jun 09 18:20:50 c-3po.labaroche.ioda.net start_apache2[14268]: Check the APACHE_MODULES setting in /etc/sysconfig/apache2. Jun 09 18:20:50 c-3po.labaroche.ioda.net start_apache2[14268]: /usr/share/apache2/get_module_list: line 110: selinuxenabled: command not found Jun 09 18:20:50 c-3po.labaroche.ioda.net start_apache2[14268]: Warning: no MPM found. Some modules are dependant on the type of MPM. I was able to bypass this crap by symlinking mod_cgid from /usr/lib64/apache2-event in /usr/lib64/apache2 cause I'm knowing what mpm I'm using :-)