Como instalar memcached. Guía de instalación y uso de memcached

Como instalar memcached. Guía de instalación y uso de memcached

Memcached es un sistema de cache que almacena datos, arrays u objetos memoria RAM, reduciendo por ejemplo peticiones a bases de datos. Al cachear un site conseguimos que se cargue mucho más rápido, mejorando la experiencia del usuario, haciendo nuestro sitio más rápido, y que sea mejor valorado por Google, en consecuencia mejoramos nuestro posicionamiento en Google.

Sites tan conocimos como YouTube, Facebook o Twitter usan memcache.

Ya he instalado 3 veces memcache y siempre encuentro los mismos artículos, copiados unos de otros, algunos copian sin tener ni idea lo que están copiando (simplemente spammers), otros copian comandos o ejecuciones que no son necesarios pero como los han visto pues los copian también, pero lo mejor de todo es que siempre explican la misma versión, nadie se ha puesto a compilar e instalar la ultima versión estable de memcache, porque claro todo es una copia de algún artículo que lo contaba cuando fue la última versión estable.

Yo lo voy a hacer desde 0, compilando e instalando la última versión de memcache y sus dependencias.
En próximos artículos explicaré como crear un paquete .rpm a partir de todo lo que se vaya a compilar e instalar de memcache, así la próxima vez tan solo tendremos que instalar el .rpm y listo.

De momento esta es una guía para la instalación de la última versión estable de memcache hasta la fecha.

Antes de comenzar, a la hora de compilar e instalar el software uno de los directorios por defecto y el más común es /usr/local/src. Pero como siempre todos los artículos o foros que he leído instalan todo en este directorio sin orden alguno, ya sea por desconocimiento (copiar lo que han leído en otro sitio) o por otra razón que no consigo entender, pero así queda muy “sucio” y no hay control de que archivos se han instalado en cada compilación. Yo voy a realizar toda la instalación en la carpeta /opt, especificando subdirectorios para cada compilación. /opt es un directorio reservado para librerías estáticas y la instalación de software y aplicaciones que no pertenecen directamente a la versión del sistema que tenemos instalado o a la instalación de software de terceros (third party applications), lo ideal para instalar memcache y sus dependencias.

Lo primero instalaremos una dependencia de memcache, se trata de la librería libevent.
Libevent proporciona un mecanismo basado en una API para ejecutar una función de callback cuando ocurre un evento específico en un descriptor de archivo o después de haber alcanzado un tiempo de espera. En definitiva que manipula bucles de eventos en servidores o la maquina que se instale. Memcache necesitará de esta librería para su gestión.

El site oficial es el siguiente: http://monkey.org/~provos/libevent/

Todo lo podemos descargar dentro de nuestra carpeta home, por ejemplo yo descargaré y descomprimiré todo dentro de /home/pedro, pero la instalación se hará en /opt

creo la carpeta en /opt para libevent donde se instalará

# mkdir /opt/libevent

Situado en /home/pedro (cada uno en su carpeta de usuario o donde quiera)
Nos descargamos la última versión estable de libevent

 
# wget http://monkey.org/~provos/libevent-2.0.10-stable.tar.gz
--2011-03-15 10:43:31--  http://monkey.org/~provos/libevent-2.0.10-stable.tar.gz
Resolviendo monkey.org... 75.102.5.19
Connecting to monkey.org|75.102.5.19|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 793010 (774K) [application/x-gzip]
Saving to: `libevent-2.0.10-stable.tar.gz'

100%[==============================>] 793.010      406K/s   in 1,9s

2011-03-15 10:43:34 (406 KB/s) - `libevent-2.0.10-stable.tar.gz' saved [793010/793010]

Compilamos y especificamos que la instalación se haga en /opt/libevent

# ./configure -prefix /opt/libevent/

Me ha dado error el parámetro -prefix, en la documentación viene como –prefix o –prefix=/DIRECTORIO, pero estaba dando error. La opcion correcta es -prefix /DIRECTORIO

Si todo ha ido ok, ejecutamos el make para generar los archivos de instalación:

# make

Si todo va ok, instalamos.

# make install

Si por cualquier caso, quisierais cambiar el path de instalación después de hacer el make, habría que ejecutar make clean para borrar los archivos de compilación generados.

Ahora tenemos que usar el comando ldconfig para bindear la ruta de la librería que se acaba de instalar.

# cd /etc/ld.so.conf.d/

Tendrá que existir un archivo llamado libevent.conf o similar. Sino existe lo creamos.
Lo abrimos con un editor.

# vi libevent.conf 

y añadimos la ruta de la carpeta de librerias de libevent que acabmos de instalar

