Instalar DRUPAL en raspberry pi 1

He estado unos días ocupado en una prueba de instalar DRUPAL en una raspberry, con objeto de poner utilizar un pequeño servidor para ir probando este sistema de gestor de contenidos para una pequeña asociación.

El motivo de utilizar una Raspberry pi 1 (tipo B) es por los bajos recursos que utiliza e inicialmente la carga no será muy elevada, permite ir tomando el pulso a este sistema.

El material completo es:

* Rasberry pi 1, viene un poco justa pero de momento es la que usaremos.

* Fuente de alimentación para ella

* Un adaptador wifi usb compatible, yo usaré uno viejo que compré de segunda mano por un par de euros. http://elinux.org/RPi_VerifiedPeripherals#USB_Wi-Fi_Adapters

* Una tarjeta SD normal o micro sd con un adaptador.

* f3write y f3read, para comprobar la tarjeta, normalmente tenemos tarjetas de sobra, algunas funcionan mejor que otras, con esta aplicación podremos elegir la más apropiada.

* La imagen de Raspbian lite, con esta es suficiente, salvo que quiera entorno gráfico, que no será el caso.

Lo primero es poner a descargar la última imagen de Raspbian. https://www.raspberrypi.org/downloads/raspbian/

Mientras puedes verificar la tarjeta sd, con f3.

Descargada la imagen comprobamos que está correcta con el sha1sum, por ejemplo

10-02

10-01  Nos devolverá una cadena, deberá coincidir con la indicada para la imagen descargada, como es este caso.

En septiembre de 2017 se publicó la nueva versión de Raspbian, denominada stretch, donde la comprobación se hace con SHA256SUM

Ahora extraemos la img del zip, se puede utilizar la aplicación gráfica de archivadores, si vas a copiar la imagen a la sd desde la terminal con el comando dd es mejor poner una ruta fácil.

10-03

Yo usaré para copiar la imagen la aplicación de discos.

10-04

Con la aplicación Discos abierta, seleccionamos el dispositivo donde vamos a grabar la imagen, ES MUY IMPORTANTE YA QUE BORRARÁ LOS DATOS existentes seleccionar el dispositivo correcto.

En el menú de la aplicación pulsamos “restaurar imagen de disco…” y seleccionamos la imagen de raspbian, en los links dejo la web con el proceso detallado, aunque no es difícil.

Este proceso pedirá la contraseña de root.

10-05

Al terminar este proceso nos habrá creado varias particiones e instalado el sistema en la sd.

Buscamos la partición de 1,3 gb (para la versión lite) y dentro la siguiente ruta para abrir el fichero interfaces, para configurar la red wifi, que así no tendremos que conectarnos por cable.

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Al final del archivo añadimos:

network={
    ssid="NOMBREDERED"
    psk="CONTRASEÑA"
}

Guardamos y salimos.

***** Versión antiguas *****

/etc/network/intefaces

Recién instalado auto lo

iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0

iface wlan0 inet manual

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1

iface wlan1 inet manual

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Modificado
auto lo
iface lo inet loopback

iface eth0 inet dhcp

allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
        wpa-ssid "mi SSID"
        wpa-psk "mi password" #caracteres ascit

Utilizaré la terminal ya que es necesario ser root para modificarlo

10-06
10-07

La wpa-psk puesta es un ejemplo, no se corresponde con la real de esta red.

Hacemos los cambios, guardamos con ctrl+o, confirmamos con enter y salimos con ctrl+x.

***** fin de las versiones antiguas de incluir la red wifi ****

Ahora necesitamos activar el servidor ssh de la Raspberry.

En las últimas versiones es suficiente con crear un archivo en blanco en la partición boot llamado ssh.

En versiones más antiguas el proceso era el siguiente:

Vamos a la capeta /etc/rc2.d, modificamos el nombre del fichero K01ssh a S01ssh, el número puede ser diferente.

10-08
Ahora modificamos el siguiente fichero para permitir conectarse al root con ssh

/etc/ssh/sshd_config y modificar la entrada “PermitRootLogin”  para que ponga “PermitRootLogin yes”, luego lo dejamos en no por seguridad.

Salimos de la terminal, expulsamos y sacamos la tarjeta, ahora la pinchamos en la raspberry pi.

