Как настроить Django на Apache2 + WSGI? - Python

Узнай цену своей работы

Формулировка задачи:

Решил попробовать установить Django на пощупать. Нарыл книжку "Django. Разработка веб-приложений на Python", почитал интернет-ресурсы. Стал устанавливать. Система Debian. Установил пакеты с Апачем2, Питоном, базовый Django. Подключение к апачу делаю, согласно рекомендациям, через WSGI. Мне необходимо установить проект в директорию

/app

виртуального хоста local_libretag.ru. Последовательность моих действий: 1. Сделал директорию

/var/www/libretag

2. Выполнил в этой директории команду:
Листинг программы
  1. django-admin startproject app
В результате в каталоге

/var/www/libretag

появилось следующее дерево:
Листинг программы
  1. DIR app
  2. +-- DIR app
  3. +-- __init__.py
  4. settings.py
  5. urls.py
  6. wsgi.py
  7. manage.py
3. В каталог

/var/www/libretag/app

поместил файл django.wsgi следующего содержания:
Листинг программы
  1. import os
  2. import sys
  3.  
  4. sys.path.append('/var/www/libretag/app')
  5. os.environ['DJANGO_SETTINGS_MODULE'] = 'app.settings'
  6.  
  7. import django.core.handlers.wsgi
  8. application = django.core.handlers.wsgi.WSGIHandler()
4. Настроил виртуальных хост local_libretag.ru. Содержимое файла /etc/apache2/sites-enabled/local_libretag.ru.conf:
Листинг программы
  1. <VirtualHost *:80>
  2.  
  3. ServerName local_libretag.ru
  4. ServerAlias www.local_libretag.ru
  5. DocumentRoot "/var/www/libretag"
  6.  
  7. <Directory "/var/www/libretag">
  8. allow from all
  9. Options +Indexes
  10. AllowOverride all
  11. </Directory>
  12.  
  13. Alias /media/ "/var/www/libretag/app/media"
  14. WSGIScriptAlias / /var/www/libretag/app/django.wsgi
  15.  
  16. </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

обнаружились записи:
Листинг программы
  1. Internal Server Error: /
  2. Traceback (most recent call last):
  3. File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py", line 92, in get_response
  4. response = middleware_method(request)
  5. File "/usr/lib/python2.7/dist-packages/django/middleware/common.py", line 57, in process_request
  6. host = request.get_host()
  7. File "/usr/lib/python2.7/dist-packages/django/http/request.py", line 72, in get_host
  8. "Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): %s" % host)
  9. SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): local_libretag.ru
То есть, Питон по WSGI подключился и вызывается. Django установлен и вроде как работает. Но тиолько не так как надо. В файле

/var/www/linuxtrash/app/app/settings.py

есть строка:
Листинг программы
  1. ALLOWED_HOSTS = []
Я пробовал ее заменять на:
Листинг программы
  1. ALLOWED_HOSTS = ['*']
и на:
Листинг программы
  1. ALLOWED_HOSTS = ["http://local_libretag.ru/", "http://local_libretag.ru", "local_libretag.ru/", "local_libretag.ru"]
- толку никакого, все те же ошибки и в окне браузера и в логе.

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

Решение задачи: «Как настроить Django на Apache2 + WSGI?»

textual
Листинг программы
  1. ALLOWED_HOSTS = ['*']

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут