Проблема между Django 2.0 / Apache2 и WSGI
471 просмотра
1 ответ
Я пытаюсь развернуть проект Django на своем сервере, но у меня возникли некоторые проблемы.
Моя среда:
- Ubuntu 16.04 Server
- Джанго 2.0
- Python 3.5
- Apache2 2.4
- WSGI
Конфигурация Django:
Мой проект Django находится по адресу: /var/www/html/DatasystemsCORE
У меня есть файл wsgi.py ( /var/www/html/DatasystemsCORE/DatasystemsCORE
), который выглядит следующим образом:
import os, sys
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DatasystemsCORE.settings")
application = get_wsgi_application()
У меня ALLOWED_HOST
вот так:
ALLOWED_HOSTS = ['localhost', '172.30.10.86', '[::1]']
Конфигурация Apache2:
В моем файле apache2.conf у меня есть:
WSGIScriptAlias / /var/www/html/DatasystemsCORE/DatasystemsCORE/wsgi.py
WSGIPythonPath /var/www/html/DatasystemsCORE
Alias /static/ /var/www/html/DatasystemsCORE/static/Theme/
<Directory /var/www/html/DatasystemsCORE/static/Theme/>
Require all granted
</Directory>
<Directory /var/www/html/DatasystemsCORE/DatasystemsCORE>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
И у меня есть в sites-available / 000-default.conf :
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/DatasystemsCORE
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
На мой взгляд, все параметры кажутся правильными, но когда я пишу: 172.30.10.86:80 в моем браузере, я получаю:500 Internal Server Error
Проследить
Это обратная связь, заданная error.log в apache2:
[Tue Apr 24 12:07:32.526764 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] mod_wsgi (pid=2611): Target WSGI script '/var/www/html/DatasystemsCORE/DatasystemsCORE/wsgi.py' cannot be loaded as Python module.
[Tue Apr 24 12:07:32.526839 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] mod_wsgi (pid=2611): Exception occurred processing WSGI script '/var/www/html/DatasystemsCORE/DatasystemsCORE/wsgi.py'.
[Tue Apr 24 12:07:32.526970 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] Traceback (most recent call last):
[Tue Apr 24 12:07:32.527038 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] File "/var/www/html/DatasystemsCORE/DatasystemsCORE/wsgi.py", line 14, in <module>
[Tue Apr 24 12:07:32.527042 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] application = get_wsgi_application()
[Tue Apr 24 12:07:32.527048 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] File "/usr/local/lib/python3.5/dist-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[Tue Apr 24 12:07:32.527050 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] django.setup(set_prefix=False)
[Tue Apr 24 12:07:32.527055 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] File "/usr/local/lib/python3.5/dist-packages/django/__init__.py", line 24, in setup
[Tue Apr 24 12:07:32.527064 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] apps.populate(settings.INSTALLED_APPS)
[Tue Apr 24 12:07:32.527069 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] File "/usr/local/lib/python3.5/dist-packages/django/apps/registry.py", line 81, in populate
[Tue Apr 24 12:07:32.527072 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] raise RuntimeError("populate() isn't reentrant")
[Tue Apr 24 12:07:32.527086 2018] [wsgi:error] [pid 2611:tid 139723751765760] [client 172.30.10.73:50128] RuntimeError: populate() isn't reentrant
Я пробовал много вещей в соответствии с несколькими вопросами, связанными со стековым потоком, но ни один из них до сих пор не ответил.
Я что-то пропустил с wsgi
или mod_wsgi
?
редактировать
Мой последний файл Apache Conf выглядит так:
<VirtualHost *:80>
ServerName DatasystemsCORE
DocumentRoot /var/www/html/DatasystemsCORE/DatasystemsCORE
WSGIPassAuthorization On
WSGIScriptAlias / /var/www/html/DatasystemsCORE/DatasystemsCORE/DatasystemsCORE.wsgi
WSGIDaemonProcess DatasystemsCORE python-home=/home/valentin python-path=/var/www/html/DatasystemsCORE
Alias /static/ /var/www/html/DatasystemsCORE/static/Theme/
<Directory /var/www/html/DatasystemsCORE/static/Theme/>
Require all granted
</Directory>
<Directory /var/www/html/DatasystemsCORE/DatasystemsCORE>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
РЕШЕНИЕ
Servername
в моем файле apache2.conf должен указываться мой, server hostname
а не мой проект Django!
Ответы (1)
2 плюса
HI вы можете попробовать следующую конфигурацию:
import os
from django.core.wsgi import get_wsgi_application
import sys
sys.path.append('/var/www/html/DatasystemsCORE')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DatasystemsCORE.settings")
application = get_wsgi_application()
Модуль Apache2 Python WSGI
sudo apt-get установить python3-pip apache2 libapache2-mod-wsgi-py3
<VirtualHost *:80>
ServerName dev.example.com #your server name
ServerAlias dev.example.com #your server alias
DocumentRoot #your document root
WSGIProcessGroup dev.example.com
WSGIPassAuthorization On
WSGIDaemonProcess dev.example.com python-home=/home/robert/django/robertenv python-path=/var/www/html/DatasystemsCORE <Here should be your virtual env path >
WSGIScriptAlias / /var/www/html/DatasystemsCORE/DatasystemsCORE/wsgi.py
Alias /static/ /var/www/html/DatasystemsCORE/static/Theme/ #static directory
<Directory /var/www/html/DatasystemsCORE/static/Theme/>
Require all granted
</Directory>
<Directory /var/www/html/DatasystemsCORE/DatasystemsCORE>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
Использовать вышеуказанную конфигурацию виртуального хоста
Автор: Robert Размещён: 24.04.2018 10:37Вопросы из категории :
- python Обработка XML в Python
- python Как я могу использовать Python itertools.groupby ()?
- python Python: На какой ОС я работаю?
- python Как я могу создать непосредственно исполняемое кроссплатформенное приложение с графическим интерфейсом на Python?
- django Использование виджетов времени / даты в Django в произвольной форме
- django Django + FCGID на Fedora Core 9 - что мне не хватает?
- django Грязные поля в джанго
- django Есть ли простой способ заполнить SlugField из CharField?
- mod-wsgi ошибка: не может начать новую тему
- mod-wsgi Перенаправить stdout и stderr в файл в Django с помощью wsgi
- mod-wsgi Проект Django (apache, mod_wsgi) не может импортировать пакеты пространства имен
- mod-wsgi Невозможно загрузить целевой WSGI-скрипт в качестве модуля Python
- wsgi Сохраняют ли браузеры порядок входов с одинаковыми именами в GET / POST?
- wsgi Как исправить «_imaging C модуль не установлен» Django / WSGI / Apache
- wsgi Запуск скриптов Python, таких как PHP
- django-wsgi Setting up Django on AWS Elastic Beanstalk: WSGIPath not found
- django-wsgi Django перестает работать с RuntimeError: populate () не реентерабелен
- django-wsgi Django :: OperationalError в / admin / login / не может открыть файл базы данных