Comprobamos que tenemos todo puesto; tarjeta, usb wifi y conectamos a la red electrica. No necesitaremos ni monitor ni cable de red.

Nos conectamos a la raspberry mediante ssh, donde pi es el usuario y la ip es donde está conectada la raspberry. Para conocer la IP de la raspberry podemos hacerlo conectándonos con el navegador de internet a router y ver la ip asignada, también podíamos haber fijado una ip cuando hemos modificado el fichero “interfaces” pero de esta manera falla menos la primera conexión, después ya podremos hacer ajustes más finos. La contraseña antes de modificarla es raspberry

10-09
La primera vez que se inicia aparece una pantalla azul para la configuración, si no aparece o hemos tenido que reiniciarla (sin ponernos conectar sin monitor) la configuramos ejecutando

10-10
10-11
Imprescindible:

1- cambiar la contraseña

2- cambiar las opciones de localización (idioma, codificación caracteres, zona horaria…

3- opciones avanzadas – > expandir la instalación para que ocupe toda la tarjeta sd (recordemos que instalamos en una tarjeta de 8 gbs una imagen de 1,3 y hasta después de expandir la partición ese solo será el espacio que tendremos.

Reiniciar y volverse a conectar.

Eliminamos las claves públicas y privadas que vienen con la iso para generar unas nuevas

sudo rm /etc/ssh/ssh_host_* && sudo dpkg-reconfigure openssh-server

Cerramos la conexión con

exit

Eliminamos las claves de nuestro cliente

ssh-keygen -R 192.168.1.185

y nos volvemos a conectar.

Actualizamos con sudo apt-get update && sudo apt-get upgrade

Instalación del servidor web.

En la nueva versión de septiembre ya está disponible en los repositorios la versión php7 para esta nueva versión no siendo necesario añadir el repositorio siguiente.

Cuando tenemos un equipo potente Apache suele ser la primera opción, cuando tenemos un equipo como la raspberry necesitamos uno que consuma menos recursos, por eso opto por instalar php7+nginx 1.9, pero php7 no tiene versión estable, de manera que debemos añadir la rama de desarrollo en los repositorios de la raspberrypi.

Abrimos el archivo de repositorios con:

sudo nano /etc/apt/sources.list

y añadimos la siguiente línea:

deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi

Para dar prioridad a la rama estable sobre la desarrollo añadimos un fichero de preferencias:

sudo nano /etc/apt/preferences

Con el siguiente contenido

Package: * Pin: release n=jessie Pin-Priority: 600

Actualizamos con

sudo apt-get update

Nota que puedes ver la versión publicada que está disponible y su prioridad con

sudo apt-cache policy nombre del paquete

10-12
Y ahora instalamos la versión php7 con

pi@raspberrypi:~ $ sudo apt-get install -t stretch php7.0 php7.0-curl php7.0-gd php7.0-fpm php7.0-cli php7.0-opcache php7.0-mbstring php7.0-xml php7.0-zip

Al terminar comprobamos que está instalado correctamente con

php -v

Ahora instalamos el servidor web

10-13
Al terminar desde el navegador del ordenador podemos poner la dirección ip de la raspberry pi, deberíamos ver algo parecido a esto

Pero sí instalamos php, el servidor y mysql

Para php:

sudo apt-get install php7.0 php7.0-curl php7.0-gd php7.0-fpm php7.0-cli php7.0-opcache php7.0-mbstring php7.0-xml php7.0-zip

El paquete php7.0-fpm es debido a que se instala nginx

El servidor con:

sudo apt-get install nginx

Tras la instalación del servidor lo iniciamos

sudo /etc/init.d/nginx start

vemos en el navegador, tras poner la ip,

10-14

Este archivo se encuentra en /var/www/html

Se puede cambiar en el archivo /etc/nginx/sites-avalible

Algunos comandos importantes de nginx son:

nginx -s quit

nginx -s stop

nginx -s reload

Pero todavía falta por configurar el servidor web.

Primero con

pi@raspberrypi:~ $ sudo nano /etc/php/7.0/fpm/pool.d/www.conf

vemos los datos de usuario y grupo por si es necesario cambiarlos o la ruta de “listen=”

user = www-data

group = www-data

listen = /run/php/php7.0-fpm.sock

Luego con

sudo nano /etc/nginx/sites-enabled/default

comentamos la tercera línea de este bloque al no tener pensado utilizar ipv6

10-15

Añadimos index.php

10-16

El siguiente bloque descomentamos algunas líneas

10-17
Guardamos, salimos y recargamos la configuración

sudo /etc/init.d/nginx reload

Debería devolver un Ok sino el siguiente comando nos puede ayudar a buscar el fallo

tail -f /var/log/nginx/error.log

10-18

Para reforzar la seguridad puedes editar php.ini, descomentando cgi.fix_pathinfo y poner 0

sudo /etc/php/7.0/fpm/php.ini

Ojo con la ruta, ya que cambia respecto a la anterior versión más extendida, la 5 → /etc/php5/fpm/php.ini

10-19

Volvemos a recargar y a obtener el ok

10-20
Probamos la configuración php creando un fichero php que nos mostrará info del sistema con

sudo nano /var/www/html/index.php

escribimos

<?php echo phpinfo(); ?>

Guardamos, salimos y refrescamos el navegador. Nos debería mostrar algo como esto

10-21
Finalmente instalamos mysql como base de datos

sudo apt-get install mysql-server php7.0-mysql -y

Nos pedirá una contraseña para el usuario root de la base de datos. Si no lo hace cuando ejecutemos el siguiente script la ponemos.

sudo mysql_secure_installation

Recargamos el servidor web

sudo /etc/init.d/nginx reload

Al terminar entramos como root en mysql para crear un usuario con todos los permisos en una base de datos específica para Drupal. La captura es de la versión anterior de mysql cuando no pedía sudo antes de mysql, ahora sí debemos poner sudo mysql -u root -p

10-22
Cada instrucción termina en ;

mysql> create database drupal;

mysql> CREATE USER drupaluser@localhost IDENTIFIED BY ‘password-para-wpuser’;

mysql> GRANT ALL PRIVILEGES ON drupal.* TO drupaluser@localhost;

FLUSH PRIVILEGES; recomiendo no ejecutar esto, aunque se ve mucho.

quit;

Llega el momento de instalar Drupal.

Nos ubicamos en /var/www/html y descargamos

cd /var/www/html

sudo wget http://ftp.drupal.org/files/projects/drupal-8.3.7.tar.gz

comprobar cual es la última versión estable en el momento de la descarga

Extraemos el contenido comprimido

sudo tar xvzf drupal-8.3.7.tar.gz

cambiamos el nombre a la carpeta descomprimida donde se ha extraído

sudo mv drupal-8.3.7 drupal

utilizamos la configuración por defecto en nuestro site

cd drupal/sites/default

sudo cp default.settings.php settings.php

Le cambiamos los permisos para que durante la configuración pueda ser escrito

sudo chmod a+w settings.php

En el navegador escribimos la dirección de nuestro servidor

192.168.1.185/drupal/

y nos debe aparecer algo como lo siguiente

10-23
Si queremos español tendremos que crear manualmente los directorios que nos indique en la ayuda de drupal (en la web o en el directorio drupal/core/INSTALL.txt), si queremos mantener en inglés continuamos sin el siguiente paso.

En la terminal conectados a la raspberry pi, según las instrucciones para esta versión, creamos los siguientes directorios (files/translations, la -p sirve para crear los directorios que falten, los “parents”) y vamos a ello

sudo mkdir -p /var/www/html/drupal/sites/default/files/translations

cd /var/www/html/drupal/sites/default/files/translations

y descargamos de la web de drupal la versión del idioma que queramos

sudo wget http://ftp.drupal.org/files/translations/8.x/drupal/drupal-8.4.0-rc1.es.po

Si tenemos que descargar el idioma manualmente aprovechamos para cambiar los permisos a la carpeta files

sudo chmod a+w /var/www/html/drupal/sites/default/files/

10-24
Ya lo tenemos en español lo siguiente es tan solo seguir el asistente.

10-25
Después del punto de instalar sitio se me quedó pillado, pulsé el botón refrescar y continuó con la configuración de las traducciones, quizás si no se instalan otros idiomas no pase.

En el punto de configurar sitio ponemos los datos del propio sitio.

Volvemos a cambiar los permisos del fichero de configuración, ahora de solo escritura para root.

sudo chmod go-w /var/www/html/drupal/sites/default/files/

sudo chmod go-w settings.php

Borramos el fichero info.php

sudo rm /var/www/html/index.php

A mi me gusta reiniciar el equipo cuando se hacen cambios tan importantes como estos.

Accedemos a nuestro site.

10-26
Ya podemos comenzar a añadir contenido, que es la parte más complicada.

Fuentes:

https://www.raspberrypi.org/documentation/installation/installing-images/linux.md

http://www.pildoricasdigitales.com/grabar-imagen-de-raspbian-desde-ubuntu/

http://nideaderedes.urlansoft.com/2014/01/15/raspberry-pi-como-conectarnos-via-ssh-sin-monitor/

https://www.raspberrypi.org/documentation/remote-access/web-server/nginx.md

http://www.juanjosevalera.com/archivos/instalando-y-configurando-nginx-en-raspberry-pi/

http://www.microordenadores.com/tutoriales/nginx-php-mariadb-raspberry-pi/

https://www.raspberrypi.org/learning/lamp-web-server-with-wordpress/worksheet/

https://blog.deinventos.com/es/servidor-wordpress-con-la-raspberry-pi/

http://unixetc.co.uk/2013/09/25/install-wordpress-blog-on-raspberry-pi/

https://dbahire.com/dejad-de-usar-flush-privileges/

4 comentarios en “Instalar DRUPAL en raspberry pi 1

  1. Hola gracias por el contenido, todo me ha funcionado hasta configurar el lenguaje.
    Me sale el siguiente mensaje:

    Problema de requisitos
    Errores encontrados
    EXTENSIONES PHP
    Desactivado
    Drupal necesita activar las extensiones PHP de la siguiente lista (consulte la página de requisitos del sistema para más información):
    dom
    gd
    SimpleXML
    xml

    Revise y no tengo estas extensiones instaladas, como puedo solucionar?
    Saludos

    Me gusta

    1. Parece que faltan algunas dependencias de php, si puedes comprobar la versión que tienes instalada y añadir las extensiones que faltan con sudo apt install php7.0-gd php7.0-xml
      si la versión 7 la que tienes instalada.
      Luego reinicia el servicio web

      Me gusta

  2. Intaladas las extensiones PHP faltantes.
    Sin embargo continua este error en la configuración de drupal:

    FUNCIONALIDAD DE BASES DE DATOS
    Desactivado
    Su servidor web parece que no admite ninguna extensión de base de datos común de PDO. Compruébelo con su proveedor de alojamiento para ver si admite PDO (PHP Data Objects) y si ofrecen alguna base de datos que funcione con Drupal.

    Estuve leyendo que hay que instalar php5 pero me da este error:

    E: Package ‘php5-common’ has no installation candidate
    E: Package ‘php5-mysql’ has no installation candidate

    Nuevamente agradezco si me puedes dar una mano
    Saludos

    Me gusta

  3. Indica también los siguientes mensajes:

    Advertencias encontradas
    RANGO DE FECHAS LIMITADO
    Su instalación de PHP tiene un rango de fechas limitado.
    Se está ejecutando en un sistema en el que PHP se compila o se limita a utilizar enteros de 32 bits. Esto limitará el rango de fechas y marcas de tiempo a los años 1901-2038. Lea acerca de las limitaciones de PHP de 32 bits .

    OK
    SERVIDOR WEB
    nginx/1.14.2
    PHP
    7.3.11-1~deb10u1
    EXTENSIONES PHP
    Activado
    OPCODE CACHING DE PHP
    Activado
    GENERACIÓN DE NÚMEROS ALEATORIOS
    Exitoso
    LÍMITE DE MEMORIA PHP
    256M
    SISTEMA DE ARCHIVOS
    Se puede escribir (método público de descarga)
    BIBLIOTECA UNICODE
    Extensión Mbstring de PHP
    ARCHIVO DE CONFIGURACIÓN
    El archivo ./sites/default/settings.php existe.
    ARCHIVO DE CONFIGURACIÓN
    El archivo %file tiene permisos de escritura.

    Me gusta

Deja un comentario