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:
- https://deb.sury.org/
- https://packages.sury.org/php/
- https://github.com/oerdnj/deb.sury.org/wiki/Frequently-Asked-Questions#how-to-enable-the-debsuryorg-repository
Configuración de PHP#
Existen dos tipos de configuración de PHP:
- https://cwiki.apache.org/confluence/display/HTTPD/php
- https://www.php.net/manual/en/install.unix.debian.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.
- https://www.php.net/manual/en/install.unix.apache2.php
- https://www.php.net/manual/en/book.apache.php
- https://www.php.net/manual/en/security.apache.php
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.
- https://pecl.php.net/package/APCu
- https://www.php.net/manual/en/book.apcu.php
- https://www.php.net/manual/en/apcu.installation.php
OpCache#
OPcache permite guardar el bytecode en memoria compartida para acelerar el procesamiento del intérprete de PHP.
- https://pecl.php.net/package/ZendOpcache
- https://www.php.net/manual/en/book.opcache.php
- https://www.php.net/manual/en/opcache.installation.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 dominiophpmyadmin.example.com
- El sitio tiene que responder ÚNICAMENTE por HTTPS, configurar la redirección de HTTP a HTTPS
Replicación MySQL#
- https://dev.mysql.com/doc/refman/5.7/en/replication.html
- https://dev.mysql.com/doc/mysql-replication-excerpt/5.7/en/replication.html
- https://dev.mysql.com/doc/refman/8.0/en/replication.html
- https://dev.mysql.com/doc/mysql-replication-excerpt/8.0/en/replication.html
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#
- Multi-sitio
- Aplicación móvil
Plugins de WordPress#
- WP Offload Media Lite (S3)
- Plugin para Memcache
- Plugin para Redis
- WP Super Cache
wp2static
- Simply Static
- CAPTCHA
- 2FA
Herramientas externas#
wp-cli
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:
- Loggly
- DataDog
- LogTail
APM#
Configurar el agente de NewRelic para que haga introspección y analice el rendimiento de PHP.
- https://docs.newrelic.com/docs/apm/agents/php-agent/getting-started/introduction-new-relic-php/
- https://github.com/newrelic/newrelic-php-agent
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
.
- https://wordpress.com/plugins/cloudflare
- https://www.cloudflare.com/pg-lp/cloudflare-for-wordpress/
- https://developers.cloudflare.com/support/third-party-software/content-management-system-cms/using-the-cloudflare-plugin-with-wordpress/
- https://developers.cloudflare.com/support/third-party-software/content-management-system-cms/wordpress.com-and-cloudflare/
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 dedate '+%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 congzip
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 congzip
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
.-
Tener cuidado con los permisos que se dan a la aplicación y seleccionar el modo de acceso
drive.file
para dar acceso ÚNICAMENTE a los archivos y directorios querclone
haya creado. -
Establecer un folder como la raíz que puede ver
rclone
para limitar aún mas el acceso a Google Drive.
-
$ 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
...