Django / Apache / mod_wsgi: como evitar 403 sem tornar o dir home executável?

1

[Por favor, veja parte inferior da pergunta para o status mais recente!]

Estou tentando configurar o Django com o Apache + mod_wsgi em uma máquina Debian vanilla 6.0.

Infelizmente, quando eu vou para o endereço IP da máquina em um navegador, recebo 403 Forbidden: You don't have permission to access / on this server . Os logs do Apache dizem apenas:

[Wed May 04 10:20:56 2011] [error] [client x.x.x.x] (13)Permission denied: access to / denied

Então aqui está o que eu tentei fazer. Eu configurei um novo projeto Django em ~/fruit/myfruit e alguns arquivos WSGI / Apache em ~/fruit/apache , da seguinte forma:

**~/fruit/apache/django.wsgi**
import os
import sys
path = '~/fruit'
if path not in sys.path:
    sys.path.append(path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'myfruit.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

**~/fruit/apache/django_wsgi.conf**
WSGIScriptAlias / "/root/fruit/apache/django.wsgi"
<Directory "/root/fruit/apache">
Order deny,allow
Allow from all
</Directory>

E eu editei vários arquivos do Apache da seguinte forma:

**/etc/apache2/httpd.conf **
LoadModule wsgi_module modules/mod_wsgi.so
Include "/root/fruit/apache/django_wsgi.conf"

**/etc/hosts**
127.0.0.1 localhost
[[my_ip_address]] debian debian

Quando reinicio o Apache (executando como root), recebo os seguintes avisos:

root@debian:~/fruit/apache# /etc/init.d/apache2 restart
Restarting web server: apache2[Wed May 04 10:27:36 2011] [warn] module wsgi_module is already loaded, skipping
apache2: Could not reliably determine the server's fully qualified domain name, using [[my_ip_address]] for ServerName
 ... waiting [Wed May 04 10:27:37 2011] [warn] module wsgi_module is already loaded, skipping
apache2: Could not reliably determine the server's fully qualified domain name, using [[my_ip_address]] for ServerName
.

Não sei se estão ligados ao erro de permissões ou se é importante que a mensagem de erro seja impressa duas vezes.

Por favor alguém poderia me dizer o que estou fazendo errado? Eu tenho pouca experiência com o Apache!

Muito obrigado!

UPDATE: Caso seja um erro de permissão de arquivo, eu executei chmod a+x * para todos os arquivos nos diretórios myfruit e apache e os próprios diretórios, e reiniciei o Apache. Sem alegria.

UPDATE: não consigo me conectar ao localhost:

root@debian:~/fruit# wget http://localhost
--2011-05-04 10:44:41--  http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2011-05-04 10:44:41 ERROR 403: Forbidden.

UPDATE: OK, resolvido, definindo chmod a+x no meu diretório root . Eu não gosto disso - certamente deve ser um buraco de segurança? O que devo fazer em vez disso?

    
por simon 04.05.2011 / 11:30

1 resposta

1

Não é aconselhável executar qualquer aplicativo da Web como root!

Como você já descobriu, é um problema de permissões. A razão pela qual você teve que chmod a + x on / root é porque nenhum outro usuário, incluindo o usuário executando o apache, tem direitos sobre o diretório / root (ele deve ser privado!).

Ou sirva o aplicativo usando o usuário do servidor web (www-data no debian IIRC) da pasta / var / www ou, melhor ainda, crie um usuário completamente novo.

    
por 04.05.2011 / 19:29