Мое приложение работает нормально через сервер Django, но когда я подключаю его к Apache, оно жалуется, что не может загрузить MySql - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь настроить мой экземпляр Apache 2.4 на моей машине ma c High Sierra для подключения к моему приложению Django. Я настроил эту конфигурацию ...

<VirtualHost *:80>
    ServerName maps.example.com

    # Next, add the following directory block
    <Directory /Library/WebServer/Documents/maps/maps>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess maps python-home=/Library/WebServer/Documents/maps/venv python-path=/Library/WebServer/Documents/maps
    WSGIProcessGroup maps
    WSGIScriptAlias / /Library/WebServer/Documents/maps/maps/wsgi.py

</VirtualHost>

Мои требования.txt выглядит следующим образом ...

(venv) localhost:web davea$ cat requirements.txt 
asgiref==3.2.3
attrs==19.3.0
Babel==2.8.0
click==7.1.1
click-plugins==1.1.1
cligj==0.5.0
Django==2.0
django-address==0.2.1
django-extensions==2.2.8
django-mysql==3.3.0
django-phonenumber-field==4.0.0
djangorestframework==3.11.0
Fiona==1.8.13.post1
geographiclib==1.50
geopandas==0.7.0
geopy==1.21.0
gunicorn==20.0.4
munch==2.5.0
mysqlclient==1.4.6
numpy==1.18.1
pandas==1.0.1
phonenumbers==8.11.2
pycountry==19.8.18
pyproj==2.5.0
python-dateutil==2.8.1
pytz==2019.3
PyYAML==5.3
ruamel.yaml==0.16.6
ruamel.yaml.clib==0.2.0
Shapely==1.7.0
six==1.14.0
sqlparse==0.3.0

Однако, когда я перезагружаю Apache и посещаю свой URL через Apache, приложение умирает с жалобой на невозможность загрузить MySql. В журналах ошибок Apache я вижу это ("django .core.exceptions.ImproperlyConfigured: Ошибка загрузки модуля MySQLdb.") ...