/opt/libevent/lib/

Después lanzamos el comando ldconfig para que finalmente realice el bindeo.

# /sbin/ldconfig

Bien, pues hasta aquí ya tenemos la dependencia de memcache.
Ahora pasamos a instalar memcache.

Descargamos la última versión de memcache y la descomprimimos

# wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
# tar xvzf memcached-1.4.5.tar.gz
# cd memcached-1.4.5

Creamos la carpeta donde vamos a instalar memcache:

# mkdir /opt/memcached

Realizamos la compilación de memcache especificando la ruta de instalación y la ruta donde se encuentra instalado la dependencia de libevent

# ./configure --with-libevent=/opt/libevent/ --prefix=/opt/memcached

Si todo ha ido ok, realizamos el make y el make install

# make
# make install

Tendremos que crear un usuario que será el que correrá el demonio de memcached.
Podemos crear el usuario memcache. Primero comprobamos que no lo tengamos creado. Este paso se puede saltar si es la primera vez que se instala porque es una simple comprobación.

# cat /etc/passwd | grep memcache

Creamos el usuario

# /usr/sbin/useradd memcached

Ahora al hacer la comprobación vemos que ya existe

# cat /etc/passwd | grep memcached
memcached:x:505:505::/home/memcached:/bin/bash

Lanzamos el demonio de memcached

# /opt/memcached/bin/memcached -d -m 512 -u memcached -p 11211 -l localhost
  • -m 512. Indica la memoria en MBytes que vamos a usar de la memoria RAM
  • -u memcached: el usuario con el que lanzamos el demonio
  • -p 11211. Es el puerto de escucha, donde a través de la API en php, y demás lenguajes realizaremos la gestión de elementos cacheados
  • -l localhost: la IP en que se escuchará el servicio

Comprobamos que esta ejecutado el servicio

# ps -ef | grep memcached
505      25097     1  0 11:18 ?        00:00:00 /opt/memcached/bin/memcached -d -m 512 -u memcached -p 11211 -l localhost
root     25104   685  0 11:18 pts/1    00:00:00 grep memcached

Y comprobamos los puertos, los protocolos de red e ips que se están usando

# /usr/sbin/lsof -i -P -n | grep 11211
memcached 25097 memcached   36u  IPv4 627100       TCP 127.0.0.1:11211 (LISTEN)
memcached 25097 memcached   37u  IPv4 627101       UDP 127.0.0.1:11211

En este punto, ya tenemos instalado memcache en nuestro servidor. Podemos usar alguna herramienta para visualizar el uso de la cache en ram con memcached, esta herramienta es un script en perl con el que tambien podemos probar que memcache se ha instalado bien y esta funcionando.

Para poder utilizarlo en una aplicación web en php, necesitamos añadir el módulo de php.

Creamos una nueva carpeta en el directio /opt para instalar la última versión del módulo pecl de memcache para php

# mkdir /opt/pecl_memcache 

Descargamos el modulo de memcache para php y descomprimimos

# wget http://pecl.php.net/get/memcache-3.0.5.tgz
# tar xvzf memcache-3.0.5.tgz
# cd memcache-3.0.5

Lanzamos la compilación especificando la nueva ruta y habilitando memcache

# ./configure --enable-memcache --prefix=/opt/pecl_memcache/

Durante el proceso de compilación me ha dado un warning pidiéndome una versión más actualizada del paquete re2c

checking for re2c… no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.

En caso de que no este instalado se puede instalar muy facilmente con:

# yum install re2c

o si esta instalado pero necesita una actualización, hacer lo siguiente:

 
# yum update re2c

En caso de que no se actualice, habrá que añadir un repositorio adicional. Yo he añadido el repositorio para RedHat 5 de dag wieers http://dag.wieers.com/rpm/FAQ.php#B2

Ahora al actualizar la versión de re2c, ya no aparece el warning.

checking for re2c… re2c
checking for re2c version… 0.13.5 (ok)

Ahora que la compilación de devuelve ningún warning seguimos con la instalación.

# make
# make test
# make install

Installing shared extensions: /usr/lib64/php/modules/

En este punto ya tendremos el módulo de memcache para php creado.

# cd /usr/lib64/php/modules/
# ll

