Я пытаюсь установить Mod-wsgi 3.3 на настольную версию ubuntu 11.10 с apache 2.2 и python 3.2
Я скачал архив с исходным кодом и распаковал его. Я настроил его с помощью --with-python=/usr/bin/python3
возможность configure
. Это единственная установленная мной копия python3.
Затем я отдал команды make
и sudo make install
.
Я попытался перезапустить apache, используя sudo /etc/init.d/apache2 restart
и получите следующее сообщение об ошибке:
apache2: Syntax error on line 203 of /etc/apache2/apache2.conf: Syntax error on line 1
of /etc/apache2/mods-enabled/wsgi.load: Cannot load /usr/lib/apache2/modules
/mod_wsgi.so into server: /usr/lib/apache2/modules/mod_wsgi.so: undefined symbol:
PyCObject_FromVoidPtr
Action 'configtest' failed.
The Apache error log may have more information.
...fail!
Журналы ошибок только информируют нас о том, что это segfault: `
Я проверил, связан ли он с правильной библиотекой Python с помощью ldd mod_wsgi.so
и получил результат
linux-gate.so.1 => (0x00d66000)
libpython3.2mu.so.1.0 => /usr/lib/libpython3.2mu.so.1.0 (0x0065b000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x00a20000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000)
libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0x0028c000)
libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0x0044c000)
libffi.so.6 => /usr/lib/i386-linux-gnu/libffi.so.6 (0x002d9000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0x00eb3000)
libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0x00abe000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x002e0000)
libutil.so.1 => /lib/i386-linux-gnu/libutil.so.1 (0x00c47000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00e24000)
/lib/ld-linux.so.2 (0x0042c000)
Кажется, это связано с библиотекой python3, поэтому я не уверен, в чем проблема. Я читал по другому вопросу, что mod-python может вызывать проблемы, но он так и не был установлен.
Я видел, что директива WSGIPythonHome
может использоваться для указания правильной версии Python и создания каталога /usr/bin/apache2-python/
со ссылкой под названием python
и python3
(имя, которое я передал скрипту настройки) на /usr/bin/python3
Это приводит к той же ошибке. Так что я почти уверен, что он использует правильную версию python.
Я сейчас в растерянности.
Заранее благодарю за любую помощь.
Используя версию из репозитория, я получаю следующий журнал, когда пытаюсь запросить страницу:
[Wed Mar 21 13:21:11 2012] [notice] child pid 5567 exit signal Aborted (6)
Fatal Python error: Py_Initialize: Unable to get the locale encoding
LookupError: no codec search functions registered: can't find encoding
[Wed Mar 21 13:21:13 2012] [notice] child pid 5568 exit signal Aborted (6)
Fatal Python error: Py_Initialize: Unable to get the locale encoding
LookupError: no codec search functions registered: can't find encoding
[Wed Mar 21 13:21:14 2012] [notice] caught SIGTERM, shutting down
Если я закомментирую инструкцию по загрузке mod-wsgi, страница будет работать нормально.
Для Python 3.2 используйте исходный код из репозитория mod_wsgi.