Aplicação Django WSGI em um subdiretório?

1

Recentemente, eu queria colocar um dos meus aplicativos WSGI em um subdiretório, para que os outros diretórios que contêm vários scripts funcionassem como antes. Para fazer isso, adicionei a seguinte diretiva ao meu httpd.conf no namespace global (também tentei colocá-la no VirtualHost , que deu os mesmos efeitos):

WSGIScriptAlias /hello/ /var/www/hello/hello.wsgi

Em seguida, eu corri django-admin startproject hello . Depois de recarregar as configurações do Apache, posso confirmar que http://localhost/hello/ aponta para uma tela de boas-vindas do Django. Em seguida, editei hello/urls.py para adicionar a seguinte linha na urlpatterns tuple:

url(r'^hello/', 'hello.views.home'),

Em seguida, criei hello / views.py com o seguinte conteúdo:

from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello world")

Infelizmente, quando tento visitar http://localhost/hello/hello , recebo uma mensagem padrão do Apache 404 e a seguinte entrada no log de erros:

[Mon Dec 23 19:49:44 2013] [error] [client 31.182.131.38] Target WSGI script not found or unable to stat: /var/www/hello/hello.wsgihello

Observe o hello.wsgihello . O segundo hello é o texto que aparece após /hello/ no URL. Para http://localhost/hello/unknown , seria hello.wsgiunknown . Aqui está o meu hello.wsgi :

import os
import sys

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

path = '/var/www/hello'
if path not in sys.path:
    sys.path.append(path)

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

Eu fiz algo errado? Como faço para corrigir isso?

    
por d33tah 23.12.2013 / 20:02

1 resposta

1

A sintaxe do arquivo em /var/www/hello/hello.wsgi me confundiu. Aparentemente, se alguém apontar para /var/www/hello/hello.wsgi/ , a configuração funciona bem.

    
por 23.12.2013 / 20:59