2009-12-23 20 views
9

Sono nuovo su Django. Ho provato questo, ma non posso distribuire. Come posso fareDistribuire Django su 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

mi dia un esempio di lavoro – Emrah

+0

Hai errori? Ti manca un + sulla linea 5 e intendi "../" invece di "/ .."? – Seth

risposta

21

Ecco il alwaysdata wiki entry per la creazione di Django con FastCGI. L'unico lato negativo: è scritto in francese.

Beh, io non parlo francese, ma quello che dice in sostanza è:

  1. Creare una directory chiamata public nella cartella del progetto Django.
  2. In tale directory creare il file django.fcgi con il seguente contenuto:

    #!/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. successivo, creare un file .htaccess nella cartella public con il seguente contenuto:

    AddHandler fcgid-script .fcgi 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L] 
    
  4. Se si' Prevedendo di includere l'interfaccia di amministrazione di django, crea questo link simbolico nella tua directory public:

    ln -s /usr/local/alwaysdata/python/django/1.1/django/contrib/admin/media/ media 
    
  5. Alla fine la gerarchia albero delle cartelle dovrebbe in qualche modo simile al seguente:

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

Spero che questo aiuti. Ho parlato con l'amministratore, e ha detto che presto fornirà un wiki inglese. Speriamo che questo accada presto.


UPDATE: C'è un English wiki article now.

+0

Ha funzionato! Congratulazioni per la tua prima pagina con alimentazione Django. grazie ... – Emrah

+5

+1 per la consegna di una risposta su un sistema con documenti scritti in una lingua che non parli. Forse dovrebbe esserci un nuovo badge per questo, ma non sono sicuro di come si chiamerebbe. Multilingue-nontranslating-wild-ass-indovinare-hackage? Nah, troppo lungo. :-) –

+2

AlwaysData sta diventando sempre più internazionale ogni giorno. Penso che sarebbero molto felici se sei pronto ad aiutare per il Wiki inglese (è un wiki quindi puoi contribuire). Se la documentazione è in francese, il supporto è worldclass :) – luc

6

Si sta cercando di mescolare due diversi metodi di integrazione del server web: fcgi (cgi veloce) e WSGI.

Il primo snippet è per un'interfaccia wsgi con il server Web ed è il metodo consigliato per l'integrazione di Django con Apache. Molto buone risorse (compresi esempi) che consentono di impostare questo in modo corretto si possono trovare nella documentazione Django ufficiali How to use Django with Apache and mod_wsgi e la documentazione mod_wsgi Integration with Django

Il secondo frammento (con la linea AddHandler) è per fcgi. Questo è il tipo di interfaccia che è più tipicamente usata per interfacciare Django con i server web lighttpd e nginx. Le risorse per l'impostazione dell'interfaccia fcgi sono disponibili nei documenti ufficiali Django How to use Django with FastCGI, SCGI, or AJP.

Poiché assomiglia a alwaysdata.com utilizza solo l'interfaccia FastCGI (fcgi), si è bloccati con questo metodo. Sembra che ci sono esempi sulla loro pagina wiki Déployer une application Django e particolarmente è necessario sostituire la prima (WSGI) frammento con questo:

#!/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") 
Problemi correlati