Características adicionales#


PHP#

Versiones de PHP#

Normalmente Debian tiene una sola versión de PHP. Si se desea instalar una versión diferente es posible compilarla desde código fuente, pero este proceso puede ser bastante tedioso y propenso a errores.

Existe un repositorio llamado Sury que tiene más versiones de PHP que se pueden instalar en Debian.

Sistema operativo Versión de PHP predeterminada Versiones de PHP disponibles en Sury
Debian 11 7.4 5.6 , 7.0 , 7.1 , 7.2 , 7.3 , 7.4 , 8.0 , 8.1 , 8.2
Debian 10 7.3 5.6 , 7.0 , 7.1 , 7.2 , 7.3 , 7.4 , 8.0 , 8.1 , 8.2

Si se pide instalar "la versión de PHP incluida con Debian", entonces no es necesario instalar el repositorio Sury.

El repositorio Sury se puede instalar en una máquina Debian siguiendo las instruciones del sitio web:

Configuración de PHP#

Existen dos tipos de configuración de PHP:

mod_php#

En este tipo de configuración el motor del intérprete de PHP se carga como módulo de Apache HTTPD.

La comunicación de Apache HTTPD con PHP es directa porque el código de mod_php se carga en la imagen ejecutable de Apache.

PHP-FPM#

En este método de configuración el motoro de PHP se ejecuta como un demonio externo que utiliza la tecnología FastCGI.

La comunicación entre PHP-FPM y Apache HTTPD se realiza a través de un socket de dominio UNIX. Es necesario que el usuario asociado a los demonios de Apache HTTPD y PHP-FPM pueda leer y escribir en el archivo de socket para que la comunicación sea exitosa. Muchas veces esto se logra agregando al usuario de Apache HTTPD al grupo de PHP-FPM y viceversa.

Caché de PHP#

Existen varios plugins que aplican diversas técnicas para acelerar el motor de PHP.

APC / APCu#

APC permite que se guarden los opcodes en caché para acelerar el procesamiento del intérprete de PHP.

OpCache#

OPcache permite guardar el bytecode en memoria compartida para acelerar el procesamiento del intérprete de PHP.


MySQL y MariaDB#

Instalar el paquete mariadb-server si se pidió "la versión que trae Debian de manera predeterminada"

  • https://packages.debian.org/buster/mariadb-server

Repositorio de MySQL community

Repositorio de MariaDB.org

PHPMyAdmin#

PHPMyAdmin es una interfaz de administración web para servidores MySQL y/o MariaDB

Warning

  • Para este proyecto se tendrá que configurar la autenticación htpasswd en TODO el VirtualHost que atiende el dominio phpmyadmin.example.com
  • El sitio tiene que responder ÚNICAMENTE por HTTPS, configurar la redirección de HTTP a HTTPS

Replicación MySQL#


Panel de control web#

Webmin#

Webmin es un panel de control web que se puede instalar en Linux para realizar las configuraciones del servidor. El panel de control necesita que se abra un puerto adicional en el servidor para poder acceder a la sección administrativa.

Virtualmin#

Virtualmin es una extension de Webmin que permite la administración del servidor web


Autenticación en Apache HTTPD#

Existen dos tipos de autenticación para Apache HTTPD: htpasswd y htdigest


Características de WordPress#


Plugins de WordPress#

  • WP Offload Media Lite (S3)
  • Plugin para Memcache
  • Plugin para Redis
  • WP Super Cache
  • wp2static
  • Simply Static
  • CAPTCHA
  • 2FA

Herramientas externas#


Envío de bitácoras a syslog#

Configurar el envío de bitácoras de Apache HTTPD a syslog

Después configurar la redirección de TODAS las bitácoras de syslog hacia un servicio externo:


APM#

Configurar el agente de NewRelic para que haga introspección y analice el rendimiento de PHP.


Monitoreo externo#

Habilitar el monitoreo con alguna herramienta externa para que envíe correos cuando el servicio esté abajo.

  • Pingdom
  • Down Detector

Configurar esto únicamente para el VirtualHost de WordPress.


CloudFlare#

Habilitar la protección de CloudFlare para TODOS los sitios hospedados en el dominio example.com.

Es necesario configurar los nameservers de CloudFlare en el panel de control del registrar para establecer CloudFlare como el servidor autoritativo de DNS para el dominio example.com.


Configuración de respaldos#

Warning

  • Esta sección aplica para el equipo que le tocó hacer el respaldo

Automatizar el respaldo de la base de datos en "esquema" y "contenido"

  • Script y configuración de la tarea programada para respaldar la base de datos cada 12 horas (medio día y media noche)

  • Definir un prefijo para que indique la fecha (YYYY-MM-DD-HH-MM) o marca de tiempo UNIX epoch (ver salida de date '+%s')

  • Definir si los archivos respaldo se guardan el prefijo en el nombre o si se crearán carpetas con el prefijo para contener los archivos de cada respaldo

  • recursos.tar.gz: Crear un archivo TAR comprimido con gzip que tenga los archivos que hayan subido los usuarios de la aplicación que hayan elegido, cada aplicación tiene una carpeta que no forma parte del código donde guarda estos archivos

  • esquema.sql.gz: Generar un archivo SQL comprimido con gzip con el esquema de la base de datos (definición de tablas)

  • datos.sql.gz: Generar otro archivo SQL con los datos de todas las tablas de la base de datos

  • Subir los archivos resultantes a Google Drive utilizando rclone.

$ rclone config

    ...

Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.    ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅
 3 | These are visible in the drive website.    ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅
   | File authorization is revoked when the user deauthorizes the app.  ⬅   ⬅
   \ "drive.file"   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"

scope> 3    ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅

    ...

ID of the root folder - leave blank normally.  Fill in to access "Computers" folders. (see docs).
root_folder_id> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   ⬅   ⬅   ⬅   ⬅   ⬅   ⬅

    ...

Verificación del caché en RAM#

Warning

  • Esta sección aplica para el equipo que le tocó implementar el caché en RAM

Es posible verificar el estado de los servicios MemCache y Redis utilizando los scripts de shell:

MemCache#

MemCache

Puedes probar el servicio de MemCache utilizando el script de shell test-memcache.sh


root@example:~# chmod -c +x test-memcache.sh
root@example:~# ./test-memcache.sh
    ...

Redis#

Redis

Puedes probar el servicio de Redis utilizando el script de shell test-redis.sh


root@example:~# chmod -c +x test-redis.sh
root@example:~# ./test-redis.sh
    ...