On 30.11.2018 10:58, Andrew Green wrote:
Hi,
The time has finally come for me to update my mod_perl CMS from Apache 2.2 to
Apache 2.4, but I’m struggling to find documentation on the changes required.
The docs on perl.apache.org don’t seem to mention anything specific to Apache
2.4, and the Apache server documentation talks about its own API rather than
the mod_perl interface to it, so it’s a bit high-level for me to properly grok.
Does anyone know of a summary of the changes to mod_perl application code
required, like the ones that exist for porting mod_perl 1 applications to
mod_perl 2?
Also, I’ll need to be able to run my app on both Apache 2.2 and Apache 2.4
servers. Is there anything in the API that would let me determine which one is
in use, so that I can allow for both in my code?
Many thanks for any pointers!
1) The good news : we are running many many things under mod_perl, and all in all, we did
not have modify much to go from Apache 2.2 to 2.4.
And most of our unmodified code still works perfectly under both 2.2 and 2.4.
(With Apache in "prefork" MPM mode, can't speak of the others).
2) the bad news : ... EXCEPT if your mod_perl code does anything related to user
authentication.
That is not really due to perl or mod_perl, but the AAA logic has quite profoundly changed
under 2.4 compared to 2.2, and if you have any mod_perl code that deals with that, you are
probably in for a treat.
We do, and had to make some serious changes; and we have not found a "clean" way of making
the same AAA code work both under 2.2 and 2.4.
(Note : when I say that you are in for a treat, this is as much in terms of understanding
(anew) how Apache 2.4 handles AAA, as how to deal with it in mod_perl).
If you need a starter in that respect, I recommend reading this carefully :
https://metacpan.org/pod/Apache2_4::AuthCookie
in particular, the section named : FREQUENTLY ASKED QUESTIONS
Other than that, there is (as someone else mentioned) a difference in terms of getting the
client IP, but I do not remember much else, at the perl/mod_perl level.