Si buscas mejorar el rendimiento de tus sitios web alojados en cPanel y que utilizan PHP-FPM, configurar OPCache es una excelente manera de lograrlo. OPCache es una extensión de PHP que mejora el rendimiento almacenando en caché el código de bytes precompilado de los scripts PHP en la memoria compartida del servidor, eliminando la necesidad de cargar y analizar los scripts en cada solicitud.
En este post, te mostraremos cómo habilitar y configurar OPCache para un dominio específico en cPanel.
Paso 1: Localiza y Edita el Archivo de Configuración de PHP-FPM
El primer paso es editar el archivo de configuración de PHP-FPM para tu dominio. Este archivo se encuentra en la siguiente ruta:
/var/cpanel/userdata/USUARIO_CPANEL/DOMINIO.cl.php-fpm.yaml
Asegúrate de reemplazar USUARIO_CPANEL con tu nombre de usuario de cPanel y DOMINIO.cl con el nombre de tu dominio. Por ejemplo, si tu usuario de cPanel es databyte y tu dominio es databyte.cl, el archivo sería:
/var/cpanel/userdata/databyte/databyte.cl.php-fpm.yaml
Puedes editar este archivo usando un editor de texto como nano o vi a través de SSH.
Paso 2: Añade la Configuración de OPCache
Una vez que tengas el archivo abierto, deberás añadir el siguiente bloque de código al final del archivo. Es crucial mantener la indentación correcta, ya que los archivos YAML son sensibles a ella.
php_admin_value_opcache_enable:
name: php_admin_value[opcache.enable]
value: 1
php_admin_value_opcache_enable_cli:
name: php_admin_value[opcache.enable_cli]
value: 1
php_admin_value_opcache_interned_strings_buffer:
name: php_admin_value[opcache.interned_strings_buffer]
value: 128
php_admin_value_opcache_max_accelerated_files:
name: php_admin_value[opcache.max_accelerated_files]
value: 20000
php_admin_value_opcache_memory_consumption:
name: php_admin_value[opcache.memory_consumption]
value: 512
php_admin_value_opcache_revalidate_freq:
name: php_admin_value[opcache.revalidate_freq]
value: 300
php_admin_value_opcache_validate_timestamps:
name: php_admin_value[opcache.validate_timestamps]
value: 1
Explicación de las Variables y sus Valores
A continuación, te explicamos el significado de cada una de estas directivas de OPCache y por qué hemos elegido estos valores:
- php_admin_value_opcache_enable: 1:
- Significado: Habilita la extensión OPCache.
- Valor: 1 (verdadero) activa OPCache. Sin esto, ninguna otra configuración de OPCache tendrá efecto.
- php_admin_value_opcache_enable_cli: 1:
- Significado: Habilita OPCache para la interfaz de línea de comandos (CLI) de PHP.
- Valor: 1 (verdadero) permite que los scripts PHP ejecutados desde la línea de comandos también se beneficien de OPCache. Esto es útil para tareas programadas o scripts de mantenimiento.
- php_admin_value_opcache_interned_strings_buffer: 128:
- Significado: Controla el tamaño del búfer de cadenas internadas en MB. Las cadenas internadas son cadenas que se utilizan repetidamente en el código (como nombres de variables, funciones, etc.) y que OPCache puede almacenar para evitar duplicados y ahorrar memoria.
- Valor: 128 MB es un valor generoso que debería ser suficiente para la mayoría de las aplicaciones. Un valor demasiado bajo podría provocar que el búfer se llene y se desactive esta optimización.
- php_admin_value_opcache_max_accelerated_files: 20000:
- Significado: Define el número máximo de scripts PHP que OPCache puede almacenar en su caché.
- Valor: 20000 es un valor alto que permite almacenar una gran cantidad de archivos. Para sitios con muchos archivos PHP (como CMS complejos o frameworks), este valor es crucial. Si el número de archivos excede este límite, OPCache no podrá cachear todos y el rendimiento se verá afectado.
- php_admin_value_opcache_memory_consumption: 512:
- Significado: Establece el tamaño de la memoria compartida que OPCache puede usar en megabytes.
- Valor: 512 MB es una cantidad considerable de memoria dedicada a OPCache. El valor ideal dependerá del tamaño y la complejidad de tu aplicación. Si ves que el caché se llena rápidamente, podrías necesitar aumentarlo, siempre y cuando tu servidor tenga la RAM disponible.
- php_admin_value_opcache_revalidate_freq: 300:
- Significado: Con qué frecuencia (en segundos) OPCache verificará si un archivo PHP cacheado ha sido modificado.
- Valor: 300 segundos (5 minutos) significa que OPCache solo revisará si los archivos han cambiado cada 5 minutos. Un valor de 0 significaría que siempre se revisa, lo que impactaría negativamente el rendimiento. Para entornos de producción donde los archivos no cambian constantemente, un valor más alto es beneficioso. Si estás desarrollando activamente y necesitas ver los cambios inmediatamente, considera un valor más bajo (como 60 o 0 temporalmente, pero no recomendado para producción).
- php_admin_value_opcache_validate_timestamps: 1:
- Significado: Indica si OPCache debe validar las marcas de tiempo de los archivos para verificar si han cambiado.
- Valor: 1 (verdadero) significa que OPCache verificará las marcas de tiempo. Si lo estableces en 0 (falso), OPCache no verificará si los archivos han cambiado y siempre servirá la versión cacheada, lo que es muy rápido pero requiere un reinicio manual de PHP-FPM o Apache cada vez que modifiques un archivo PHP. En la mayoría de los entornos, 1 es el valor seguro y recomendado para evitar servir contenido obsoleto.
Paso 3: Reconstruye la Configuración de PHP-FPM
Después de guardar los cambios en el archivo .yaml, necesitas reconstruir la configuración de PHP-FPM para que los cambios surtan efecto. Ejecuta el siguiente comando en tu terminal SSH:
/scripts/php_fpm_config --rebuild
Este comando procesará los archivos de configuración de PHP-FPM de cPanel y aplicará las nuevas directivas.
Paso 4: Reinicia los Servicios de Apache y PHP-FPM
Finalmente, si el comando anterior no arrojó ningún error, reinicia los servicios de Apache y PHP-FPM para que OPCache comience a funcionar con la nueva configuración:
/scripts/restartsrv_apache_php_fpm
¡Y eso es todo! Tu dominio ahora debería estar utilizando OPCache para mejorar el rendimiento de tus aplicaciones PHP. Puedes verificar si OPCache está funcionando correctamente creando un archivo phpinfo.php
en tu dominio con el contenido:
<?php phpinfo(); ?>
Y buscando la sección OPCache.