LINUX.ORG.RU

Установка DJango: не могу подключитья к APAche2 через WSGI

 , ,


0

1

Решил попробовать установить Django на пощупать.

Нарыл книжку «Django. Разработка веб-приложений на Python», почитал интернет-ресурсы. Стал устанавливать. Система Debian.

Установил пакеты с Апачем2, Питоном, базовый Django. Подключение к апачу делаю, согласно рекомендациям, через WSGI. Мне необходимо установить проект в директорию /app виртуального хоста local_libretag.ru.

Последовательность моих действий:

1. Сделал директорию /var/www/libretag

2. Выполнил в этой директории команду:

django-admin startproject app

В результате в каталоге /var/www/libretag появилось следующее дерево:

DIR app
+-- DIR app
    +-- __init__.py
        settings.py
        urls.py    
        wsgi.py
    manage.py

3. В каталог /var/www/libretag/app поместил файл django.wsgi следующего содержания:

import os
import sys

sys.path.append('/var/www/libretag/app')
os.environ['DJANGO_SETTINGS_MODULE'] = 'app.settings'

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

4. Настроил виртуальных хост local_libretag.ru.

Содержимое файла /etc/apache2/sites-enabled/local_libretag.ru.conf:

<VirtualHost *:80>

 ServerName local_libretag.ru
 ServerAlias www.local_libretag.ru
 
 DocumentRoot "/var/www/libretag"

 <Directory "/var/www/libretag">
  allow from all
  Options +Indexes
  AllowOverride all
 </Directory>

 Alias /media/ "/var/www/libretag/app/media"
 WSGIScriptAlias / /var/www/libretag/app/django.wsgi

</VirtualHost>

Вот, в принципе и все. Перезагрузил апач2, открываю урл:

local_libretag.ru

И вижу ошибку:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Полез в логи апача. В файле /var/log/apache2/error.log обнаружились записи:

Internal Server Error: /
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 92, in get_response
    response = middleware_method(request)
  File "/usr/lib/python2.7/dist-packages/django/middleware/common.py", line 57, in process_request
    host = request.get_host()
  File "/usr/lib/python2.7/dist-packages/django/http/request.py", line 72, in get_host
    "Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): %s" % host)
SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): local_libretag.ru

То есть, Питон по WSGI подключился и вызывается. Django установлен и вроде как работает. Но тиолько не так как надо.

В файле /var/www/linuxtrash/app/app/settings.py есть строка:

ALLOWED_HOSTS = []

Я пробовал ее заменять на:

ALLOWED_HOSTS = ['*']

и на:

ALLOWED_HOSTS = ["http://local_libretag.ru/", "http://local_libretag.ru", "local_libretag.ru/", "local_libretag.ru"]

- толку никакого, все те же ошибки и в окне браузера и в логе.

Вопрос. Как все-таки настроить Django? Как избавиться от вышеприведенной ошибки?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

В settings.py установите debug = True.
Тогда он не будет проверять ALLOWED_HOSTS.

На пощупать пойдет и так) Это уже когда запускать что-то будете, тогда нужно разбираться.

Dmit3Y
()

В одном месте ты пишешь /var/www/libretag, в другом /var/www/linuxtrash. Что ты еще не договариваешь?

gruy ★★★★★
()
Ответ на: комментарий от provaton

Такс, понатыкал в

/var/www/libretag/app/django.wsgi

и в

/var/www/libretag/app/app/settings.py

следующий код:

gogo = open ("/tmp/app.log","a")
gogo.write("Label 1\n")
gogo.close()

(номера Label N меняются)

Выяснил, что пр обновлении страницы скрипт django.wsgi вызывается почему-то два раза, а скрипт settings.py не выполняется, несмотря на то, что в django.wsgi прописано:

sys.path.append('/var/www/libretag/app')
os.environ['DJANGO_SETTINGS_MODULE'] = 'app.settings'

Вопрос. По какой причине может не вызываться settings.py?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от gruy

Это я экспериментирую. libretag вестимо.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Dmit3Y

В settings.py установите debug = True.
Тогда он не будет проверять ALLOWED_HOSTS.

Эта опция стоит там по умолчанию в True.

Проблема в том, что до settings.py дело не доходит (см. чуть выше).

Проверял на двух разных виртуальных хостах - везде одно и то же. Файл settings.py не вызывается.

Xintrea ★★★★★
() автор топика
Ответ на: Ты сам виноват. от x3al

В двух словах: убери подчёркивание в имени домена.

Ахтыжёбаныйжтынахуй. Неслабую засаду сделали. Щас проверю.

Xintrea ★★★★★
() автор топика

А что, тестовый сервер «на пощупать» не?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.