Raumopol Webhosting Logo

Informationsportal: News, Fragen & Antworten und Hilfe

Django-FCGI Template

Hier finden Sie alles was Sie benötigen um Django (und Django-Derivate) über FCGI laufen zu lassen:

  1. django.fcgi: (Muss ausführbar sein!)
    #!/usr/local/bin/python
    import sys, os
    
    # Switch to the directory of your project. (Optional.)
    os.chdir("/var/kunden/webs/%{KUNDENLOGIN}/%{PROJECT_DIR}")
    
    # Redirect stdout and stderr
    sys.stdout = file('%{PROJECT_NAME}.fcgi.log', 'a')
    sys.stderr = sys.stdout
    
    # Add a custom Python path.
    sys.path.insert(0, "/var/kunden/webs/%{KUNDENLOGIN}/%{PARENT_DIR}")
    
    # Set the DJANGO_SETTINGS_MODULE environment variable.
    os.environ['DJANGO_SETTINGS_MODULE'] = "%{PROJECT_NAME}.settings"
    
    # Watch for changes to this file and kill the server 
    # so that the next request will start it anew
    import pyinotify as p
    wm = p.WatchManager()
    mask = p.IN_MODIFY
    filename = __file__
    class Handler(p.ProcessEvent):
        def process_IN_MODIFY(self, event):
            sys.stdout.flush()
            import signal
            os.kill(os.getpid(), signal.SIGTERM)
    notifier = p.ThreadedNotifier(wm, Handler())
    notifier.start()
    wdd = wm.add_watch(filename, mask, rec=True)
    
    from django.core.servers.fastcgi import runfastcgi
    # debug=True is used by the python fcgi package flup to display proper error messages
    runfastcgi(method="threaded", daemonize="false", maxspare=1, minspare=1, debug=True)
    

    • %{KUNDENLOGIN} ist hierbei mit Ihrem Kundenlogin zu ersetzen. Dieser setzt sich normalerweise aus zwei Buchstaben und mehreren Zahlen zusammen und wurde Ihnen bei der Aktivierung Ihres Pakets mitgeteilt.
    • %{PROJECT_DIR} muss mit dem Verzeichnis ersetzt werden, in dem die Django-Applikation liegt. In diesem Ordner liegt auch die settings.py.
    • %{PARENT_DIR} ist ein Verzeichnis darüber.
    • %{PROJECT_NAME} ist der Name der Django-Applikation, also der letzte Teil von %{PROJECT_DIR}.

    Wenn die Applikation nicht in einem Unterordner liegt, sind %{PROJECT_NAME} und %{PROJECT_DIR} identisch. %{PARENT_DIR} ist dann leer.

  2. .htaccess:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]
    

Beide Dateien sind im Projektordner zu platzieren.


Raumopol Technologie