httpd creates a plc.conf that can work with mod_python or mod_wsgi
[myplc.git] / plc.d / httpd
index 8ac141d..f218403 100755 (executable)
@@ -144,23 +144,46 @@ EOF
            # this is used to locate the right certificates
            server_lower=$(echo $server | tr 'A-Z' 'a-z')
            cat <<EOF
+
 # create wsgi socket where we have the permission
+<IfModule !mod_python.c>
 WSGISocketPrefix run/wsgi
+</IfModule>
 
 <VirtualHost *:${!https_port}>
-   WSGIScriptAlias /$plc_api_path_noslash /usr/share/plc_api/apache/plc.wsgi
-# xxx would be cool to be able to tweak this through config
-   WSGIDaemonProcess plcapi-wsgi-ssl user=apache group=apache processes=1 threads=25
-   WSGIProcessGroup plcapi-wsgi-ssl
 
    # SSL
    SSLEngine On
    SSLCertificateFile /etc/planetlab/${server_lower}_ssl.crt
    SSLCertificateKeyFile /etc/planetlab/${server_lower}_ssl.key
    SSLCertificateChainFile /etc/planetlab/${server_lower}_ca_ssl.crt
+
+# we prefer mod_python if available, as first attempts at using mod_wsgi
+# turned out less reliable
+<IfModule mod_python.c>
+   <Location /$plc_api_path_noslash>
+      SetHandler mod_python
+      PythonPath "sys.path + ['/usr/share/plc_api']"
+      PythonHandler apache.ModPython
+   </Location>
+</IfModule>
+
+<IfModule !mod_python.c>
+   WSGIScriptAlias /$plc_api_path_noslash /usr/share/plc_api/apache/plc.wsgi
+# xxx would be cool to be able to tweak this through config
+   WSGIDaemonProcess plcapi-wsgi-ssl user=apache group=apache processes=1 threads=25
+   WSGIProcessGroup plcapi-wsgi-ssl
+
+   <Directory "/usr/share/plc_api/apache">
+      Options +ExecCGI
+      $(apache_allow)
+   </Directory>
+</IfModule>
+
 </VirtualHost>
 
 EOF
+
            fi
        done >$plc_conf
 
@@ -176,7 +199,7 @@ EOF
                cat <<EOF
 # mod_wsgi location
 <Location $PLC_API_PATH>
-    Deny from all
+    $(apache_forbid)
 </Location> 
 EOF
            fi