Instalar mod_pagespeed en Debian Etch & Otras desde el código fuente

Me propuse hoy instalar definitivamente mod_pagespeed, a pesar de que a priori la instalación de este módulo puede ser sencilla, la cosa se complica si tienes una distribución algo antigua y oficialmente no soportada, no obstante, una vez logrado el objetivo de instalar el módulo, mod_pagespeed funciona igual de bien que en las demás distribuciones soportadas, simplemente que los que no podemos actualizar a una versión más actual (Debian Lenny), tenemos que hacer “algo más” para hacerlo funcionar en nuestra distribución, este preceso, es válido para otras distribuciones que tampoco están oficialmente soportadas.

¿Que és mod_pagespeed?, creo que con el video nos va a quedar claro cual es la intención de este módulo

Para realizar este tutorial, tuvimos que abir un ticket a los desarolladores de google, para que nos intentasen solucionar errores que no salían durante la compilación, dónde alfinal todo fué más que correcto por parte de ellos :)

Como requisitos mínimos se exige tener instalado GCC 4.2, si embargo Debian Etch trae de serie GCC 4.1, pero esto no ha añadido ningún problema, ya que finalmente también permite la compilación del módulo con la versión 4.1, de hecho, primero se intentó compilarlo con 4.2, pero aún así daba exactamente los mismos errores de compilación.

Aquí teneís la guia oficial de compilación, para las distribuciones soportadas mediante los fuentes de mod_pagespeed, en la nuestra simplemente se añaden problemas/soluciones para la instalación en distribuciones no soportadas.

Vamos a compilar mod_pagespeed:

# cd /usr/local/src

# svn co http://src.chromium.org/svn/trunk/tools/depot_tools

bash: svn: command not found

# aptitude install subversion

# svn co http://src.chromium.org/svn/trunk/tools/depot_tools

# export PATH=$PATH:/usr/local/src/depot_tools

# mkdir mod_pagespeed

# cd mod_pagespeed

# gclient config http://modpagespeed.googlecode.com/svn/tags/0.9.1.1/src

# gclient sync --force

# cd src

# make BUILDTYPE=Release

make: flock: Command not found
make: *** [out/Release/obj.target/net/instaweb/libmod_pagespeed.so] Error 127

# cd /usr/local/src

# wget http://www.kernel.org/pub/linux/utils/util-linux-ng/v2.18/util-linux-ng-2.18.tar.gz

# tar xvfz util-linux-ng-2.18.tar.gz

# cd util-linux-ng-2.18
# mkdir -p /opt
# ./configure --prefix=/opt/util-linux-ng-2.18
# make
# make install

# export PATH=$PATH:/opt/util-linux-ng-2.18/bin

# cd /usr/local/src/mod_pagespeed/src/

# make BUILDTYPE=Release

CC(target) out/Release/obj.target/apr/third_party/apache/apr/src/locks/unix/proc_mutex.o
third_party/apache/apr/src/locks/unix/proc_mutex.c: In function ‘proc_mutex_proc_pthread_create’:
third_party/apache/apr/src/locks/unix/proc_mutex.c:385: error: ‘PTHREAD_MUTEX_ROBUST_NP’ undeclared (first use in this function)
third_party/apache/apr/src/locks/unix/proc_mutex.c:385: error: (Each undeclared identifier is reported only once
third_party/apache/apr/src/locks/unix/proc_mutex.c:385: error: for each function it appears in.)
third_party/apache/apr/src/locks/unix/proc_mutex.c:393: error: ‘PTHREAD_PRIO_INHERIT’ undeclared (first use in this function)
make: *** [out/Release/obj.target/apr/third_party/apache/apr/src/locks/unix/proc_mutex.o] Error 1

# GYP_DEFINES="use_system_apache_dev=1" gclient runhooks

# make BUILDTYPE=Release

CXX(target) out/Release/obj.target/html_rewriter/net/instaweb/apache/apache_message_handler.o
net/instaweb/apache/apache_message_handler.cc:21:19: error: httpd.h: No such file or directory
net/instaweb/apache/apache_message_handler.cc:25:22: error: http_log.h: No such file or directory
…..
net/instaweb/apache/apache_message_handler.cc:61: error: ‘ap_log_error’ was not declared in this scope
make: *** [out/Release/obj.target/html_rewriter/net/instaweb/apache/apache_message_handler.o] Error 1

# aptitude install apache2-threaded-dev libapr1-dev libaprutil1-dev

# make BUILDTYPE=Release

!POR FIN COMPILA!

# cd installl
# make APACHE_ROOT=/etc/apache2 APACHE_MODULES=/usr/lib/apache2/modules APACHE_USER=www-data staging
# make APACHE_ROOT=/etc/apache2 APACHE_MODULES=/usr/lib/apache2/modules APACHE_USER=www-data install

Cosas a verificar:

Verificar los permisos, y que el módulo se esté cargando mediante el fichero pagespeed.conf

LoadModule pagespeed_module modules/mod_pagespeed.so
LoadModule deflate_module modules/mod_deflate.so

Permisos de escritura www-data en /var/mod_pagespeed
Include conf/pagespeed.conf en el fichero de Apache (apache2.conf o httpd.conf)

Ver las diferencias entre tener activado o no mod_pagesped:

http://www.webpagetest.org

Deja un comentario

Tu dirección de correo electrónico no será publicada.