diff --git a/apache/files/RedHat/conf.modules.d/00-mpm.conf.jinja b/apache/files/RedHat/conf.modules.d/00-mpm.conf.jinja
new file mode 100644
index 0000000..8831d12
--- /dev/null
+++ b/apache/files/RedHat/conf.modules.d/00-mpm.conf.jinja
@@ -0,0 +1,51 @@
+# managed by saltstack
+
+{% set mpm_module = 'mpm_prefork' -%}
+{% set mpm_param = salt['pillar.get']('apache:mod_mpm_prefork', {}) -%}
+{% if pillar.get('apache:mod_mpm_worker') is defined -%}
+{% set mpm_module = 'mpm_worker' -%}
+{% set mpm_param = salt['pillar.get']('apache:mod_mpm_worker', {}) -%}
+{% else -%}
+{% endif -%}
+
+LoadModule {{ mpm_module }}_module modules/mod_{{ mpm_module }}.so
+
+# prefork MPM
+# StartServers: number of server processes to start
+# MinSpareServers: minimum number of server processes which are kept spare
+# ServerLimit: maximum number of server processes
+# MaxSpareServers: maximum number of server processes which are kept spare
+# MaxRequestWorkers: maximum number of server processes allowed to start
+# MaxConnectionsPerChild: maximum number of requests a server process serves
+
+
+ StartServers {{ mpm_param['start_servers'] | d('5') }}
+ MaxRequestWorkers {{ mpm_param['max_request_workers'] | d('150') }}
+{%- if mpm_param['max_request_workers'] | d('150') >= 256 %}
+ ServerLimit {{ mpm_param['max_request_workers'] | d('150') }}
+{%- endif %}
+ MinSpareServers {{ mpm_param['min_spare_servers'] | d('5') }}
+ MaxSpareServers {{ mpm_param['max_spare_servers'] | d('10') }}
+ MaxConnectionsPerChild {{ mpm_param['max_connections_per_child'] | d('0') }}
+
+
+# worker MPM
+# StartServers: initial number of server processes to start
+# MinSpareThreads: minimum number of worker threads which are kept spare
+# MaxSpareThreads: maximum number of worker threads which are kept spare
+# ThreadsPerChild: constant number of worker threads in each server process
+# MaxRequestWorkers: maximum number of worker threads
+# MaxConnectionsPerChild: maximum number of connections a server process serves
+# before terminating
+
+
+ StartServers {{ mpm_param['start_servers'] | d('2') }}
+ MaxRequestWorkers {{ mpm_param['max_request_workers'] | d('150') }}
+ MinSpareThreads {{ mpm_param['min_spare_threads'] | d('25') }}
+ MaxSpareThreads {{ mpm_param['max_spare_threads'] | d('75') }}
+ ThreadLimit {{ mpm_param['thread_limit'] | d('64') }}
+ ThreadsPerChild {{ mpm_param['threads_per_child'] | d('25') }}
+ MaxConnectionsPerChild {{ mpm_param['max_connections_per_child'] | d('0') }}
+
+
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
diff --git a/apache/map.jinja b/apache/map.jinja
index d9f9afb..da477df 100644
--- a/apache/map.jinja
+++ b/apache/map.jinja
@@ -73,6 +73,8 @@
'logrotatedir': '/etc/logrotate.d/httpd',
'wwwdir': '/var/www',
'default_charset': 'UTF-8',
+ 'use_require': False,
+ 'moddir': '/etc/httpd/conf.modules.d',
},
'Suse': {
'server': 'apache2',
diff --git a/apache/mod_mpm.sls b/apache/mod_mpm.sls
index c77cdb1..f51c992 100644
--- a/apache/mod_mpm.sls
+++ b/apache/mod_mpm.sls
@@ -1,7 +1,8 @@
-{% if grains['os_family']=="Debian" %}
{% from "apache/map.jinja" import apache with context %}
{% set mpm_module = salt['pillar.get']('apache:mpm:module', 'mpm_prefork') %}
+{% if grains['os_family']=="Debian" %}
+
include:
- apache
@@ -36,3 +37,21 @@ a2dismod {{ mod }}:
{% endfor %}
{% endif %}
+
+{% if grains['os_family']=="RedHat" %}
+
+include:
+ - apache
+
+{{ apache.moddir }}/00-mpm-conf.conf:
+ file.managed:
+ - name: {{ apache.moddir }}/00-mpm.conf
+ - template: jinja
+ - source:
+ - salt://apache/files/RedHat/conf.modules.d/00-mpm.conf.jinja
+ - require:
+ - pkg: httpd
+ - watch_in:
+ - module: apache-restart
+
+{% endif %}