--- /dev/null
+class apache::mod::peruser (
+ $minspareprocessors = '2',
+ $minprocessors = '2',
+ $maxprocessors = '10',
+ $maxclients = '150',
+ $maxrequestsperchild = '1000',
+ $idletimeout = '120',
+ $expiretimeout = '120',
+ $keepalive = 'Off',
+) {
+
+ case $::osfamily {
+ 'freebsd' : {
+ fail("Unsupported osfamily ${::osfamily}")
+ }
+ default: {
+ if $::osfamily == 'gentoo' {
+ ::portage::makeconf { 'apache2_mpms':
+ content => 'peruser',
+ }
+ }
+
+ if defined(Class['apache::mod::event']) {
+ fail('May not include both apache::mod::peruser and apache::mod::event on the same node')
+ }
+ if defined(Class['apache::mod::itk']) {
+ fail('May not include both apache::mod::peruser and apache::mod::itk on the same node')
+ }
+ if defined(Class['apache::mod::prefork']) {
+ fail('May not include both apache::mod::peruser and apache::mod::prefork on the same node')
+ }
+ if defined(Class['apache::mod::worker']) {
+ fail('May not include both apache::mod::peruser and apache::mod::worker on the same node')
+ }
+ File {
+ owner => 'root',
+ group => $::apache::params::root_group,
+ mode => '0644',
+ }
+
+ $mod_dir = $::apache::mod_dir
+
+ # Template uses:
+ # - $minspareprocessors
+ # - $minprocessors
+ # - $maxprocessors
+ # - $maxclients
+ # - $maxrequestsperchild
+ # - $idletimeout
+ # - $expiretimeout
+ # - $keepalive
+ # - $mod_dir
+ file { "${::apache::mod_dir}/peruser.conf":
+ ensure => file,
+ content => template('apache/mod/peruser.conf.erb'),
+ require => Exec["mkdir ${::apache::mod_dir}"],
+ before => File[$::apache::mod_dir],
+ notify => Class['apache::service'],
+ }
+ file { "${::apache::mod_dir}/peruser":
+ ensure => directory,
+ require => File[$::apache::mod_dir],
+ }
+ file { "${::apache::mod_dir}/peruser/multiplexers":
+ ensure => directory,
+ require => File["${::apache::mod_dir}/peruser"],
+ }
+ file { "${::apache::mod_dir}/peruser/processors":
+ ensure => directory,
+ require => File["${::apache::mod_dir}/peruser"],
+ }
+
+ ::apache::peruser::multiplexer { '01-default': }
+ }
+ }
+}