2009-12-23 2 views
9

Je suis nouveau sur django. J'ai essayé mais je ne peux pas déployer. Comment puis-je faireDéploiement de Django sur 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

me donner un exemple de travail – Emrah

+0

Avez-vous des erreurs? Il vous manque un + sur la ligne 5 et voulez-vous dire "../" au lieu de "/ .."? – Seth

Répondre

21

Voici le alwaysdata wiki entry pour la mise en place Django avec FastCGI. Seulement à l'envers: c'est écrit en français.

Eh bien, je ne parle pas français, mais ce qu'il dit est essentiellement:

  1. Créez un répertoire nommé public dans le dossier de votre projet django.
  2. Dans ce répertoire, créez le fichier django.fcgi avec le contenu suivant:

    #!/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. Ensuite, créez un fichier .htaccess dans le dossier public avec le contenu suivant:

    AddHandler fcgid-script .fcgi 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L] 
    
  4. Si vous re planifiant d'inclure l'interface d'administration django, créez ce lien symbolique dans votre répertoire public:

    ln -s /usr/local/alwaysdata/python/django/1.1/django/contrib/admin/media/ media 
    
  5. En fin de votre hiérarchie d'arborescence des dossiers devrait ressembler en quelque sorte comme ceci:

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

Hope this helps. J'ai parlé avec l'administrateur, et il a dit qu'il va bientôt fournir un wiki en anglais. Espérons que cela va arriver de sitôt.


MISE À JOUR: Il y a un English wiki article now.

+0

Ça a marché! Félicitations pour votre première page alimentée par Django. merci ... – Emrah

+5

+1 pour avoir fourni une réponse sur un système avec des documents écrits dans une langue que vous ne parlez pas. Peut-être qu'il devrait y avoir un nouveau badge pour ça, mais je ne sais pas trop comment il s'appellerait. Multilingue-non-traduction-sauvage-ass-deviner-hackage? Nah, trop longtemps. :-) –

+2

AlwaysData devient de plus en plus international tous les jours. Je pense qu'ils seraient très heureux si vous êtes prêts à aider pour le Wiki anglais (c'est un wiki pour que vous puissiez contribuer). Si la documentation est en français, le support est worldclass :) – luc

6

Vous essayez de mélanger deux méthodes d'intégration de serveurs web différents: fcgi (cgi rapide) et wsgi.

Votre premier extrait est pour une interface wsgi avec le serveur Web et est la méthode recommandée pour l'intégration de Django avec Apache. Très bonnes ressources (y compris des exemples) pour vous aider à régler correctement cette peuvent être trouvés dans les documents officiels Django How to use Django with Apache and mod_wsgi et les mod_wsgi docs Integration with Django

Le deuxième extrait (avec la ligne AddHandler) est pour fcgi. C'est le type d'interface qui est généralement utilisé pour interfacer Django avec les serveurs web lighttpd et nginx. Les ressources pour configurer l'interface de fcgi peuvent être trouvées dans les documents officiels de Django How to use Django with FastCGI, SCGI, or AJP. Comme il semble que alwaysdata.com n'utilise que l'interface FastCGI (fcgi), vous êtes bloqué avec cette méthode. On dirait qu'il ya des exemples sur leur page wiki Déployer une application Django et vous aurez besoin Particulary remplacer votre premier (wsgi) extrait avec ceci:

#!/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") 
Questions connexes