I, like many people, have a relatively out-of-the-box Apache installation with a lot of default "LoadModule" lines.
Since the beginning, I've installed a lot of software, and to be honest, I don't know what software is is using which modules.
I would like to reduce the memory footprint of my Apache instances, and to do that, I'd like to remove modules from being used. The only way that I know of to determine if a module is in use is to remove it from the configuration and see if anything breaks. This is bad in more ways than I have time to describe.
I would like to know if anyone is aware of a way to get Apache to report which modules have been used, or if there's another way to programmatically determine whether a module is safe to un-configure.
The way I did is building a test server, read the documentation, and start from a blank page.
The following modules are compulsory:
Then I commented out all the remaining modules and restart Apache. It will sound out if something breaks, for e.g:
Do the same with the other modules. By using this method, here are some modules often not needed:
If you are not using LDAP for authentication, this can be disabled:
The below modules should be considered when enabling:
An earlier post suggest disabling the modules until something breaks. While that is definitely foolhardy in on a production system, the person is the on right path, as you will need to do regression testing anyway.
So in this case:
That is probably the easiest way to streamline the Apache configuration. Otherwise, you will have to look each module, determine its functionality and search through the sites to see which one uses that functionality. That would take much longer.
Alternatively, this may give you a good opportunity to switch to something more lightweight:
I dont have a direct answer to your question, but there are many 'tiny' AMP packages on the internet which as far as I know, doesn't include most of the pre-installed modules. So, I would start with looking at them as an example reference.
These 2 links might get you started:
I know you are asking about Apache, but given the memory constraints on your system, you might be much better served by swapping Apache for Nginx, Lighthttpd, or other low-footprint web servers. Apache is great for module support but very memory-hungry compared to younger web servers like Nginx, Lighthttpd, Cherokee, G-WAN, etc.
Testing for something to break has its caveats - often some directives are used only if a module is loaded (
<IfModule>
), which means deactivating the module may not directly break something but will cause things to not work as expected.For some modules you could check if their directives are being used in the configuration. Though this is tedious but may be a little more foolproof than just testing for something to break. Also, you can do your checks before making changes.
Example:
<IfVersion>
directive, search for that in your configuration directories and .htaccess files (if used)Example script:
Note: this script can be optimized.