Не удалось развернуть django с mod_wsgi и apache

Я не могу развернуть свой сайт django с помощью mod_wsgi после нескольких разочаровывающих дней попыток. Может ли кто-нибудь в здравом уме проверить эти детали и посмотреть, есть ли что-то явно не так? Это мое первое развертывание Django. Он запускал файл с python manage.py runserver 10.10.10.214:8080, но я не могу развернуть

мой файл wsgi.py в /home/user/django/mysite (также там, где находятся мои settings.py и т. д.)

"""
WSGI config for myproject project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/
"""

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

мой файл apache .conf:

LoadModule wsgi_module /home/conf/apache2/modules/mod_wsgi.so #dont read into the locations too much - they are correct

WSGIScriptAlias / /home/user/django/mysite/wsgi.py
WSGIPythonPath /home/user/django

<Directory /home/user/django/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

Я вынужден использовать сильно настроенную версию apache, но приведенный выше файл conf включен. Любая помощь на всех было бы здорово.

Здоровья, Артур


person Arthur M    schedule 01.07.2015    source источник
comment
Я рекомендую развертывать с nginx и uwsgi;) django-tips.com/tip/   -  person doniyor    schedule 01.07.2015
comment
Журнал ошибок apache указывает вам какое-либо направление. Конфигурация кажется правильной на первый взгляд   -  person Maximilian Kindshofer    schedule 01.07.2015
comment
Я мог бы просто посмотреть на это @doniyor   -  person Arthur M    schedule 01.07.2015
comment
С таким же успехом вы можете изучить gunicorn/nginx — настройка проста по сравнению с apache и mod_wsgi. Используйте веб-сервер Apache только в том случае, если вы по какой-то причине застряли с ним.   -  person Maximilian Kindshofer    schedule 01.07.2015
comment
@MaximilianKindshofer похоже, что проблема может быть в этом: [Wed Jul 01 16:50:15 2015] [error] [client 10.78.73.27] (13)Permission denied: access to /favicon.ico denied (filesystem path '/home/user/django') because search permissions are missing on a component of the path, referer: http://10.10.10.214/. Любая идея, как я могу исправить разрешения на поиск. Я уже пытался решить проблему с помощью одеяла «chmod -R 777» в корневом каталоге django, содержащем код и статические файлы.   -  person Arthur M    schedule 01.07.2015
comment
вы используете апач 2.2? чем права должны быть: ‹Каталог /usr/local/django/mysite› ​​Запретить порядок, разрешить Разрешить всем ‹/Directory›   -  person Maximilian Kindshofer    schedule 01.07.2015
comment
Это также может помочь: askubuntu.com/questions/451922/   -  person Maximilian Kindshofer    schedule 01.07.2015
comment
Теперь я получаю что-то @MaximilianKindshofer - вижу ошибку, с которой мне гораздо удобнее: [Wed Jul 01 17:34:17 2015] [error] [client 10.78.73.27] ImportError: No module named wsgi   -  person Arthur M    schedule 01.07.2015
comment
Вы можете проверить файл robs wsgi.py ниже. Похоже, что вы не можете импортировать модуль wsgi из этого места и должны добавить его системный путь, также проверьте: code.google.com/p/modwsgi/wiki/IntegrationWithDjango это отличный ресурс для mod_wgsi   -  person Maximilian Kindshofer    schedule 01.07.2015
comment
Домашняя директория, такая как /home/user, часто имеет ограничительные разрешения и недоступна для других пользователей. Таким образом, недостаточно просто сделать каталог проекта Django доступным. Домашний каталог также должен быть доступен для пользователя, от имени которого работает Apache. Возможно, будет лучше переместить проект из вашей учетной записи пользователя, чтобы вы не возились с разрешениями учетной записи.   -  person Graham Dumpleton    schedule 02.07.2015
comment
Просто к вашему сведению, я никогда не сталкивался с проблемами разрешений для приложений Django в моей папке home (где пользователь находится в группе www-data). Тем не менее, теперь я держу свои приложения в более логичном месте, например /srv/web/vh/.   -  person Rob L    schedule 02.07.2015
comment
Хрмф. Теперь я вижу ошибку импорта - [Thu Jul 02 17:49:15 2015] [error] [client 10.78.73.27] TemplateSyntaxError: Caught ImportError while rendering: No module named staticfiles. Я пробовал импортировать django.contrib.staticfiles в wsgi.py, все работает нормально, но это не источник проблемы. Любые идеи по этому поводу?   -  person Arthur M    schedule 02.07.2015


Ответы (1)


Попробуйте этот wsgi.py:

import os
import sys

os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"

sys.path.append('/home/user/django/mysite/')
sys.path.append('/home/user/django/')

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

И добавьте это в свой конфиг перед псевдонимом:

WSGIDaemonProcess <process_name> processes=2 threads=15 user=<username> display-name=%{GROUP}
WSGIProcessGroup <process_name>

Имя процесса может быть «mysite.com» или любым другим. Пользователь является пользователем Linux.

person Rob L    schedule 01.07.2015
comment
Роб, правильно ли я скажу, что ‹process_name› может быть чем угодно? Что-то логичное, конечно. Также я считаю, что если оставить user=‹username›, будут использоваться дочерние разрешения apache по умолчанию. - person Arthur M; 01.07.2015
comment
Артур, ты, наверное, прав насчет обоих этих вещей. Я использую user=www-data, например. - person Rob L; 02.07.2015