total 3600
-rwxr-xr-x 1 root root 33728 nov 13 2009 dbase.so
-rwxr-xr-x 1 root root 180080 nov 13 2009 dom.so
-rwxr-xr-x 1 root root 370240 nov 13 2009 gd.so
-rwxr-xr-x 1 root root 28848 nov 13 2009 json.so
-rwxr-xr-x 1 root root 2028272 nov 13 2009 mbstring.so
-rwxr-xr-x 1 root root 37424 sep 10 2009 mcrypt.so
-rwxr-xr-x 1 root root 408037 mar 15 12:05 memcache.so
-rwxr-xr-x 1 root root 116432 nov 13 2009 mysqli.so
-rwxr-xr-x 1 root root 50448 nov 13 2009 mysql.so
-rwxr-xr-x 1 root root 28296 nov 13 2009 pdo_mysql.so
-rwxr-xr-x 1 root root 102448 nov 13 2009 pdo.so
-rwxr-xr-x 1 root root 24200 nov 13 2009 pdo_sqlite.so
-rwxr-xr-x 1 root root 15416 oct 29 11:57 phpcups.so
-rwxr-xr-x 1 root root 28624 nov 13 2009 snmp.so
-rwxr-xr-x 1 root root 31728 nov 13 2009 xmlreader.so
-rwxr-xr-x 1 root root 32272 nov 13 2009 xmlwriter.so
-rwxr-xr-x 1 root root 29792 nov 13 2009 xsl.so
-rwxr-xr-x 1 root root 73472 nov 13 2009 zip.so

Ya estamos cerca, tan sólo queda añadirlo al php.ini

# vi /etc/php.ini

Dentro del archivo colocar al inicio de la carga de las extensiones la siguiente linea:

extension=memcache.so

Por último reiniciamos apache

# /etc/init.d/httpd restart

La forma mas rápida de comprobar que el módulo está cargado es crear un fichero php con la funcion phpinfo();

Tags de búsquedas:

activar cache en oscommerce,donde se instala libevent,memcache

Noticias relacionadas »

