O importante é reconstruir o Python com --enable-shared. Os comentários do link simbólico não são relevantes se você não tiver feito isso e não deve aplicar-se com versões recentes do Python / mod_WSGI.
Quando eu faço "make" na pasta mod_wsgi eu recebo este erro
Eu configurei usando o seguinte
./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/opt/python27/bin/python
/usr/bin/ld: /opt/python27/lib/libpython2.7.a(node.o): relocation R_X86_64_32 against 'a local symbol' can not be used when making a shared object; recompile with -fPIC /opt/python27/lib/libpython2.7.a: could not read symbols: Bad value collect2: ld returned 1 exit status apxs:Error: Command failed with rc=65536
Este link tem a solução, mas não consegui entendê-lo totalmente
1)How can i found that i have compiled x32bit or x64 bit version of python
2)I didn't understand about what symbolic link he was talking about
A recompilação de Python com --enable-shared
sozinho não é suficiente, porque você receberá um erro ao carregar bibliotecas compartilhadas .
Supondo que você irá instalar o Python 2.7.x em /usr/local/bin
, você deve configurá-lo com a opção LDFLAGS
:
cd Python-2.7.x
make distclean # For re-compiling only
./configure --enable-shared --prefix=/usr/local LDFLAGS="-Wl,--rpath=/usr/local/lib"
make
sudo make altinstall
(Use altinstall
em vez de install
para evitar a mudança de links simbólicos do sistema Python e man pages. Em suma, install
= altinstall
+ bininstall
+ maninstall
)
mod_wsgi
Suponha que (uma versão compilada do) Apache esteja instalada em /usr/local/apache
, compile mod_wsgi
contra o Python 2.7 assim:
cd mod_wsgi-x.x.x
./configure LDFLAGS="-Wl,--rpath -Wl,/usr/local/lib" --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/bin/python2.7
make
sudo make install
Se você compilar mod_wsgi
sem LDFLAGS
, o Apache irá reclamar:
Cannot load /usr/local/apache/modules/mod_wsgi.so into server: libpython2.7.so.1.0: cannot open shared object file: No such file or directory