2009-12-23 9 views
9

Ich bin neu auf Django. Ich habe das versucht, aber ich kann nicht bereitstellen. Wie kann ich tunBereitstellen von Django bei alwaysdata.com

#!/usr/bin/python 
import sys 
import os 

base = os.path.dirname(os.path.abspath(__file__)) + '/..' 
sys.path.append(base) 

os.environ['DJANGO_SETTINGS_MODULE'] = 'myfirstapp.settings' 

import django.core.handlers.wsgi 

application = django.core.handlers.wsgi.WSGIHandler() 

AddHandler fcgid-script .fcgi 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^(media/.*)$ - [L] 
RewriteRule ^(adminmedia/.*)$ - [L] 
RewriteCond %{REQUEST_URI} !(cgi-bin/myproject.fcgi) 
RewriteRule ^(.*)$ mysite.fcgi/$1 [L] 
+0

geben Sie mir ein funktionierendes Beispiel – Emrah

+0

Erhalten Sie Fehler? Du verpasst ein + in Zeile 5, und meinst du "../" statt "/ .."? – Seth

Antwort

21

Hier ist die alwaysdata wiki entry für Django Einrichtung mit FastCGI. Einziger Nachteil: Es ist in Französisch geschrieben.

Nun, ich spreche kein Französisch, aber was er sagt, im Grunde ist:

  1. Erstellen Sie ein Verzeichnis public in den Ordner Ihrer django Projekt mit dem Namen.
  2. In diesem Verzeichnis erstellen Sie die Datei django.fcgi mit folgendem Inhalt:

    #!/usr/bin/python 
    import os, sys 
    
    _PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
    sys.path.insert(0, _PROJECT_DIR) 
    sys.path.insert(0, os.path.dirname(_PROJECT_DIR)) 
    
    _PROJECT_NAME = _PROJECT_DIR.split('/')[-1] 
    os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME 
    
    from django.core.servers.fastcgi import runfastcgi 
    runfastcgi(method="threaded", daemonize="false") 
    
  3. Als Nächstes erstellen Sie eine .htaccess im public Ordner mit folgendem Inhalt:

    AddHandler fcgid-script .fcgi 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L] 
    
  4. Wenn Sie‘ Planen Sie die django Admin-Schnittstelle ein, erstellen Sie diese symbolische Verbindung in Ihrem Verzeichnis public:

    ln -s /usr/local/alwaysdata/python/django/1.1/django/contrib/admin/media/ media 
    
  5. Am Ende der Ordnerbaumhierarchie irgendwie sollte wie folgt aussehen:

    myproject/ 
        __init__.py 
        manage.py 
        public/ 
         django.fcgi 
         .htaccess 
         media/ 
        settings.py 
        urls.py 
        myapp/ 
         views.py 
         models.py 
    

Hoffnung, das hilft. Ich habe mit dem Admin gesprochen und er sagte, dass er bald ein englisches Wiki bereitstellen wird. Hoffen wir, dass dies in absehbarer Zeit geschehen wird.


UPDATE: Es gibt einen English wiki article now.

+0

Es hat funktioniert! Herzlichen Glückwunsch zu deiner ersten Django-Seite. danke ... – Emrah

+5

+1 für die Lieferung einer Antwort über ein System mit Dokumenten in einer Sprache, die Sie nicht sprechen. Vielleicht sollte es ein neues Abzeichen dafür geben, nur nicht sicher, wie es heißen würde. Mehrsprachig-nicht-übersetzen-wild-ass-rate-hackage? Nein, zu lange. :-) –

+2

AlwaysData wird immer internationaler. Ich denke, dass sie sehr glücklich wären, wenn Sie bereit sind, für das englische Wiki zu helfen (es ist ein Wiki, damit Sie beitragen können). Wenn die Dokumentation in Französisch ist, ist der Support Weltklasse :) – luc

6

Sie versuchen, zwei verschiedene Web-Server Integrationsmethoden zu mischen: fcgi (schneller cgi) und wsgi.

Ihr erstes Snippet ist für eine wsgi-Schnittstelle mit dem Webserver und ist die empfohlene Methode für die Integration von Django mit Apache. Sehr gute Ressourcen (einschließlich Beispiele) Sie dies richtig helfen einrichten können in der offiziellen Django docs How to use Django with Apache and mod_wsgi und die mod_wsgi docs Integration with Django

Der zweite Code-Schnipsel (mit AddHandler Linie) zu finden ist für fcgi. Dies ist die Art von Schnittstelle, die typischerweise verwendet wird, um Django mit den Webservern lighttpd und nginx zu verbinden. Ressourcen zum Einrichten der fcgi-Schnittstelle finden Sie in der offiziellen Django-Dokumentation How to use Django with FastCGI, SCGI, or AJP.

Da es aussieht wie alwaysdata.com verwendet nur FastCGI (fcgi) Schnittstelle Sie sind mit dieser Methode fest. Es sieht aus wie es gibt Beispiele auf ihre Wiki-Seite Déployer une application Django und besonders Sie benötigen, um mit diesem ersten (wsgi) Snippet ersetzen:

#!/usr/bin/python 
import os, sys 

_PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
sys.path.insert(0, _PROJECT_DIR) 
sys.path.insert(0, os.path.dirname(_PROJECT_DIR)) 

_PROJECT_NAME = _PROJECT_DIR.split('/')[-1] 
os.environ['DJANGO_SETTINGS_MODULE'] = "%s.settings" % _PROJECT_NAME 

from django.core.servers.fastcgi import runfastcgi 
runfastcgi(method="threaded", daemonize="false")