Peruser MPM for Apache 2.x

Peruser is an Apache 2.x module based on metuxmpm, a working implementation of the perchild MPM. The fundamental concept behind all of them is to run each apache child process as its own user and group, each handling its own set of virtual hosts. Peruser and recent metuxmpm releases can also chroot() apache processes. The result is a sane and secure web server environment for your users, without kludges like PHP's safe_mode.

Metuxmpm creates one child process per unique user and group, which then spawns threads to handle requests. This requires you to use multithreaded versions of PHP, as well as Perl and Python if you want to use mod_perl and mod_python. Between the three of them, and all the third-party modules and libraries they link to, there can be a lot of non-threadsafe code involved. That can cause nasty crashes that are very hard to reproduce and diagnose.

Currently a non-threaded Apache, along with non-threaded PHP, Perl, and Python is the most stable solution for hosting services. Unfortunately, just removing thread support from metuxmpm leaves you with just one apache child handling requests for one or more virtual hosts. Peruser, provides multiple processes for each unique user/group/chroot. Although it's working well so far but there is still a lot of room for improvement. Check the forum if you have questions, suggestions, or patches :)

Download

Peruser is distributed as a patch to the Apache source. There are also binary builds available on the download page.

Current Version: 0.3.0

Patches for 0.3.0:

Currently you have to apply these patches after the Peruser 0.3.0 patch until the next 0.4.0 'Fusion' release is finished.

Development Version: 0.4.0RC1

Resources

Contribute

If you want to help us, you can contact us via the forum or directly leave a note in the contributors page.

You can also report a problem with Peruser, and view open tickets.