Clicky

Actualizar APC cache a la última versión

Categoría: Internet (Tutoriales y trucos)
Visitas: 4830

APC cache

Resolviendo algunos errores que se pueden presentar en el proceso (ver actualización al final)

APC cache es un poderoso sistema de caché que sirve para almacenar código PHP compilado (por mod_php) y datos del navegador del usuario por lo que permite al servidor web (Apache HTTPD), procesar un mayor número de peticiones por segundo. Está soportado por los principales Gestores de contenido (CMS) como Joomla o Wordpress.

Para detectar si tenemos instalada la última versión de APC cache debemos revisarlo en el monitor de APC en línea para nuestro sitio web. No entro en este artículo como instalar APC pues hay multitud de guías en internet, me centraré en la actualización. Para montar un monitor en línea, si no lo tenéis todavía, abrir una consola y teclear las siguientes instrucciones (para Centos 6):

# cp /usr/share/php-pecl-apc/apc.php /home/tu-sitio/public_html

Con esto tendremos el monitor de APC en la raíz de nuestro servidor web (se puede colocar en un directorio creado sólo para este fin) y si lo abrimos en un navegador web (http://misitio.com/apc.php) tendrá este aspecto:

monitor on line de APC cache

Al pulsar el botón Versión Check el sistema nos dirá si hay una versión más nueva (en este caso ya la tengo actualizada):

APC cache versión

Si al chequear la versión nos aparece que debemos actualizarla seguiremos los siguientes pasos:

Actualizamos canales:

# pear update-chanels

Se pueden ver también los paquetes pendientes y a qué versiones corresponden:

# pear list-upgrades

Después, en lugar de usar el comando pear upgrade APC, usaremos:

# pecl upgrade APC

Aceptaremos las configuraciones por defecto y reiniciamos Apache:

# service httpd graceful

NOTA: La actualización necesita que el directorio /tmp sea ejecutable sino dará este error: shtool at '/tmp/APC/build/shtool' does not exist or is not executable

Para permitir momentáneamente ejecutables en /tmp  escribiremos:

# mount -o remount,exec /tmp

y volveremos a ejecutar la actualización de APC y reiniciar el Apache:

# pecl upgrade APC
# service httpd graceful

Luego dejaremos el directorio /tmp como estaba:

# mount -o remount,noexec /tmp

A mí me ha pasado que se cayó el servidor web Apache al no encontrar el socket:

# Starting httpd: (98)Address already in use: make_sock: could not bind to address [::]:80
# (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down

En este caso mataremos todos los procesos de Apache e iniciaremos el servidor web:

# killall -9 httpd
# /etc/init.d/httpd start

Al comprobar de nuevo la versión en el monitor ya os debe aparecer actualizada como en la imagen de más arriba.

Actualización:

Después de realizar todos los pasos señalados más arriba se me presentaron errores en alguna web con Joomla 3.0 y no cargaba el administrador de MySQL phpMyAdmin. Pensando un poco llegue a la conclusión de que debería haber alguna antigua versión de APC Cache instalada en Centos con el comando yum. Efectivamente ejecutando:

# yum remove php-pecl-apc

Existía una versión instalada de APC Cache. Así que lanzamos la instrucción de más arriba para desinstalarla.

Luego realizaremos los pasos siguientes pasos (algo direferentes a los de arriba):

# pecl uninstall apc
# mount -o remount,exec /tmp
# pecl install apc

Con estas opciones:

Enable internal debugging in APC [no] :
Enable per request file info about files used from the APC cache [no] :
Enable spin locks (EXPERIMENTAL) [no] :
Enable memory protection (EXPERIMENTAL) [no] :
Enable pthread mutexes (default) [yes] :
Enable pthread read/write locks (EXPERIMENTAL) [no] :

# echo "extension=apc.so" > /etc/php.d/apc.ini
# mount -o remount,noexec /tmp
# service httpd restart (o /etc/init.d/httpd restart)

Para verificar si está corriendo APC Cache, se pueder crear en la raíz de tu sitio web un archivo llamado por ejemplo phpinfo.php con estas líneas:

<?php
// Show all information, defaults to INFO_ALL
phpinfo();
?>

Lo subimos mediante FTP y lo visualizamos en el navegador: http://misitio.com/phpinfo.php

información de PHP en el navegador