мод wsgi для правильной версии python3

я настраиваю сервер Django на Ubuntu 12.04 LTS, и у меня возникли проблемы с установкой mod-wsgi с правильной версией python. Я построил свой сайт локально с python 3.3, а Ubuntu 12.04 поставляется в комплекте с python 3.2. Я полагаю, что мог бы, но предпочел бы не просто использовать 3.2 вместо 3.3, поэтому я установил python 3.3 рядом с 3.2. У меня все установлено для python 3.3, кроме mod-wsgi.

на моей локальной машине, на которой работает python3.3 Установка пакета libapache2-мод WSGI-py3 С sudo apt-get install libapache2-mod-wsgi-py3 устанавливает его для python3.3. Однако на сервере Ubuntu запуск того же кода устанавливает его для python3.2 такой, что веб-сервер работает 3.2 и не может найти django.

есть ли способ отключить python3.2, или указать скрипт для его установки на python 3.3?

EDIT: после изучения этого больше, python3.2 не был в комплекте с ubuntu, вместо этого он был установлен с libapache2-mod-wsgi-py3

2 ответов


я узнал, как построить mod_wsgi, который будет использоваться с Python 3.3.5, на Ubuntu 12.04 LTS.

фокус в том, чтобы иметь возможность установить python3.3-dev пакет, который не поддерживается на Ubuntu 12.04 LTS ("точный"). Существует сторонний репозиторий, поддерживаемый Felix Krull, который делает старые и новые сборки Python доступными (Слава Феликсу!):

https://launchpad.net / ~fkrull / + архив / deadsnakes

установить Феликса репозиторий:

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update

перед началом сборки mod_wsgi нам нужен пакет apache2-dev ...

sudo apt-get install apache2-dev

... и получить python3.3-dev пакет (это фактически устанавливает python3.3 также!)

sudo apt-get установить python3.3-dev

загрузите код mod_wsgi и создайте его, предоставив путь к недавно установленным библиотекам и заголовкам Python (/usr/bin/python3.3). Снижение антенны ссылка на последний релиз mod_wsgi находится по адресу:

https://github.com/GrahamDumpleton/mod_wsgi/releases

cd /usr/local/src
sudo wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/modwsgi/mod_wsgi-3.4.tar.gz
sudo tar -zxvf mod_wsgi-3.4.tar.gz 
cd mod_wsgi-3.4/
sudo ./configure --with-python=/usr/bin/python3.3
sudo make
sudo make install

mod_wsgi.так помещается в/usr/lib/apache2/modules/

необязательный шаг: Поскольку они отсутствовали, я вручную (повторно)создал wsgi.conf и wsgi.загрузка файлов в /etc/apache2 / mods-доступна (хотя мне не нужно было устанавливать какие-либо конкретные опцион.)

тут WSGI.conf:

<IfModule mod_wsgi.c>

    # See http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives

    #WSGISocketPrefix: Configure directory to use for daemon sockets.

    #WSGISocketPrefix /var/run/apache2/wsgi

    #WSGIPythonOptimize: Enables basic Python optimisation features.

    #WSGIPythonOptimize 0

    #WSGIPythonPath: Additional directories to search for Python modules,
    #                overriding the PYTHONPATH environment variable.

    #WSGIPythonPath directory|directory-1:directory-2:...


    #WSGIPythonEggs: Directory to use for Python eggs cache.

    #WSGIPythonEggs directory

    #WSGIRestrictEmbedded: Enable restrictions on use of embedded mode. 

    #WSGIRestrictEmbedded On|Off

    #WSGIRestrictStdin: Enable restrictions on use of STDIN.
    #WSGIRestrictStdout: Enable restrictions on use of STDOUT.
    #WSGIRestrictSignal: Enable restrictions on use of signal().

    #WSGIRestrictStdin On
    #WSGIRestrictStdout On
    #WSGIRestrictSignal On

    #WSGIAcceptMutex: Specify type of accept mutex used by daemon processes.

    #WSGIAcceptMutex default

    #WSGIImportScript: Specify a script file to be loaded on process start. 

    #WSGIImportScript process-group=name application-group=name

    #WSGILazyInitialization: Enable/disable lazy initialisation of Python. 

    #WSGILazyInitialization On|Off

</IfModule>

тут WSGI.нагрузка:

LoadModule wsgi_module / usr/lib/apache2/modules / mod_wsgi.так что

наконец, mod_wsgi можно включить, создав символические ссылки, такие как:

cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/wsgi.conf wsgi.conf
sudo ln -s ../mods-available/wsgi.load wsgi.load

Дайте мне знать, если это сработало для вас!


Я сделал это в CentOS 6.7, просто создайте файл wsgi.conf in: / etc/httpd / conf.d указать путь к файлу mod_wsgi.так: LoadModule wsgi_module / etc/httpd/modules / mod_wsgi.так что После загрузки и распаковки файла mod_wsgi_x.X. tar, вам нужно сделать что-то дополнительное после указания версии python:

./configure  --with-python=/usr/local/bin/python3.4
LD_RUN_PATH=/usr/local/lib make
make install

это встроит нестандартное расположение каталога в mod_wsgi.Итак, как объяснялось Грэм Dumpleton в следующей ссылке : ответы GoogleGroups