{%- if site.wsgi is defined %}
  WSGIDaemonProcess {{ site.wsgi.daemon_process}} processes={{ site.wsgi.get('processes', grains.num_cpus) }} threads={{ site.wsgi.get('threads', 1)}} user={{ site.wsgi.user }} group={{ site.wsgi.group }} {% if site.wsgi.display_name is defined %}display-name={{ site.wsgi.display_name }}{% endif %}
  WSGIProcessGroup {{ site.wsgi.daemon_process}}
 {%- if site.wsgi.script_alias is defined %}
  WSGIScriptAlias {{ site.wsgi.script_alias }}
 {%- endif %}
 {%- if site.wsgi.application_group is defined %}
  WSGIApplicationGroup {{ site.wsgi.application_group }}
 {%- endif %}
 {%- if site.wsgi.authorization is defined %}
  WSGIPassAuthorization {{ site.wsgi.authorization }}
 {%- endif %}

{%- endif %}
