Cómo instalar Memcached en Ubuntu 22.04
Memcached es un sistema de caché de memoria distribuido, gratuito, de código abierto y de propósito general, que se utiliza para almacenar en caché datos de bases de datos. Es un sistema de caché en memoria de alto rendimiento que se utiliza para acelerar las aplicaciones web dinámicas reduciendo la carga de la base de datos. Memcached está formado por cuatro componentes que permiten al cliente y al servidor trabajar juntos para entregar los datos almacenados en caché de la forma más eficiente posible. Ofrece integración API para los principales lenguajes como PHP, Java, C/C++, Python, Ruby, Perl, etc.
Este tutorial te mostrará cómo instalar el servidor Memcached en un servidor Ubuntu 22.04 y cómo utilizarlo con PHP.
Requisitos
- Un servidor que ejecute Ubuntu 22.04.
- Una contraseña de root configurada en tu servidor.
Instalar Memcached en Ubuntu 22.04
Por defecto, el paquete Memcached está incluido en el repositorio por defecto de Ubuntu. Puedes instalarlo fácilmente utilizando el siguiente comando:
apt install memcached libmemcached-tools -y
Una vez instalado Memcached, inicia el servicio Memcached utilizando el siguiente comando:
systemctl start memcached
Puedes comprobar el estado del Memcached con el siguiente comando:
systemctl status memcached
Deberías obtener la siguiente salida:
? memcached.service - memcached daemon Loaded: loaded (/lib/systemd/system/memcached.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-10-18 13:09:47 UTC; 29s ago Docs: man:memcached(1) Main PID: 5525 (memcached) Tasks: 10 (limit: 2242) Memory: 1.7M CPU: 71ms CGroup: /system.slice/memcached.service ??5525 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid Oct 18 13:09:47 ubuntu2204 systemd[1]: Started memcached daemon.
Para verificar la versión de Memcached, ejecuta el siguiente comando:
memcached -V
Obtendrás la siguiente salida:
memcached 1.6.14
Por defecto, Memcached escucha en el puerto 11211. Puedes comprobarlo con el siguiente comando:
ss -plunt | grep memcache
Deberías ver la siguiente salida:
tcp LISTEN 0 1024 127.0.0.1:11211 0.0.0.0:* users:(("memcached",pid=5525,fd=22))
Instalar la extensión Memcached de PHP
Para utilizar Memcached con aplicaciones basadas en PHP. Necesitarás instalar la extensión Memcached de PHP en tu servidor. Puedes instalarla con Apache utilizando el siguiente comando:
apt install apache2 php libapache2-mod-php php-memcached php-cli -y
A continuación, crea una página PHP de prueba de ejemplo para verificar el Memcached:
nano /var/www/html/info.php
Añade el siguiente código:
<?php phpinfo();
Guarda y cierra el archivo y reinicia el servicio Apache para aplicar los cambios:
systemctl restart apache2
A continuación, abre tu navegador y accede a la página PHP utilizando la URL http://your-server-ip/info.php. Deberías ver el Memcached en la siguiente pantalla:
A continuación, crea otra página PHP de prueba para verificar si el Memcached funciona o no.
nano /var/www/html/test.php
Añade el siguiente código:
<?php try { $memcached = new Memcached(); $memcached->addServer("127.0.0.1", 11211); $response = $memcached->get("key_cache"); if($response==true) { echo "Result coming from caching"; echo $response; } else { echo "Cache is not created yet, reload again to see changes"; $memcached->set("key_cache", "Hooray! Memcache is working now ...") ; } } catch (exception $e) { echo $e->getMessage(); } ?>
Guarda y cierra el archivo y, a continuación, abre tu navegador web y accede a la página PHP de prueba utilizando la URL http://your-server-ip/test.php. Deberías ver la siguiente pantalla:
A continuación, vuelve a cargar la página. Esta vez la página se cargará desde la memoria caché como se muestra a continuación:
Asegura Memcached con Autenticación
Se recomienda utilizar Simple Authentication and Security Layer (SASL) para asegurar Memcached con autenticación basada en usuario. Para ello, deberás instalar el paquete sasl2-bin en tu servidor.
apt install sasl2-bin
A continuación, crea un directorio y un archivo de configuración para la autenticación SASL:
mkdir -p /etc/sasl2 nano /etc/sasl2/memcached.conf
Añade las siguientes líneas:
log_level: 5 mech_list: plain sasldb_path: /etc/sasl2/memcached-sasldb2
Guarda y cierra el archivo y, a continuación, crea una base de datos SASL con las credenciales de usuario:
saslpasswd2 -a memcached -c -f /etc/sasl2/memcached-sasldb2 user1
Establece tu contraseña como se muestra a continuación:
Password: Again (for verification):
A continuación, cambia la propiedad de la base de datos Memcached:
chown memcache:memcache /etc/sasl2/memcached-sasldb2
A continuación, verifica el Memcached utilizando el siguiente comando:
memcstat --servers="127.0.0.1"
Deberías obtener la siguiente salida:
Server: 127.0.0.1 (11211) pid: 5525 uptime: 462 time: 1666099048 version: 1.6.14 libevent: 2.1.12-stable pointer_size: 64 rusage_user: 0.110123 rusage_system: 0.093906 max_connections: 1024 curr_connections: 1 total_connections: 4 rejected_connections: 0 connection_structures: 2 response_obj_oom: 0 response_obj_count: 1 response_obj_bytes: 49152 read_buf_count: 6 read_buf_bytes: 98304 read_buf_bytes_free: 32768 read_buf_oom: 0 reserved_fds: 20 cmd_get: 2 cmd_set: 1 cmd_flush: 0 cmd_touch: 0 cmd_meta: 0 get_hits: 1 get_misses: 1 get_expired: 0 get_flushed: 0 delete_misses: 0
A continuación, edita el archivo de configuración de Memcached:
nano /etc/memcached.conf
Añade las siguientes líneas:
-S -vv
Guarda y cierra el archivo y reinicia el servicio Memcached para aplicar los cambios:
systemctl restart memcached
A continuación, verifica la compatibilidad con SASL utilizando el siguiente comando:
journalctl -u memcached |grep SASL
Si todo va bien, obtendrás la siguiente salida:
Journal file /var/log/journal/d97e195db6584d63aeedfdc35dc83c7f/user-1000.journal is truncated, ignoring file. Oct 18 13:18:19 ubuntu2204 systemd-memcached-wrapper[14980]: Initialized SASL.
Verificar la autenticación de Memcached
Primero, intenta comprobar de nuevo la conectividad con Memcached sin autenticación:
memcstat --servers="127.0.0.1"
El comando no debería producir salida. Escribe el siguiente comando shell para comprobar su estado:
echo $?
Deberías recibir el siguiente código de estado significa que el comando memcstat ha fallado.
1
A continuación, ejecuta de nuevo el comando Memcached especificando el nombre de usuario y la contraseña:
memcstat --servers="127.0.0.1" --username=user1 --password=password
Obtendrás la siguiente salida:
Server: 127.0.0.1 (11211) pid: 14980 uptime: 46 time: 1666099143 version: 1.6.14 libevent: 2.1.12-stable pointer_size: 64 rusage_user: 0.077843 rusage_system: 0.049072 max_connections: 1024 curr_connections: 1 total_connections: 3 rejected_connections: 0 connection_structures: 2 response_obj_oom: 0 response_obj_count: 1 response_obj_bytes: 16384 read_buf_count: 3 read_buf_bytes: 49152 read_buf_bytes_free: 16384 read_buf_oom: 0
Instalar Memcached para Python
Si quieres integrar Memcached con aplicaciones web basadas en Python, tendrás que instalar la extensión Memcached para Python. Puedes instalarla con el siguiente comando:
apt install python3-pip pip install pymemcache pip install python-memcached
Conclusión
En este post, hemos explicado cómo instalar el servidor Memcached en Ubuntu 22.04. También hemos explicado cómo asegurar Memcached con autenticación basada en SASL. Espero que ahora puedas integrar Memcached en tu aplicación para acelerar el rendimiento de la misma. No dudes en preguntarme si tienes alguna duda.