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

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

Я пытаюсь настроить 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@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!

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

ОБНОВЛЕНИЕ: В случае, если это - ошибка полномочий файла, я работал 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
задан 04.05.2011, 12:59

0 ответов

При выполнении любого веб-приложения, поскольку корень не желателен!

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

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

1
ответ дан 17.12.2019, 00:20

Теги

Похожие вопросы