Я пытаюсь развернуть мое приложение Django на моем apache сервере. Несмотря на все учебники и потоки (включая stackoverflow), которые я прочитал, я все еще не могу найти решение.
Только для контекста я создал приложение Django локально, используя виртуальные env и Django 3+. Мой следующий шаг - поместить его на сервер Apache.
Так что после извлечения из моей учетной записи github я настроил виртуальную среду на сервере, используя
virtualenv env
Затем я выполните следующую командную строку, чтобы установить требования
pip install -r requirements.txt
Пока все хорошо.
По сути, после настройки виртуального хоста у меня возникает следующая ошибка:
**django.core.exceptions.ImproperlyConfigured: Configuration cannot be imported, environment variable DJANGO_CONFIGURATION is undefined.**
Я уточняю (будет приведено ниже), что все установлено правильно и переменная среды установлена .
Вот мои логи project_error.log :
[Fri Apr 24 17:54:52.416771 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] mod_wsgi (pid=30069): Target WSGI script '/var/www/admin-dashboard/project/wsgi.py' cannot be loaded as Python module.
[Fri Apr 24 17:54:52.416903 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] mod_wsgi (pid=30069): Exception occurred processing WSGI script '/var/www/admin-dashboard/project/wsgi.py'.
[Fri Apr 24 17:54:52.417460 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] Traceback (most recent call last):
[Fri Apr 24 17:54:52.417527 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] File "/var/www/admin-dashboard/project/wsgi.py", line 1, in <module>
[Fri Apr 24 17:54:52.417545 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] from configurations.wsgi import get_wsgi_application
[Fri Apr 24 17:54:52.417565 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] File "/var/www/admin-dashboard/env/lib/python3.6/site-packages/configurations/wsgi.py", line 3, in <module>
[Fri Apr 24 17:54:52.417581 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] importer.install()
[Fri Apr 24 17:54:52.417600 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] File "/var/www/admin-dashboard/env/lib/python3.6/site-packages/configurations/importer.py", line 49, in install
[Fri Apr 24 17:54:52.417616 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] importer = ConfigurationImporter(check_options=check_options)
[Fri Apr 24 17:54:52.417635 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] File "/var/www/admin-dashboard/env/lib/python3.6/site-packages/configurations/importer.py", line 68, in __init__
[Fri Apr 24 17:54:52.417650 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] self.validate()
[Fri Apr 24 17:54:52.417669 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] File "/var/www/admin-dashboard/env/lib/python3.6/site-packages/configurations/importer.py", line 111, in validate
[Fri Apr 24 17:54:52.417685 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] raise ImproperlyConfigured(self.error_msg.format(self.namevar))
[Fri Apr 24 17:54:52.417715 2020] [wsgi:error] [pid 30069] [remote 193.248.218.163:55647] django.core.exceptions.ImproperlyConfigured: Configuration cannot be imported, environment variable DJANGO_CONFIGURATION is undefined.
000-defaut.conf
<VirtualHost *:80>
ServerAdmin contact@project.ai
ServerName domain.ai
ServerAlias admin.domain.ai
Alias /static /var/www/admin-dashboard/static/
Alias /media /var/www/admin-dashboard/media/
WSGIDaemonProcess project python-home=/var/www/admin-dashboard/env python-path=/var/www/admin-dashboard
WSGIProcessGroup project
WSGIApplicationGroup %{GLOBAL}
WSGIScriptAlias / /var/www/admin-dashboard/project/wsgi.py
<Directory /var/www/admin-dashboard/static>
Options -Indexes
Order deny,allow
Allow from all
</Directory>
<Directory /var/www/admin-dashboard/media>
Options -Indexes
Order deny,allow
Allow from all
</Directory>
<Directory /var/www/admin-dashboard>
Order deny,allow
Allow from all
</Directory>
DocumentRoot /var/www/admin-dashboard
ErrorLog ${APACHE_LOG_DIR}/project_error.log
CustomLog ${APACHE_LOG_DIR}/project_access.log combined
wsgi.py
from configurations.wsgi import get_wsgi_application
import os
import sys
import site
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
path = BASE_DIR
if path not in sys.path:
sys.path.append(path)
PROJECT_PATH=abspath(join(dirname(__file__), "."))
sys.path.append(PROJECT_PATH)
# Calculate path to site-packages directory.
vepath = PROJECT_PATH+'/env'
python_version = '.'.join(map(str, sys.version_info[:2]))
site_packages = vepath + '/lib/python%s/site-packages' % python_version
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir(vepath)
site.addsitedir(site_packages)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
os.environ.setdefault('DJANGO_CONFIGURATION', 'Dev')
application = get_wsgi_application()
Перед запуском я обратил внимание на настройку переменной среды
export DJANGO_SETTINGS_MODULE=project.settings
export DJANGO_CONFIGURATION=Prod
Обратите внимание, что все установлено правильно, потому что при запуске python manage.py runserver
, работает. Он также работает локально.
На случай, если мои требования. Txt :
asgiref==3.2.7
certifi==2020.4.5.1
chardet==3.0.4
Django==3.0.5
django-admin-sortable2==0.7.6
django-bootstrap-modal-forms==1.5.0
django-configurations==2.2
django-crispy-forms==1.9.0
django-daterangefilter==1.0.0
django-filter==2.2.0
django-material-admin==1.7.0
django-mysql==3.4.0
geographiclib==1.50
geopy==1.21.0
get==2019.4.13
idna==2.9
mod-wsgi==4.7.1
mysqlclient==1.4.6
Pillow==7.1.1
post==2019.4.13
public==2019.4.13
python-decouple==3.3
pytz==2019.3
query-string==2019.4.13
request==2019.4.13
requests==2.23.0
six==1.14.0
sqlparse==0.3.1
urllib3==1.25.9
Есть идеи, почему возникла эта ошибка? DJANGO_CONFIGURATION был установлен, и я смог проверить, используя printenv
Спасибо за помощь.