Django / Apache / mod_wsgi: как избежать 403, не делая исполняемый мир home dir?

5681
simon

[Пожалуйста, смотрите в нижней части вопроса для последнего статуса!]

Я пытаюсь настроить Django с Apache + mod_wsgi на ванильной машине Debian 6.0.

К сожалению, когда я иду на IP-адрес машины в браузере, я получаю 403 Forbidden: You don't have permission to access / on this server. Логи Apache просто говорят:

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

Итак, вот что я пытался сделать. Я настроил новый проект Django в ~/fruit/myfruitи некоторые файлы WSGI / Apache в ~/fruit/apacheследующем:

**~/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> 

И я отредактировал различные файлы Apache следующим образом:

**/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 

Когда я перезагружаю Apache (работающий от имени root), я получаю следующие предупреждения:

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 . 

Я не знаю, связаны ли они с ошибкой разрешений или имеет значение, что сообщение об ошибке печатается дважды.

Пожалуйста, кто-нибудь может сказать мне, что я делаю не так? У меня мало опыта работы с Apache!

Большое спасибо!

UPDATE: В случае, если это ошибка прав доступа к файлам, я работать chmod a+x *для всех файлов в myfruitи apacheкаталогах и сами каталогов, и перезапустить Apache. Нет радости

ОБНОВЛЕНИЕ: я даже не могу подключиться к 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. 

ОБНОВЛЕНИЕ: ОК решил, установив chmod a+xв моем rootкаталоге. Хотя мне это совсем не нравится - наверняка это дыра в безопасности? Что я должен делать вместо этого?

1

1 ответ на вопрос

1
h0tw1r3

Запуск любого веб-приложения с правами root не рекомендуется!

Как вы уже поняли, это проблема с разрешениями. Причина, по которой вам пришлось использовать chmod для + x в / root, заключается в том, что ни один другой пользователь, включая пользователя, работающего с apache, не имеет прав на каталог / root (он должен быть закрытым!).

Либо обслуживайте приложение, используя пользователя веб-сервера (www-data на debian IIRC) из папки / var / www, либо, что еще лучше, создайте совершенно нового пользователя.

Спасибо - подача из `/ var / www` кажется подходящей :) simon 13 лет назад 0