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.
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?
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.