Как запустить приложение Django с Apache2, mod_wsgi и Anaconda? - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь запустить приложение django с Apache2, wsgi_mod, средой Anaconda с Python3 .8 в Ubuntu.

Когда я запускаю 'sudo service apache2 start', страница продолжает и то же сообщение об ошибке стекаются в /var/log/apache2/error.log'.

Current thread 0x00007ff7b9507bc0 (most recent call first):
[Thu Apr 02 20:02:27.236780 2020] [core:notice] [pid 24024:tid 140701942709184] AH00051: child pid 29871 exit signal Aborted (6), possible coredump in /etc/apache2
[Thu Apr 02 20:02:27.237711 2020] [core:notice] [pid 24024:tid 140701942709184] AH00051: child pid 29872 exit signal Aborted (6), possible coredump in /etc/apache2
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Это sys.prefix и sys.path

(my_env) manager@ubserv01:/etc/apache2/sites-available$ python -c "import sys; print(sys.prefix)"
/var/anaconda3/envs/my_env
(my_env) manager@ubserv01:/etc/apache2/sites-available$ python -c "import sys; print(sys.path)"
['', '/var/anaconda3/envs/my_env/lib/python38.zip', '/var/anaconda3/envs/my_env/lib/python3.8', '/var/anaconda3/envs/my_env/lib/python3.8/lib-dynload', '/var/anaconda3/envs/my_env/lib/python3.8/site-packages']

Это вывод mod_wsgi- express module-config:

(my_env) manager@ubserv01:/etc/apache2/sites-available$ mod_wsgi-express module-config
LoadModule wsgi_module "/var/anaconda3/envs/my_env/lib/python3.8/site-packages/mod_wsgi/server/mod_wsgi-py38.cpython-38-x86_64-linux-gnu.so"
WSGIPythonHome "/var/anaconda3/envs/my_env"

Вот мой /etc/apache2/sites-available/djangoProject.conf:

LoadModule wsgi_module /var/anaconda3/envs/my_env/lib/python3.8/site-packages/mod_wsgi/server/mod_wsgi-py38.cpython-38-x86_64-linux-gnu.so

WSGIPythonHome /var/anaconda3/envs/my_env

<VirtualHost *:80>
    ServerName opes.com
    ServerAdmin admin
    LogLevel warn
    DocumentRoot /var/www/opes/djangoProject

      <Directory /var/www/opes/djangoProject/djangoProject>
         <Files wsgi.py>
             Require all granted
         </Files>
    </Directory>

    WSGIPassAuthorization On
    WSGIDaemonProcess djangoProject python-path=/var/www/opes/djangoProject python-home=/var/anaconda3/envs/my_env
    WSGIProcessGroup djangoProject
    WSGIScriptAlias / /var/www/opes/djangoProject/djangoProject/wsgi.py

    ErrorLog "/var/log/apache2/djangoProject"
    CustomLog "/var/log/apache2/djangoProject" common
</VirtualHost>

/ var / www/opes/djangoProject - это каталог, где находится manage.py. Я включаю этот файл с помощью: sudo a2ensite

И wsgi.py:

import os, sys

from django.core.wsgi import get_wsgi_application

sys.path.append("/var/www/opes/djangoProject")
sys.path.append("/var/www/opes/djangoProject/djangoProject")

os.environ.setdefault("LANG", "en_US.UTF-8")
os.environ.setdefault("LC_ALL", "en_US.UTF-8")

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

application = get_wsgi_application()

Я установил mod_wsgi с помощью: sudo apt-get install libapache2-mod-wsgi-py3 и включаю его whit: sudo a2enmod wsgi.

Я не знаю, как это на самом деле работает, похоже, это проблема с виртуальной средой, но я в замешательстве. Спасибо!

1 Ответ

0 голосов
/ 03 апреля 2020

Это не решение, но я действительно рекомендую Nginx + Gunicorn с Anaconda в качестве среды

Проверьте это.

My git -> Nginx + Gunicorn

...