мод 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