¿Como instalar Drupal? Principales complicaciones y cosas a tener en cuenta

Portada del podcast Drupalízate
Drupalízate es un podcast semanal creado por mí, donde hablo sobre desarrollo web basado en Drupal.
El contenido central es resolver las típicas dudas que pueda tener alguien que tiene o quiere tener una web en Drupal.
Aparte de resolver dudas de "clientes", también se habla de tips, recomendaciones y buenas prácticas para el Developer que recién empiezan en este mundo.
Audio y notas del episodio

En este episodio te comento como se ha de instalar un Drupal, porque usar composer para descargar Drupal e instalarlo, y cuáles son las buenas prácticas para configurar cosas luego de la instalación.

 

Url oficial para descargar Drupal: https://www.drupal.org/download

Transcripción automática de este episodio de audio (puede contener errores)

 Hola, aquí otra semana más en Drupalizate, este podcast donde te hablo de cosas Drupal. Esta semana, viendo lo que temas deseo en Google se busca más de temas Drupal, una de las que se busca más es justamente cómo instalar un Drupal, o cómo descargar e instalar un Drupal ya sea en local o en un servidor. Así que intentaré responder en este episodio de la forma menos técnica o para gente más básica que no haya instalado nunca un Drupal, que sepa los pasos más o menos cuáles han de seguir y las cosas a tener en cuenta, que son los típicos fallos que veo de gente que no sabe cómo se instala. Primero de todo, Drupal sí es más complicado de instalar que otros CMS como puede ser por ejemplo el archienemigo que es WordPress, que es bastante más simple de instalar. Eso no significa que sea ni mejor ni peor, sino que bueno, es para distintos tipos de proyectos y tiene sus cosas buenas y sus cosas malas, depende de para qué tipo de proyecto estés usando cada tecnología. Vamos por el principio. Digamos que supongamos que lo queremos instalar en un servidor compartido, es una web barata, una web pequeña que queremos tener un hosting barato como es un hosting compartido. Imaginemos que es una web empresarial de quiénes somos y dónde estamos. Estas webs tienen cuatro páginas, que una es el quiénes somos, otra es servicios y otra es dónde estamos. Y ya está. O supongamos que es un blog con poco contenido y no es multidioma ni nada complejo, digamos, es una web bastante simple. Eso se puede alojar perfectamente en un hosting compartido, aunque siendo un Drupal yo no recomiendo que sea un hosting compartido, se puede y tengo algún cliente que lo tiene en hosting compartido, pero bueno. Suponiendo que es un hosting compartido, en muchos hostings compartidos hay lo que se llaman autoinstaladores, sobre todo para temas de web, pero en Drupal algunos hostings también lo dan, te permiten autoinstalar un Drupal. Yo no recomiendo usar autoinstaladores. ¿Por qué? Porque sí, es muy fácil, es darle a un botón y esperar unos minutos y ya está todo hecho ya, pero no sabes lo que está haciendo por detrás, no sabes cómo lo está instalando ni qué te está instalando y a futuros si has de mover la web o actualizar la web, que algún día tendrás que actualizar, digo yo, está bien que sepas qué se ha hecho por detrás. A ver, si digamos desde el punto de vista de si es un cliente final, a ti te importa poco cómo se ha hecho la web, pero desde el punto de vista de un desarrollador debería menos saber cómo se instala un Drupal. Este podcast va enfocado a desarrolladores, no a gente que quiera instalar su propia web y gestionarla él mismo y después no preocuparse de actualizar la web, ¿vale? Esto he dejado claro. Dicho esto, autoinstaladores no los recomiendo. Algunos para Drupal, la mayoría para otros CMS, pero bueno, ahí están. Después digamos que la forma más recomendable es usar el Compouder. Vamos por pasos. ¿Dónde puedo descargarme una copia de Drupal o dónde está la documentación, digamos, oficial de cómo se instala un Drupal? Si vamos a la web drupal.org, que es la oficial, y en concreto a la URL drupal.org barra download, es la página oficial de descargas de Drupal. Allí verás que te recomienda usar Compouder. Y además si no quieres usar Compouder hay otra opción que es básicamente descargarte un fichero comprimido con todo, un fichero zip básicamente. Muy similar a cómo funciona web, es que te bajas un zip con todo, lo descomprimes en el directorio de donde tenga que estar y ya está, ya tienes el código del Drupal allí puesto. Falta después ejecutar la instalación. Pero si te has fijado en la web oficial, especifica de que se recomienda mucho usar Compouder, porque aparte de esto, Compouder, digamos que pone un nivel de dificultad más alto en la instalación. Hace falta que sepas qué es Compouder y cómo usarlo. Por eso es justamente Drupal es más complejo de usar que otros CMS porque hace falta que también aprendas otras tecnologías como puede ser Compouder. Compouder es un gesto de paquetes. Eso significa de que nos facilita la vida a los desarrolladores cuando queremos instalar o actualizar paquetes de código que ha hecho otra gente, por ejemplo, sean módulos contribuidos de Drupal o librerías que usan estos módulos. Cuando se intenta actualizar un módulo, Compouder va a buscar si hay una versión nueva de ese módulo, si la hay se la va a descargar y si ese módulo requiere versiones más nuevas de los módulos que son sus dependencias, también va a intentar instalarlas. Con lo cual con un solo comando de Compouder puedes llegar a actualizar lo que es el code, módulos y sus dependencias. Lo que nos facilita mucho la vida a mantenimiento de webs. Por eso es muy recomendable que tu Drupal use Compouder para instalación y mantenimiento de actualizaciones. Si usas el formato zip y básicamente es todo manual, actualizar una web que no está hecha con Compouder es morirse de asco, cuesta mucho más trabajo y es mucho más costoso, muchas más horas. Se han dado cuenta de convertir la web a formato Compouder y actualizarla allí y después subirlo otra vez. Una vez está todo en formato Compouder. Así que mi recomendación desde un inicio es instalarlo todo con Compouder. Digamos que con los autoinstaladores que he comentado antes, la mayoría, o la mayoría de los que he probado yo, lo instalan usando un zip. Se descarga en el zip que está en la web oficial o una copia que tienen ellos de hace un mes o X tiempo y descomprime ese zip. Y ya está. Con lo cual las futuras actualizaciones o las futuras instalaciones de módulos son más costosas. Se han de hacer manualmente. Así que por eso también son los motivos por los que descarto el tema de autoinstaladores. Bueno, llegados a este punto, ya has ido a dupal.org.com.au. Has de ejecutar los comandos que te pone ahí de Compouder, que básicamente son dos comandos para descargarse todo el código. Estoy suponiendo que en tu local o en el servidor tienes Compouder instalado, que tienes PHP, porque Dupal requiere PHP, que a todo esto requiere PHP a poder ser la versión, digamos, de las últimas más estables, que ahora mismo debería ser la versión 8.0 o 8.1. Y ya no deberías tener a día de hoy una versión de PHP 7 o 7.1 o 7.4, porque están deprecadas básicamente. Pero esto, tienes que tener PHP, tienes que tener o un Apache o un NGINX, y tienes que tener un MySQL, que es el estándar, o sea, se pueden poner otras fases de datos, pero digamos que lo normal es un MySQL o MayaDB, que sería el sustituto. Estos requisitos de PHP, Apache y MySQL o MayaDB básicamente son los mismos que tienes, por ejemplo, en WordPress o en muchos otros CMS. Hay muchos CMS que se basan en PHP y básicamente tienen los mismos requisitos. Tener un PHP actualizado, tener un MySQL actualizado y tener un Apache o un NGINX, que es el servidor de Frontend que va a devolver el HTML al usuario final. Como digo, estoy suponiendo que esto lo tienes instalado en tu local porque usas Docker o porque usas un Wamp o un Champ o alguna herramienta de estas, porque por ejemplo ya has trabajado antes con WEPES o digamos que ya tienes un servidor con todo esto instalado porque es un hosting compartido que te viene con todo esto o porque tienes un servidor dedicado o un WPS virtual que también tiene todo esto instalado. Así que sabes en qué directorio has de ejecutar el Composer para que se baje todo el código allí. Así que ya tenemos el servidor configurado y el código bajado. Ahora hace falta hacer la instalación de Rupal para que, digamos, Rupal configure la base de datos y cree sus tablas y sus contenidos en base de datos. ¿Cómo se hace esto? En Rupal o lo hacemos desde línea de comandos, que digamos que es la forma más experta y más automatizada de hacerlo, pero bueno, en esta ocasión lo haremos todo desde interfaz web. Cuando la base de datos está vacía y en Rupal en el setting no se ha especificado nada, te va a reaccionar básicamente a la URL del instalador, donde te va a salir una página en plan Windows de siguiente, siguiente, siguiente instalado. Así que es muy fácil de instalar en este sentido. El problema, primero de todo, hace falta que tengas permisos para escribir en un fichero, que es el fichero settings, que es donde se va a guardar el nombre de la base de datos y la contraseña, básicamente, entre otras cosas, pero digamos que estos son los más importantes. Si Rupal, o sea, si la web, el PHP de la web no puede escribir en este fichero dentro del directorio de Rupal, se va a quejar de que no se puede hacer la instalación. Así que el problema más típico en instalaciones Rupal es el problema de permisos, de que Rupal no puede escribir en este fichero settings.php. Así que lo primero es que le tienes que dar permisos de escritura. No me pongas un 777, que es permisos de escritura para que todo el mundo pueda hacer lo que quiera con ese fichero. Has de ver qué permisos se le ponen al fichero para que sea seguro escribir allí y que no cualquier persona pueda ver lo que se ha escrito allí. Después cuando tengas esto con los permisos correctos, vuelves al navegador, otra vez en la URL de esta instalación que Rupal te redija automáticamente allí. Ya notas al mensajito de que no hay permisos, te permitirá ir al siguiente paso, que básicamente es configurar los datos de la base de datos, que ahí te preguntará el usuario de la base de datos, el nombre, la contraseña, y si quieres poner, por ejemplo, un prefijo en base de datos. En este caso, el prefijo fijo, en base de datos, digamos que lo he usado en muy pocos proyectos, no siempre se falta. Digamos que es por temas de seguridad, a veces sí que es recomendable poner un prefijo distinto a lo que viene por defecto en Rupal, y también si tenemos una base de datos que es compartida por varias webs, podría tener sentido que las tablas tengan su propio prefijo en el caso de que sea en un Rupal. En la mayoría de casos, si tenemos una base de datos únicamente para este Rupal, no tiene sentido poner un prefijo distinto, déjalo que por defecto y ya está. Solo se pone el nombre de base de datos, el usuario y la contraseña. Si está bien puesta, en el siguiente paso, cuando le des clic a siguiente, te va a intentar conectar, si no conecta te va a salir un error de que no se puede, y si sí que ha conectado, ya estás en el siguiente paso y estas credenciales que tú has puesto ya se han escrito en el fichero settings.php, que es el que hace falta tener permisos antes. Y poca cosa más, en los siguientes pasos, Rupal va a intentar instalar automáticamente los módulos del perfil de instalación que ha seleccionado, que esto no lo he comentado. Rupal se basa en perfiles de instalación, por defecto tenemos el minimal y el estándar. Puedes tener que hayas instalado un perfil de formato revista o un perfil gubernamental para hacer webs de ayuntamientos, por si algo, y en la configuración de instalación puedes marcar de que aquí es ese perfil. Digamos que un perfil es una lista de módulos que se van a instalar y configurar con ese perfil. Yo te recomendaría que uses el perfil estándar y que después hagas limpieza. El perfil minimal que hay, básicamente te deja un Drupal muy pelado, sin apenas configuración, y en mi caso de uso yo he aprendido que es mejor hacer un estándar y hacer limpieza de módulos que sé que no voy a usar, como por ejemplo, si es una web que no va a tener comentarios, pues desactivar el módulo de comentarios. O si no voy a usar el módulo shortcuts, pues desactivar ese módulo. Al final, la versión es el perfil estándar, desactivando los cuatro módulos que yo sé que no voy a usar en este proyecto, pues es perfectamente usable. Yo recomiendo estos pasos son los más simples. Hacer una instalación desde interfaz y después desactivar los módulos del perfil estándar que no tengas que usar. Si has llegado hasta aquí, te va a salir una página de que se ha instalado todo correctamente, se ha redigido a la página inicial de este Drupal, que básicamente no tiene nada, o sea, verás que esta web se ve con el tema visual perfecto en Drupal y no tiene contenido, no tiene nada. El siguiente paso sería ese un caso que recomiendo yo, sobre todo si es un tema que no está solo en inglés, sino que está en otro idioma. Normalmente en la configuración de la instalación ya se ha especificado qué idioma querías, pero aún así hay veces de que las daba siguiente y siguiente, has dejado la versión perfecto que es inglés y se ha instalado el Drupal en inglés. O puede ser que aquí has tenido una web en más de un idioma. Así que lo primero sería, una vez logueado en la web, ir a la configuración módulos, allí revisar qué módulos están activos, desinstalos que no vayas a usar y si vas a usar tema de idiomas, activar los módulos correspondientes de por ejemplo traducción de contenidos, traducción de configuraciones y básicamente los módulos de traducciones. Con esto después ir a las configuraciones de las traducciones y especificar o revisar de que sí, sí, el idioma por defecto es español o el idioma que tú quieres tener por defecto en tu web. Quizá quieres tener que por defecto sea catalán y que sea una web multidioma en catalán, español e inglés por poner el ejemplo. Pues verifica de que los idiomas son los correctos. Verifica después de que por ejemplo las opciones regionales de formatos de fecha y que la zona de hallas sea la correcta, que también son los típicos que me encanta webs que no está configurado esto, y después tiene una zona de hallas que no le toca y se muestran las fechas incorrectas en el frontend de la web. Y poca cosa más, con eso tienes un Drupal instalado casi con lo que viene por defecto con el idioma especificado que tú quieras y con las zonas de hallas correctas y usando las fechas en formato correcto. Realmente no hay mucho más. Después estaría el tema de buenas prácticas de si quieres que las configuraciones sean fácilmente exportables. Esto para intentar explicarme, porque esto da para uno o más episodios explicando el tema este, pero digamos que comparado con otros CMS como puede ser webpress, lo normal es que son proyectos más complejos en los que no se trabaja directamente en producción, sino que se trabaja en un entorno local, en la máquina del desarrollador, en este caso imaginad que soy yo, pues en mi portátil, trabaja ya con una copia de la web, hago modificaciones, esas modificaciones se han de subir después a un entorno de desarrollo, o sea un servidor para que alguien compruebe que ahí funciona todo bien, y puede ser que tengamos un entorno de desarrollo, un entorno de preproducción y finalmente el entorno de producción, donde digamos es la web real que todo el mundo ve. Pues imaginemos que el cliente nos pide, que tenemos un listado de que hay 20 items y queremos que se muestren solo 10, o sea 10 nodos, 10 páginas en ese listado, en vez de 20, y que la ordenación sea ascendente o descendente. Es básicamente cambiar el orden y cambiar el límite de ítems que se muestran. Esto por configuración es muy simple de hacer, pero claro, lo tengo que hacer manualmente en local, manualmente en desarrollo, manualmente en preproducción y manualmente en producción final, lo cual es un coñazo, lo cual también es, nuevamente se tardan unas semanas en pasar todos estos servidores y todos los testeos que son desde el punto de vista del cliente. Digamos que cuando finalmente se hace en producción pueden haber pasado semanas y digamos que puede ser que haya despistes de la persona que hace las cosas y haya errores humanos. Como no es todo automatizado y son todo tareas manuales, a menos que lo tengas muy bien apuntado en una libreta en papel y sigas todos los puntos, te puedes dejar alguno. Si es solo un cambio de un listado, pues bueno, son cuatro clicks y poca cosa más. Pero si en vez de esto, imagínate que son 50 cambios de hace un mes entre una cosa y la otra, es fácil de que alguien se deje algo por configurar. Drupal esto lo soluciona, que me piso la lengua perdón, lo soluciona muy fácilmente con la exportación y configuración, importación perdón, de configuraciones. Esto significa de que yo puedo hacer una modificación de una configuración, por ejemplo este listado, reimporto la configuración en mi local, lo subo este código exportado al entorno que corresponda, imaginemos que es desarrollo, y allí reimporto la configuración. Con lo cual toda la misma configuración que yo he modificado de listados, he quedado tipos de contenido, he reordenado los bloques que se muestran en el sidebar, he modificado básicamente cosas en la web, todos esos cambios se van a aplicar de forma automática al importar la configuración en el entorno en el que esté. Esto es muy potente, primero porque nos facilita la vida y nos ahorra mucho tiempo, con lo cual ahorra costes a cliente final, esto que básicamente nos ahorra cometer errores humanos, que esto pasaba en Drupal 7 y sigue pasando en webs de otros CMS. ¿Por qué te cuento todo esto? Porque es muy recomendable que cuando instales un Drupal verifiques de que el módulo de configuraciones, de exportación de configuraciones está activado y que aprendas a usarlo, y que configures el directorio donde quieres que te exporte esta configuración. Por defecto, Drupal te lo va a intentar instalar dentro de such default files, o sea dentro del directorio de ficheros de Drupal, te va a poner un directorio con un hash y te lo va a poner allí. Yo, por conveniencia mía, lo muevo fuera de la raíz, o sea en la raíz del Drupal, pero fuera de lo que es web. O sea, es un directorio en la raíz del Drupal pero que no es visible a nivel de Apache o de NGINX. O sea, a nivel de usuario desde el navegador no va a poder acceder nunca a ese directorio. Y te lo pongo en la raíz porque es más práctico saber que todas las configuraciones están allí y que todo esto puedo tener en el git, que si está en sites default files normalmente esto lo que está dentro de files no se pone en git. Pero bueno, total, de que cuando instales un Drupal verifica tema idiomas, verifica tema configuraciones, aprende cómo funcionan los idiomas y traducciones, si es que tu web ha de tener o no tema de traducciones, y aunque no tenga traducciones, sí o sí recomiendo mucho que aprendas cómo funcionan las exportaciones de configuraciones. Porque si trabajas en una web en local y has de subir cambios en producción, es muy cómodo exportar e importar la configuración entre entornos. Que como digo, esto da para otro episodio para ir más al detalle, pero bueno. Como resumen de todo el episodio de hoy, lo que la gente digamos se lia más es en aprender a usar Composer para llegar al punto de tener la web con la opción de instalación. Y después la gente también se lia mucho con el tema de permisos. Si les cuesta mucho, da los permisos correctos al Settings.php para que Drupal lo pueda instalar. El Settings.php, a ver todo esto, si sigues la documentación oficial, es muy simple y lo ves todo bien. Pero hay gente que no lee la documentación y se pierde porque no tiene permisos, no puedo instalarlo. El Settings.php está en Site Default y ahí hay un fichero que es Settings. Bueno, no hay, lo tienes que crear tú, vas a duplicar el Settings.default. No es complicado para nada, pero bueno, si tienes la documentación, si tienes un poco de ganas, lo puedes acabar instalando. Y nada más que me he alargado mucho para una cosa que es una chorrada como puede ser instalar un Drupal. Espero de que esto sirva para alguien que lo pueda encontrar desde SEO, desde Google, que para eso también lo he hecho este episodio, porque sigo viendo que hay mucha gente que digamos se asusta cuando tiene que instalar un Drupal. Yo cuando tengo que instalar uno básicamente lo hago todo desde línea de comandos, digamos que es un formato más avanzado, más rápido también, me ahorro el tema de ir desde la interfaz, pero esto para la gente que recién empieza digamos que es un nivel que se queda totalmente fuera de alcance. Así que también para que sepas lo que está haciendo Drupal y que te indique paso a paso, es recomendable hacerlo desde la interfaz web, que así ves qué está haciendo en cada paso. Y nada más, hasta la semana que viene y nos vemos. ¡Ciao!

¿Tienes algún proyecto en mente?

Si quieres hacer algo en Drupal tal vez puedas contratarme.

Ya sea para consultoría, desarrollo o mantenimiento de sitios web Drupal.