compilando o python 2.7
./configure \
--prefix=/usr/local \
--enable-unicode=ucs4 \
--enable-shared \
LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
não se esqueça de --enable-shared
ou poderá ter problemas mais tarde.
compilando o mod_wsgi para o python 2.7
desde que você fez o make altinstall
para instalar o python2.7
, você não terá um pacote python-devel
para instalar; então você precisaria do mod_wsgi
para se referir ao python adequado.
./configure --with-python=/usr/local/bin/python2.7
# then edit Makefile if you want to change DESTDIR
make && make install
... tenta iniciar o httpd ...
Starting httpd: httpd: Syntax error on line 221 of /etc/httpd/conf/httpd.conf: Syntax error on line 2 of /etc/httpd/conf.d/wsgi.conf: Cannot load /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so into server: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
Como não estamos usando o mesmo python e não vinculamos o módulo a nenhuma opção em particular para fazê-lo parecer no lugar correto, ele não pode encontrar libpython2.7.so.1.0
, podemos mudar isso fazendo libtool
verifique o local correto .
# use LDFLAGS to tell libtool resulting lib needs to
# look for shared libs in /usr/local/lib too.
./configure \
--with-python=/usr/local/bin/python2.7 \
LDFLAGS="-R/usr/local/lib"
# then edit Makefile if you want to change DESTDIR
# e.g. DESTDIR = /opt/mod_wsgi2.7
make && make install
... tente iniciar o http novamente ...
Starting httpd: httpd: Syntax error on line 221 of /etc/httpd/conf/httpd.conf: Syntax error on line 2 of /etc/httpd/conf.d/wsgi.conf: Cannot load /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so into server: /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so: cannot open shared object file: Permission denied
Esse último erro é porque o meu sistema está executando o selinux e o arquivo tem o contexto padrão. Uma rápida olhada no stackoverflow me diz que é um problema de selinux.
corrigindo o contexto do selinux
# ls -Z /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so
-rwxr-xr-x. root root unconfined_u:object_r:user_tmp_t:s0 /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so
A correção é usar o contexto correto, que pode ser encontrado no módulo mod_wsgi original.
chcon --reference /etc/httpd/modules/mod_wsgi.so /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so