Развертывание Django: настройка правильного python для использования apache / mod_wsgi

python django apache mod-wsgi django-wsgi

2234 просмотра

1 ответ

Я новичок в работе с приложениями на основе Django и в попытке развернуть проект django, используя следующие конфигурации, которые почти аналогичны настройкам по умолчанию, приведенным в django docs.

apache2.conf

# WSGI Configuration
WSGIDaemonProcess demo python-path=/home/inian/Documents/demo
WSGIProcessGroup demo

WSGIScriptAlias / /home/inian/Documents/demo/demo/wsgi.py process-group=demo

<Directory /home/inian/Documents/demo/demo>
<Files wsgi.py>
    Require all granted
</Files>
</Directory>

# Serving static files
Alias /static/ /home/inian/Documents/demo/static/

<Directory /home/inian/Documents/demo/static>
    Require all granted
</Directory>

Когда я запускаю сервер apache, он запускается нормально, но выдает ошибку времени загрузки моего проекта из-за несоответствия версий Python, указанного ниже.

/var/log/apache2/error.log

[Sun Apr 10 20:38:16.165536 2016] [wsgi:warn] [pid 22959] mod_wsgi: Compiled for Python/2.7.11.
[Sun Apr 10 20:38:16.165551 2016] [wsgi:warn] [pid 22959] mod_wsgi: Runtime using Python/2.7.10.
[Sun Apr 10 20:38:16.166787 2016] [mpm_prefork:notice] [pid 22959] AH00163: Apache/2.4.7 (Ubuntu) OpenSSL/1.0.1f mod_wsgi/4.5.1 Python/2.7.10 configured -- resuming normal operations

Я хочу, чтобы мое приложение использовало Python, установленный в местоположении, /usr/localкоторое является версией, 2.7.11и это тот, который я использовал для компиляции и установки mod_wsgi, однако, чтобы быть в безопасности, я также проверил, /usr/bin/python -Vкоторый дает вывод как Python 2.7.6. Это приносит пользу двум проблемам:

  1. Как я могу указать Apache использовать Python 2.7.11 из места установки /usr/local/bin/python(которое я использовал по умолчанию для всех вещей на сервере).

  2. Я не помню, чтобы когда-либо устанавливал или делал что-либо с 2.7.10, поэтому я не знаю, как и откуда он загружается и используется apache. Если кто-то может направить меня к этому, то это тоже будет здорово.

Автор: bawejakunal Источник Размещён: 29.10.2019 07:20

Ответы (1)


1 плюс

Это предупреждающее сообщение в случае, когда mod_wsgi был скомпилирован для конкретной установки Python, а затем была обновлена ​​установка Python. Из-за того, как работают разделяемые библиотеки, это обычно не должно иметь значения. Это задокументировано в:

В вашем случае, хотя проблема в том, что ваш mod_wsgi не скомпилирован против установки Python, он находит общую библиотеку Python для во время выполнения. Это может вызвать различные проблемы, одна из которых заключается в том, что две установки Python не были установлены с совместимыми наборами флагов компилятора, например, для ширины символов Юникода.

Таким образом, в основном проблема выглядит так, как будто вы скомпилировали mod_wsgi из исходного кода для установки Python в / usr / local, но поскольку его сборка была неправильной для этого сценария, во время выполнения он находит общую библиотеку Python для версия установлена ​​в / usr.

Чтобы обсудить, как правильно установить Python в системах Linux, прочитайте:

Затем, когда вы компилируете mod_wsgi из исходного кода, убедитесь, что вы задали LD_RUN_PATHпеременную среды, включающую каталог библиотеки, в котором установлена ​​общая библиотека Python для вашей альтернативной установки Python. Эта переменная среды позволит mod_wsgi находить правильную библиотеку во время выполнения и не использовать версию в / usr / lib.

Вы можете проверить, что он находит неправильный / правильный, следуя инструкциям в документации по адресу:

Наконец, после того как вы установили mod_wsgi и нашли правильную разделяемую библиотеку, вам также может понадобиться установить WSGIPythonHomeдирективу в конфигурации Apache, чтобы он нашел правильную установку Python для файлов времени выполнения. Это описано в документации по адресу:

Автор: Graham Dumpleton Размещён: 11.04.2016 04:13
Вопросы из категории :
32x32