Развертывание приложения Django - тайм-аут 504 - нет модуля с именем 'encodings' (Ubuntu 18.04, Django 2.2.1, Python 3.7, Apache 2.4.29, mod-WSGI 4.6.7) - PullRequest
1 голос
/ 23 сентября 2019

Проблема: следовал стандартной настройке для веб-приложения Django.Я использую Ubuntu 18.04, Django 2.2.1, Python 3.7, Apache 2.4.29, mod-WSGI 4.6.7 и virtualenv для создания virtualenv.Когда я пытаюсь получить доступ к своему сайту (либо по IP, либо по полному доменному имени), я получаю сообщение об ошибке 504 Gateway Timeout Error

Я проверяю журналы Apache2 и получаю следующую ошибку с интервалом в 1 секунду:

Currentнить 0x00007f52f8874bc0 (сначала последний вызов): [Пн 23 сентября 02: 49: 26.540404 2019] [основной: уведомление] [pid 9896: tid 139994333662144] AH00051: сигнал выхода дочернего pid 10305 прерван (6), возможна передача данных в / etc /apache2 Неустранимая ошибка Python: Py_Initialize: невозможно получить кодировку локали ModuleNotFoundError: Нет модуля с именем 'encodings'

python manage.py runserver работает нормально, и я могу получить доступ через IP или FQDN через браузер с других устройств.Нет проблем с базой данных или другие проблемы (хотя при использовании FQDN вместо IP # я получаю ошибку 404 на CSS / JS, хотя остальные загружаются - но это потенциально отдельная проблема)

Я пытался: * Сброс virtualenv * Сброс Apache2 * Различные механизмы apache .conf * Я смотрел отличное видео @Graham Dumpleton из PyCon Au 2010 "Начало работы с Apache / mod_wsgi".и попытался реализовать некоторые из его идей

Apache2 Conf

WSGIRestrictEmbedded On
<VirtualHost *:80>
...
...
...
    Alias /static /project/static
    <Directory /project/static>
        Require all granted
    </Directory>

    Alias /media /project/media
        <Directory /project/media>
                Require all granted
        </Directory>

    <Directory /project/main>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
    WSGIDaemonProcess django_app python-path=/project python-home=/project/venv
    WSGIScriptAlias / /project/main/wsgi.py process-group=django_app
    WSGIProcessGroup django_app
    WSGIApplicationGroup %{GLOBAL}
</VirtualHost>

Apache2 Error File

Current thread 0x00007f52f8874bc0 (most recent call first):
[Mon Sep 23 02:49:26.540404 2019] [core:notice] [pid 9896:tid 139994333662144] AH00051: child pid 10305 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'

UFW Status

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
22/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)  

1 Ответ

0 голосов
/ 25 сентября 2019

ОБНОВЛЕНИЕ: Благодаря ссылке Грэма, приведенной ниже, я смог заставить ее работать.Я полагаю, что в системе была установлена ​​libapache2-mod-wsgi-py3 через apt-get.Я также пытался установить mod-wsgi через pip, когда виртуальная среда Python была активной, но ни одна из них не работала.Я проверил mod-wsgi.so и mod-wsgi.so-python3.6 (или файл с аналогичным именем, указывающий Python 3.6), и похоже, что mod-wsgi.so был связан с файлом python 3.6 .so.

РЕШЕНИЕ: Я удалил libapache2-mod-wsgi-py3 из системы и следовал руководству по установке на https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html согласно совету Грэма.Я убедился, что использовал ./configure --with-python = / path / to / virtualenv / python, чтобы убедиться, что для установки mod-wsgi используется правильный Python.

Это решило проблему.Спасибо, Грэхем Дамплтон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...