11 comentarios en Como instalar memcached. Guía de instalación y uso de memcached

  1. Albert
    / Responder

    Hola Pedro, he estado buscando articulos sobre el tema y es verdad lo que dices que hay muchos que copian de otros sin saber… y los perjudicados siempre somos los que no dominamos el tema… Lastima no hubiera visto antes tu articulo, ya que he intentado instalar el memcached siguiento otros tutos pero por lo visto no me funciona, y no tengo ni idea de porque.

    si ejecuto:
    ps -ef | grep memcached
    nobody 16996 1 0 Oct07 ? 00:00:07 /usr/local/bin/memcached -u root -m 1024 -p 11211 -u nobody -l 127.0.0.1
    root 25575 25264 0 12:28 pts/0 00:00:00 grep memcached

    Si ejecuto:
    /usr/sbin/lsof -i -P -n | grep 11211
    memcached 16996 nobody 26u IPv4 2982279 0t0 TCP 127.0.0.1:11211 (LISTEN)
    memcached 16996 nobody 27u IPv4 2982280 0t0 UDP 127.0.0.1:11211

    Hasta aqui todo bien ¿no?

    Si ejecuto:
    php -i | grep memcache -i

    Me devuelve:
    memcache
    memcache support => enabled
    memcache.allow_failover => 1 => 1
    memcache.chunk_size => 8192 => 8192
    memcache.default_port => 11211 => 11211
    memcache.default_timeout_ms => 1000 => 1000
    memcache.hash_function => crc32 => crc32
    memcache.hash_strategy => standard => standard
    memcache.max_failover_attempts => 20 => 20
    Registered save handlers => files user sqlite memcache

    Entiendo que todo esta correcto ¿no?

    Pero el problema es que cuando quiero ejecutarlo desde php no encuentra la clase, soltandome el error:

    Fatal error: Class ‘Memcached’ not found in /home/….

    Gracias por tus sabios consejos.

    • Pedro Ventura
      / Responder

      Hola Albert,

      Gracias por tu comentario.

      Pues creo que te falta instalar el módulo de php que carga la librería de memcache. Es lo último que te falta. Ésto se explica en la parte final de mi artículo, pero claro yo lo estoy compilando. Puede que tu lo estés haciendo de otra manera, si lo estas haciendo con apt-get o yum debes instalar php5-memcache y luego reiniciar apache.

      Ya me cuentas si te funcionó

      Un saludo!

  2. jordano_p
    / Responder

    Muy buen tutorial @@pedrojventura.

  3. Pingback: Usar memcached para guardar las sesiones de usuario en CakePHP

  4. / Responder

    Ya esta creado el directorio /opt/pecl_memcache, creo que loq ue no encuentra es el directorio ./configure, por eso te comentaba desde que directorio debo ejecutar # ./configure –enable-memcache –prefix=/opt/pecl_memcache/ ya que estoy dentro de /home/ubuntu/memcache-3.0.5/

    Saludos y gracias por tu pronta respuesta…. si tienes un skype dodne te pueda ubicar…

    MasterBC

    • Pedro Ventura
      / Responder

      ./configure no es ningún directorio, es la instrucción que hay que ejecutar para compilar en linux. Supongo que no estás familiarizado con sistemas Linux.
      Bueno también he probado a instalarlo desde 0 siguiendo los pasos del blog y me está dando un problema, resulta que ya tenía instalado una version de libevent. En ubuntu tan sólo he tenido que poner apt-get install memcached y ya me ha instalado memcached.

      root@PedroVentura:/etc/ld.so.conf.d# ps -ef | grep memcached
      memcache  7976     1  0 16:58 ?        00:00:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1
      

      Prueba a instalarlo con apt-get en ubuntu/debian o si usas Fedora, RedHat usa yum. El método que yo explico es compilando el software y es mucho más complicado a parte hay que tener instalado las librerías gcc

      • / Responder

        Gracias por tu pronta respuesta, lo he instalado desde la linea de comando sudo apt-get install memcached y todo correcto.

        Hay que instalar el modulo para php ahora? o no es necesario?

        Saludos

      • / Responder

        Pedro buen dia,

        Obviamente habia que instalar el modulo php5-memcache pero mi inconveniente era que no encontraba este modulo ya que mi isnatalcion de linux ubuntu 10.04.3 le degrade la version de php 5.3.x que viene por defecto a la version 5.2.x haciendo uso de los repositorios karnic.

        gogleando enocntre la solución y habia que editar el repositorio y adicionarle las nuevas direcciones de karnic, y fue todo actualice instale y ya esta corriendo el demonio memcached con el modulo php5-memcache

        Gracias por todos tus aportes y conocimientos.

        Saludos

  5. / Responder

    Pedro muy buena tu infomración, he tratado de seguir los pasos que indicas pero en la seccion donde debes bajarte y descomprimir memcache tengo una duda?

    Se debe ejcutar este comenado dentro del directorio memcache-3.0.5:
    ./configure –enable-memcache –prefix=/opt/pecl_memcache/

    Porque de ser asi, sale error que no encuentra el error:
    ./configure: No such file or directory

    Me puedes indicar como solucionar dicho error?

    Gracias

    MasterBC
    Lima, Peru

    • Pedro Ventura
      / Responder

      Has creado previamente la carpeta pecl_memcache??? con mkdir /opt/pecl_memcache ??

    • / Responder

      Efectivamente Linux no es mi fuerte, pero tenemos un proyecto el cual debe estar en un servidor Linux.

      Realice la instalacion desde esta linea sudo apt-get install memcached y se instalo correctamente.

      ubuntu@domU-12-31-39-0A-24-4D:~$ ps -ef | grep memcached
      ubuntu 3792 8845 0 11:27 pts/0 00:00:00 grep –color=auto memcached
      ubuntu 13392 1 0 Nov22 ? 00:00:05 /opt/memcached/bin/memcached -d -m 512 -u memcached -p 11211 -l localhost

      Tengo otras consultas que hacer, referente a servidores linux, nose si podria enviartela por algun correo?

      Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Invertir en criptomonedas: »

 

Cómo comprar bitcoin

Invertir y comprar Bitcoin y otras altcoins es más fácil de lo que crees.

1) Si sólo quieres comprar Bitcoin, Ethereum o Litecoin como inversión, tu opción es Coinbase

2) Si quieres probar con otras criptomonedas tu opción es Binance

3) Cualquier duda escríbeme con total libertad al formulario de contacto para resolver dudas: https://www.pedroventura.com/contacto/

¡Comparte este artículo! »

  • A.BTC (4 semanas)
    Canal Serio de Señales para Trading con Criptomonedas Enlace: https://t.me/tradingcriptomonedas
  • Margart (4 semanas)
    La verdad que me ha gustado mucho el post, de…
  • ¡Hablan de nosotros! (2 meses)
    […] 04/02/2018          => Lee el artículo aquí…
  • Emiluz (2 meses)
    Camaradas... tengo documento de word con formulas nativas de word...…
  • Francisco (2 meses)
    Buen dia, agradeceria el envio del archivo. Saludos.
  • yaplog.jp (2 meses)
    I am genuinely glad to glance at this webpage posts…

Suscríbete al newsletter »

Proporciona tu correo electrónico a continuación y recibe las últimas noticias! Funciona con Feedburner de Google

Archivo »

Leer entrada anterior
Usar Min/Max Width y Height en CSS

Incluso si estás empezando con CSS, probablemente ya has utilizado las propiedades width y height. Pero te habrás dado cuenta...

Cerrar