[Sun Mar 29 13:27:38.906093 2020] [wsgi:error] [pid 60345] Traceback (most recent call last):
[Sun Mar 29 13:27:38.906261 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 15, in <module>
[Sun Mar 29 13:27:38.906277 2020] [wsgi:error] [pid 60345]     import MySQLdb as Database
[Sun Mar 29 13:27:38.906291 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/MySQLdb/__init__.py", line 18, in <module>
[Sun Mar 29 13:27:38.906302 2020] [wsgi:error] [pid 60345]     from . import _mysql
[Sun Mar 29 13:27:38.906337 2020] [wsgi:error] [pid 60345] ImportError: dlopen(/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib
[Sun Mar 29 13:27:38.906351 2020] [wsgi:error] [pid 60345]   Referenced from: /Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so
[Sun Mar 29 13:27:38.906360 2020] [wsgi:error] [pid 60345]   Reason: unsafe use of relative rpath libmysqlclient.18.dylib in /Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so with restricted binary
[Sun Mar 29 13:27:38.906376 2020] [wsgi:error] [pid 60345] 
[Sun Mar 29 13:27:38.906386 2020] [wsgi:error] [pid 60345] The above exception was the direct cause of the following exception:
[Sun Mar 29 13:27:38.906395 2020] [wsgi:error] [pid 60345] 
[Sun Mar 29 13:27:38.906408 2020] [wsgi:error] [pid 60345] Traceback (most recent call last):
[Sun Mar 29 13:27:38.906475 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/maps/wsgi.py", line 26, in <module>
[Sun Mar 29 13:27:38.906488 2020] [wsgi:error] [pid 60345]     application = get_wsgi_application()
[Sun Mar 29 13:27:38.906500 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[Sun Mar 29 13:27:38.906511 2020] [wsgi:error] [pid 60345]     django.setup(set_prefix=False)
[Sun Mar 29 13:27:38.906523 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
[Sun Mar 29 13:27:38.906533 2020] [wsgi:error] [pid 60345]     apps.populate(settings.INSTALLED_APPS)
[Sun Mar 29 13:27:38.906545 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/apps/registry.py", line 112, in populate
[Sun Mar 29 13:27:38.906555 2020] [wsgi:error] [pid 60345]     app_config.import_models()
[Sun Mar 29 13:27:38.906567 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/apps/config.py", line 198, in import_models
[Sun Mar 29 13:27:38.906577 2020] [wsgi:error] [pid 60345]     self.models_module = import_module(models_module_name)
[Sun Mar 29 13:27:38.906615 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/importlib/__init__.py", line 127, in import_module
[Sun Mar 29 13:27:38.906638 2020] [wsgi:error] [pid 60345]     return _bootstrap._gcd_import(name[level:], package, level)
[Sun Mar 29 13:27:38.906651 2020] [wsgi:error] [pid 60345]   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
[Sun Mar 29 13:27:38.906675 2020] [wsgi:error] [pid 60345]   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
[Sun Mar 29 13:27:38.906688 2020] [wsgi:error] [pid 60345]   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
[Sun Mar 29 13:27:38.906715 2020] [wsgi:error] [pid 60345]   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
[Sun Mar 29 13:27:38.906728 2020] [wsgi:error] [pid 60345]   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
[Sun Mar 29 13:27:38.906740 2020] [wsgi:error] [pid 60345]   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
[Sun Mar 29 13:27:38.906753 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/contrib/auth/models.py", line 2, in <module>
[Sun Mar 29 13:27:38.906765 2020] [wsgi:error] [pid 60345]     from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
[Sun Mar 29 13:27:38.906789 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/contrib/auth/base_user.py", line 47, in <module>
[Sun Mar 29 13:27:38.906799 2020] [wsgi:error] [pid 60345]     class AbstractBaseUser(models.Model):
[Sun Mar 29 13:27:38.906811 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/models/base.py", line 114, in __new__
[Sun Mar 29 13:27:38.906822 2020] [wsgi:error] [pid 60345]     new_class.add_to_class('_meta', Options(meta, app_label))
[Sun Mar 29 13:27:38.906844 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/models/base.py", line 315, in add_to_class
[Sun Mar 29 13:27:38.906858 2020] [wsgi:error] [pid 60345]     value.contribute_to_class(cls, name)
[Sun Mar 29 13:27:38.906870 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/models/options.py", line 205, in contribute_to_class
[Sun Mar 29 13:27:38.906881 2020] [wsgi:error] [pid 60345]     self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
[Sun Mar 29 13:27:38.906895 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/__init__.py", line 33, in __getattr__
[Sun Mar 29 13:27:38.906906 2020] [wsgi:error] [pid 60345]     return getattr(connections[DEFAULT_DB_ALIAS], item)
[Sun Mar 29 13:27:38.906917 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/utils.py", line 202, in __getitem__
[Sun Mar 29 13:27:38.906927 2020] [wsgi:error] [pid 60345]     backend = load_backend(db['ENGINE'])
[Sun Mar 29 13:27:38.906939 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/utils.py", line 110, in load_backend
[Sun Mar 29 13:27:38.906949 2020] [wsgi:error] [pid 60345]     return import_module('%s.base' % backend_name)
[Sun Mar 29 13:27:38.906961 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/importlib/__init__.py", line 127, in import_module
[Sun Mar 29 13:27:38.906971 2020] [wsgi:error] [pid 60345]     return _bootstrap._gcd_import(name[level:], package, level)
[Sun Mar 29 13:27:38.906983 2020] [wsgi:error] [pid 60345]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 20, in <module>
[Sun Mar 29 13:27:38.906993 2020] [wsgi:error] [pid 60345]     ) from err
[Sun Mar 29 13:27:38.907012 2020] [wsgi:error] [pid 60345] django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
[Sun Mar 29 13:27:38.907023 2020] [wsgi:error] [pid 60345] Did you install mysqlclient?
[Sun Mar 29 13:27:41.477844 2020] [wsgi:error] [pid 60345] [remote 127.0.0.1:52742] mod_wsgi (pid=60345): Target WSGI script '/Library/WebServer/Documents/maps/maps/wsgi.py' does not contain WSGI application 'application'.
[Sun Mar 29 13:27:42.376820 2020] [wsgi:error] [pid 60365] Traceback (most recent call last):
[Sun Mar 29 13:27:42.377001 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 15, in <module>
[Sun Mar 29 13:27:42.377020 2020] [wsgi:error] [pid 60365]     import MySQLdb as Database
[Sun Mar 29 13:27:42.377034 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/MySQLdb/__init__.py", line 18, in <module>
[Sun Mar 29 13:27:42.377046 2020] [wsgi:error] [pid 60365]     from . import _mysql
[Sun Mar 29 13:27:42.377069 2020] [wsgi:error] [pid 60365] ImportError: dlopen(/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib
[Sun Mar 29 13:27:42.377085 2020] [wsgi:error] [pid 60365]   Referenced from: /Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so
[Sun Mar 29 13:27:42.377096 2020] [wsgi:error] [pid 60365]   Reason: unsafe use of relative rpath libmysqlclient.18.dylib in /Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/MySQLdb/_mysql.cpython-37m-darwin.so with restricted binary
[Sun Mar 29 13:27:42.377112 2020] [wsgi:error] [pid 60365] 
[Sun Mar 29 13:27:42.377123 2020] [wsgi:error] [pid 60365] The above exception was the direct cause of the following exception:
[Sun Mar 29 13:27:42.377132 2020] [wsgi:error] [pid 60365] 
[Sun Mar 29 13:27:42.377145 2020] [wsgi:error] [pid 60365] Traceback (most recent call last):
[Sun Mar 29 13:27:42.377208 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/maps/wsgi.py", line 26, in <module>
[Sun Mar 29 13:27:42.377220 2020] [wsgi:error] [pid 60365]     application = get_wsgi_application()
[Sun Mar 29 13:27:42.377232 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
[Sun Mar 29 13:27:42.377243 2020] [wsgi:error] [pid 60365]     django.setup(set_prefix=False)
[Sun Mar 29 13:27:42.377255 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
[Sun Mar 29 13:27:42.377265 2020] [wsgi:error] [pid 60365]     apps.populate(settings.INSTALLED_APPS)
[Sun Mar 29 13:27:42.377278 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/apps/registry.py", line 112, in populate
[Sun Mar 29 13:27:42.377288 2020] [wsgi:error] [pid 60365]     app_config.import_models()
[Sun Mar 29 13:27:42.377300 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/apps/config.py", line 198, in import_models
[Sun Mar 29 13:27:42.377310 2020] [wsgi:error] [pid 60365]     self.models_module = import_module(models_module_name)
[Sun Mar 29 13:27:42.377322 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/importlib/__init__.py", line 127, in import_module
[Sun Mar 29 13:27:42.377333 2020] [wsgi:error] [pid 60365]     return _bootstrap._gcd_import(name[level:], package, level)
[Sun Mar 29 13:27:42.377345 2020] [wsgi:error] [pid 60365]   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
[Sun Mar 29 13:27:42.377358 2020] [wsgi:error] [pid 60365]   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
[Sun Mar 29 13:27:42.377370 2020] [wsgi:error] [pid 60365]   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
[Sun Mar 29 13:27:42.377383 2020] [wsgi:error] [pid 60365]   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
[Sun Mar 29 13:27:42.377396 2020] [wsgi:error] [pid 60365]   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
[Sun Mar 29 13:27:42.377408 2020] [wsgi:error] [pid 60365]   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
[Sun Mar 29 13:27:42.377421 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/contrib/auth/models.py", line 2, in <module>
[Sun Mar 29 13:27:42.377431 2020] [wsgi:error] [pid 60365]     from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
[Sun Mar 29 13:27:42.377444 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/contrib/auth/base_user.py", line 47, in <module>
[Sun Mar 29 13:27:42.377454 2020] [wsgi:error] [pid 60365]     class AbstractBaseUser(models.Model):
[Sun Mar 29 13:27:42.377466 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/models/base.py", line 114, in __new__
[Sun Mar 29 13:27:42.377478 2020] [wsgi:error] [pid 60365]     new_class.add_to_class('_meta', Options(meta, app_label))
[Sun Mar 29 13:27:42.377490 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/models/base.py", line 315, in add_to_class
[Sun Mar 29 13:27:42.377501 2020] [wsgi:error] [pid 60365]     value.contribute_to_class(cls, name)
[Sun Mar 29 13:27:42.377513 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/models/options.py", line 205, in contribute_to_class
[Sun Mar 29 13:27:42.377523 2020] [wsgi:error] [pid 60365]     self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
[Sun Mar 29 13:27:42.377535 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/__init__.py", line 33, in __getattr__
[Sun Mar 29 13:27:42.377546 2020] [wsgi:error] [pid 60365]     return getattr(connections[DEFAULT_DB_ALIAS], item)
[Sun Mar 29 13:27:42.377558 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/utils.py", line 202, in __getitem__
[Sun Mar 29 13:27:42.377568 2020] [wsgi:error] [pid 60365]     backend = load_backend(db['ENGINE'])
[Sun Mar 29 13:27:42.377580 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/utils.py", line 110, in load_backend
[Sun Mar 29 13:27:42.377590 2020] [wsgi:error] [pid 60365]     return import_module('%s.base' % backend_name)
[Sun Mar 29 13:27:42.377603 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/importlib/__init__.py", line 127, in import_module
[Sun Mar 29 13:27:42.377613 2020] [wsgi:error] [pid 60365]     return _bootstrap._gcd_import(name[level:], package, level)
[Sun Mar 29 13:27:42.377625 2020] [wsgi:error] [pid 60365]   File "/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages/django/db/backends/mysql/base.py", line 20, in <module>
[Sun Mar 29 13:27:42.377635 2020] [wsgi:error] [pid 60365]     ) from err
[Sun Mar 29 13:27:42.377653 2020] [wsgi:error] [pid 60365] django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
[Sun Mar 29 13:27:42.377664 2020] [wsgi:error] [pid 60365] Did you install mysqlclient?
[Sun Mar 29 13:27:44.951148 2020] [wsgi:error] [pid 60365] [remote 127.0.0.1:52747] mod_wsgi (pid=60365): Target WSGI script '/Library/WebServer/Documents/maps/maps/wsgi.py' does not contain WSGI application 'application'.

Если я просто запускаю свой сервер не зависит от Apache, например

python manage.py runserver

Я могу нормально загрузить свое приложение (без ошибок MySql). Что еще мне нужно сделать, чтобы выяснить причину сбоя в Apache?

Для чего оно стоит, вот мой файл wsgi.py ...

"""
WSGI config for dental 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/2.1/howto/deployment/wsgi/
"""

import os
import time
import traceback
import signal
import sys
import pathlib

from django.core.wsgi import get_wsgi_application

sys.path.append('/Library/WebServer/Documents/maps')
# adjust the Python version in the line below as needed
sys.path.append("/Library/WebServer/Documents/maps/venv/lib/python3.7/site-packages")

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'maps.settings')

try:
    application = get_wsgi_application()
except Exception:
    # Error loading applications
    if 'mod_wsgi' in sys.modules:
        traceback.print_exc()
        os.kill(os.getpid(), signal.SIGINT)
...