Este documento ofrece consejos para configurar Drupal de forma óptima. En resumen: (1) Se recomienda usar Composer para crear proyectos Drupal y organizar módulos y temas. (2) La base de datos debe estar optimizada y tener copias de seguridad periódicas. (3) Se deben usar cachés como Varnish o Memcache para mejorar el rendimiento. (3) Las tareas de cron son importantes para mantener la web y deben ejecutarse regularmente.
2. Índice
● Composer
● Base de datos
● Cache
● 404
● Archivos estáticos
● Módulos
● Consola
@SiteGround_ESwww.siteground.es
#SGwebinar
3. Composer
● Composer es un manejador
de dependencias, no un
gestor de paquetes.
@SiteGround_ESwww.siteground.es
#SGwebinar
4. Composer: esqueleto web
Cuando creamos una web nueva la opción recomendable es
usar el proyecto de github: Drupal-composer
Drupal 7
composer create-project drupal-composer/drupal-project:7.x-dev some-dir
--stability dev --no-interaction
Drupal 8
composer create-project drupal-composer/drupal-project:8.x-dev some-dir
--stability dev --no-interaction
@SiteGround_ESwww.siteground.es
#SGwebinar
5. Composer: directorios
Esto es más una recomendación que una
norma:
● modules/contrib => Módulos de la comunidad.
● modules/custom => Módulos propios
● modules/features => Features exportadas.
● modules/hacked => Módulos modificados.
● themes/contrib => Temas de la comunidad.
● themes/custom => Temas propios.
@SiteGround_ESwww.siteground.es
#SGwebinar
6. Base de datos
● Suele ser uno de los cuellos de botella de las
webs
● Es necesario tenerla a punto y optimizada.
● Hasta que no tenemos un desastre no nos
preocupamos.
● Tenemos que adelantarnos a que esto
ocurra.
@SiteGround_ESwww.siteground.es
#SGwebinar
7. Base de datos
Si es posible hay que optimizar la configuración
de mysql, hay que seguir este post:
https://www.drupal.org/node/259580
Los valores que asignemos tienen que tener en
cuenta el hardware de nuestro servidor:
https://github.com/major/MySQLTuner-perl
@SiteGround_ESwww.siteground.es
#SGwebinar
8. Base de datos: módulos
Drupal es un CMS que utiliza la bbdd incluso
para guardar configuraciones.
Es necesario tener en buen estado la BBDD,
estos dos módulos nos Ayudan
● DBMaintenance
● OptimizeDB
@SiteGround_ESwww.siteground.es
#SGwebinar
9. Base de datos
Drupal información en las tablas de “sessions” y de
“accesslog”, busca una alternativa a estas opciones.
Tanto Memcache como Redis nos permiten guarda en sus
respectivas base de datos la información de esas tablas,
haciendo que Drupal vaya más rápido.
Este truco se nota más en webs con usuarios
autenticados.
@SiteGround_ESwww.siteground.es
#SGwebinar
10. BBDD: copias de seguridad
Un buen profesional configurará un sistema de copias de
seguridad de la base de datos.
Algunos hosting permiten hacer copias de seguridad periódicas.
Algunos módulos de Drupal facilitan la creación de copias.
● Backup and Migrate
● Backup Database
No es recomendable guardar las copias de seguridad en el
mismo servidor. Se puede usar el módulo Storage Api para
mover las copias de seguridad a otros servidores.
@SiteGround_ESwww.siteground.es
#SGwebinar
11. Cache
El sistema de caché de Drupal sobre base de datos relacional no
es perfecto pero funciona.
Podemos mejorar si optamos por alguna de las siguientes
opciones:
● Varnish
● Memcache
● Redis
● Boost
Depende de nuestro hosting podemos usar uno u otro.
@SiteGround_ESwww.siteground.es
#SGwebinar
12. Cache
Es importante entender que la política de caché de un
proyecto no se podrá afinar antes de empezar el
proyecto, sino que es un proceso que se irá afinando
en los meses posteriores a lanzar el proyecto, y cada
cierto tiempo hay que revisar.
@SiteGround_ESwww.siteground.es
#SGwebinar
13. Cron
En Drupal las tareas de Cron son tareas que se ejecutan
en segundo plano, y que ayudan a tener optimizado
nuestra página web, afectan a múltiples facetas de la web:
● Borrado de elementos temporales.
● Actualización de la caché.
● Indexación de contenido.
● Regeneración de permisos.
● Etc...
@SiteGround_ESwww.siteground.es
#SGwebinar
14. ¿Cuando ejecutamos Cron?
● No existe una norma clara.
● En modo pasivo (core) se puede ejecutar cada hora.
● En modo activo (externo) se puede ejecutar cada
minuto.
● Depende del proyecto y las tareas requeridas para
cada proyecto.
@SiteGround_ESwww.siteground.es
#SGwebinar
15. Cron: módulos
Módulos recomendados:
● Ultimate cron
● Elysia cron
Ambos son dos módulos muy parecidos que hacen más o menos
lo mismo, he usado indistintamente ambos. La única diferencia
es que Ultimate Cron si tiene una versión pública para Drupal 8.
Otro módulo interesante es Cron Debug, si tenemos problemas
al ejecutar el Cron, es nuestro módulo. Solo esta para D7.
@SiteGround_ESwww.siteground.es
#SGwebinar
16. Cron: modo activo
Ejecutar los procesos de Cron usando el modo activo.
Ejecutar los procesos de Cron desde el propio servidor
Utilizar un servicio externo al servidor para que lleve a cabo esta
ejecución:
● https://anturis.com/
● https://www.statuscake.com/
● https://uptimerobot.com/
● https://www.pingdom.com/free
@SiteGround_ESwww.siteground.es
#SGwebinar
17. Error 404
Cuando Drupal devuelve un 404 genera una entrada en la tabla
de caché, si todo va bien, y tenemos funcionando correctamente
las tareas de Cron no dará problema.
Pero si no tenemos bien configuradas las tareas de Cron y
alguien para atacar nuestra web nos genera peticiones erróneas
puede saturar la tabla de caché, y puede llegar a provocar que
no se regenere correctamente las tablas de caché.
@SiteGround_ESwww.siteground.es
#SGwebinar
18. Error 404
En el archivo settings.php Drupal permite generar una configuración
para devolver una página de error rápida, y sencilla.
Si queremos una página de error configurable por el usuario usamos
uno de estos módulos:
● Reuse cached 404
● Fast 404
● Static 404
@SiteGround_ESwww.siteground.es
#SGwebinar
19. Archivos estáticos
El core de Drupal gestiona bien los recursos de js y de css, pero para
una mejor gestión usamos Advanced CSS/JS Aggregation
La ventaja de usarlo son:
● Guarda en bbdd el nombre de los archivos.
● Unifica y comprime los archivos.
@SiteGround_ESwww.siteground.es
#SGwebinar
20. Archivos estáticos
El módulo CDN mejora el rendimiento de la página
web con descargas paralelas usando subdominios
para descargar los estáticos (img.dominio.com,
css.dominio.com, js.dominio.com)
Al mejorar el rendimiento de la página web mejora
también el SEO.
@SiteGround_ESwww.siteground.es
#SGwebinar
21. Archivos estáticos
Una alternativa es alojar nuestros archivos estáticos
en un servicio externo como el que ofrece Amazon
WebService llamado S3, existe un módulo en Drupal
que nos permite conectar nuestro directorio files con
Amazon.
Cuando cargamos una web los archivos son servidos
desde Amazon, se descargan muy rápido.
@SiteGround_ESwww.siteground.es
#SGwebinar
22. Módulos
Las personas que empiezan
con Drupal suelen tener el
mal del buffet libre.
@SiteGround_ESwww.siteground.es
#SGwebinar
23. Módulos
Si es posible tenemos que usar Apc (5.6) o OpCache
(7.x).
@SiteGround_ESwww.siteground.es
#SGwebinar
24. Módulos
Vamos a ver con detalle algunos datos de las paǵinas
de módulos, voy a usar como ejemplo la página del
módulo https://www.drupal.org/project/s3fs
@SiteGround_ESwww.siteground.es
#SGwebinar