2009-12-23 19 views
9

Soy nuevo en django. Intenté esto pero no puedo implementarlo. ¿Cómo puedo hacerImplementando Django en 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

Dame un ejemplo de trabajo – Emrah

+0

¿Recibes errores? Te falta un + en la línea 5, ¿y quieres decir "../" en lugar de "/ ..."? – Seth

Respuesta

21

Aquí está la alwaysdata wiki entry para configurar Django con FastCGI. El único inconveniente: está escrito en francés.

Bueno, yo no hablo francés, pero lo que dice básicamente es:

  1. Crear un directorio llamado public en la carpeta de su proyecto Django.
  2. En ese directorio crear el archivo django.fcgi con el siguiente contenido:

    #!/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. A continuación, cree un .htaccess en la carpeta public con el siguiente contenido:

    AddHandler fcgid-script .fcgi 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L] 
    
  4. Si' Si planea incluir la interfaz de administración de django, cree este enlace simbólico en su directorio public:

    ln -s /usr/local/alwaysdata/python/django/1.1/django/contrib/admin/media/ media 
    
  5. Al final la jerarquía de árbol de carpetas de alguna manera debe tener este aspecto:

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

Espero que esto ayude. Hablé con el administrador, y él dijo que pronto proporcionará una wiki en inglés. Esperemos que esto suceda pronto.


ACTUALIZACIÓN: Hay un English wiki article now.

+0

¡Funcionó! Felicitaciones por su primera página alimentada por Django. gracias ... – Emrah

+5

+1 para dar una respuesta sobre un sistema con documentos escritos en un idioma que usted no habla. Tal vez debería haber una nueva insignia para esto, simplemente no estoy seguro de cómo se llamaría. ¿Multilingüe-no-traducción-salvaje-culo-adivinar-hackear? Nah, demasiado tiempo. :-) –

+2

AlwaysData se está volviendo más y más internacional cada día. Creo que estarían muy felices si estás listo para ayudar con la Wiki en inglés (es una wiki para que puedas contribuir). Si la documentación está en francés, el soporte es de clase mundial :) – luc

6

Usted está tratando de mezclar dos métodos de integración de servidores web diferentes: fcgi (cgi rápido) y wsgi.

Su primer fragmento es para una interfaz wsgi con el servidor web y es el método recomendado para integrar Django con Apache. Muy buenos recursos (incluyendo ejemplos) para ayudarle a configurar, lo configuran correctamente se pueden encontrar en los documentos oficiales de Django How to use Django with Apache and mod_wsgi y la documentación mod_wsgi Integration with Django

El segundo fragmento (con línea de AddHandler) es para fcgi. Este es el tipo de interfaz que se usa más comúnmente para interactuar con Django con los servidores web lighttpd y nginx. Los recursos para configurar la interfaz fcgi se pueden encontrar en los documentos oficiales de Django How to use Django with FastCGI, SCGI, or AJP.

Como parece que alwaysdata.com solo usa la interfaz FastCGI (fcgi), usted está atascado con este método. Parece que hay ejemplos en su página wiki Déployer une application Django y particularmente que necesita para reemplazar su primer fragmento (wsgi) con esto:

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