Insta·lant Drupal 10 a la Raspberry Pi 4 amb Raspbian, Nginx, PHP i MariaDB

 Insta·lant Drupal 10 a la Raspberry Pi 4 amb Raspbian, Nginx, PHP i MariaDB

En aquest article explique els passos que he fet per tal de tenir instal·lada la última versió de Drupal 10 en una Raspberry Pi 4 amb 8 GB de RAM i tots els requeriments tècnics per a que ens funcione correctament.

Si estàs interessat en instal·lar Drupal 10 a una Raspberry i ja coneixes un poc com funciona aquesta placa, mira't primer la última part d'aquest article, les concusions finals, perquè el resultat per a mi és totalment satisfactori i et puc dir que no hi ha color en muntar-te un servidor amb Raspberry Pi 2 o 3, i ara muntar-ho en la Raspberry Pi 4, és una passada el rendiment i les capacitats, la veritat. Éstic més que content.

Comencem amb el hacking. Com sempre, primer de tot actualitzarem les fonts dels paquets i el sistema:

sudo apt update
sudo apte upgrade

I ara ja podem donar-li canya i instal·lar el programari necessari.

INSTAL·LACIÓ DEL SERVIDOR WEB NGINX

Insta·larem el servidor web Nginx amb:

sudo apt-get install nginx

Ara instal·larem PHP 8.0 amb:

sudo apt-get install php8.0-common php8.0-cli php8.0-mysql php8.0-fpm php8.0-gd php8.0-curl php8.0-bz2 php8.0-opcache php8.0-zip php8.0-xml

Podem saber els mòduls que tenim instal·lats amb php -m:

$ php -m

Recorda activar-los des del fitxer de configuració /etc/php/8.0/fpm/php.ini

Ara editem /etc/nginx/sites-enabled/default i en la línia on diu:

index index.html index.htm index.nginx-debian.html;

la modificarem i la deixarem així per tal d'acceptar pàgines amb PHP:

index index.html index.htm index.php;

Ara, tornem a editar el fitxer /etc/nginx/sites-enabled/default i on diu:

#location ~ \.php$ {
# include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
# fastcgi_pass unix:/run/php/php7.4-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}

Descomentarem un parell de línies i canviarem la versió del PHP i quedarà així:

location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}

Val, ara ja tenim la part "mare" o inicial d'Nginx configurada per a que accepte HTML i PHP. En breu configurarem ja els distints projectes web, cada projecte amb la seua configuració, el seu domini web, el seu certificat SSL, etc.

Reiniciem Nginx i provarem si ens funciona tot bé:

sudo /etc/init.d/nginx restart

Escriu http://IP_de_la_Raspberry_Pi_4 i has de veure la pantalla inicial d'Nginx. Continuem ara amb el servidor de bases de dades.

INSTAL·LACIÓ DEL SERVIDOR DE BASES DE DADES
Instal·larem el servidor de base de dades MariaDB:

sudo apt-get install mariadb-server

I ara li donarem una contrasenya a l'usuari administrador, tant des de la màquina com especificant el servidor:

$ sudo mysqladmin --user=root password 'la_teua_contrasenya'
$ sudo mysqladmin -h localhost --user=root password 'la_teua_contrasenya'

Ara crearem la nostra bbdd de proves:

MariaDB [(none)]> CREATE DATABASE drupal1_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected (0.001 sec)

Li donem tots permisos a l'usuari "usuari":

MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal1_db.* TO 'usuari'@'localhost' IDENTIFIED BY 'la_teua_contrasenya';
Query OK, 0 rows affected (0.003 sec)

Executem els permisos i ja ho tenim:

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.001 sec)

Editem el fitxer de configuració de MariaDB /etc/mysql/mariadb.conf.d/50-server.cnf i a la configuració del bind-address, on diu 127.0.0.1 ho canviarem per tal de poder connectar-nos al servidor des de qualsevol màquina i no nomès des del servidor propi:

bind-address = 0.0.0.0

I on diu max_allowed_packet ho deixarem habilitat i modificarem 1G per 64M. Ha de quedar així:

max_allowed_packet = 64M

Reiniciem el servidor de bases de dades MariaDB amb:

$ sudo systemctl stop mariadb
$ sudo systemctl start mariadb

Ara ja tenim Nginx, PHP i el servidor de bases de dades funcionant, aleshores ja podem passar a instal·lar Drupal 10, comencem!

PREPARACIÓ DE L'ENTORN DE LA WEB

Anirem a la web oficial de Drupal i descarreguarem la última versió de Drupal 10 al nostre equip:

Mourem el Drupal al directori arrel d'Nginx amb:

sudo mv /home/joan/drupal-10.0.9.tar.gz /var/www/.

Descomprimirem el paquet tar.gz de Drupal amb:

sudo tar xvfz drupal-10.0.9.tar.gz

I ara deixarem el Drupal en la carpeta que vullguem. Jo ficaré "joancatala.net" en el meu cas per a començar esta prova:

$ sudo mv drupal-10.0 joancatala.net

Ara crearem el fitxer joancatala.net en la ruta /etc/nginx/sites-available que contindrà la configuració d'aquesta nova web:

$ sudo touch joancatala.net

I ficarem la configuració següent:

server {
    server_name joancatala.strangled.net;
    root /var/www/joancatala.net; 

    listen 80;
    listen [::]:80;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        # try_files $uri @rewrite; # For Drupal <= 6
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # In Drupal 8, we must also match new paths where the '.php' appears in the middle,
    # such as update.php/selection. The rule we use is strict, and only allows this pattern
    # with the update.php front controller.  This allows legacy path aliases in the form of
    # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
    # any paths like that, then you might prefer to use a laxer rule, such as:
    #   location ~ \.php(/|$) {
    # The laxer rule will continue to work if Drupal uses this new URL pattern with front
    # controllers other than update.php in a future release.
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    location ~ ^/sites/.*/files/styles/ { # For Drpal >= 7
        try_files $uri @rewrite;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

I com sempre a Nginx, caldrà habilitar aquest nou projecte web d'Nginx ficant-ho al directori sites-enabled:

sudo ln -s /etc/nginx/sites-available/joancatala.net /etc/nginx/sites-enabled/

I ara passarem el test de la configuració del servidor Nginx per veure que no hi ha errors i resetejaem el servei:

nginx -t
systemctl restart nginx

Doncs bé, ja podem començar la instal·lació de Drupal 10 apuntant a aquest domini sobre la Raspberry Pi 4.

INSTAL·LACIÓ DE DRUPAL 10

Comencem amb la instal·lació, i ja veurem la primera pantalla on podem seleccionar la llengua. A mi m'ha agafat la llengua internacional esperanto però podem seleccionar català sense cap problema, encara que recomane instal·lar Drupal en la llengua del projecte (anglès) i ja més tard instal·larem totes les llengües que necessitem.

Themes nous amb la última versió de Drupal 10

En el segon o tercer pas ens diu que necessita permissos d'escriptura a les carpetes files i al fitxer de configuració settings.php on escriura el nom del servidor, la base de dades i les credencials.

Aleshores, crearem el directori files i li donarem tots els permisos per a escriptura:

sudo mkdir ./sites/default/files
sudo chmod 777 ./sites/default/files
cp ./sites/default/default.settings.php ./sites/default/settings.php
sudo chmod 777 ./sites/default/settings.php

I en pocs minuts ja tindrem Drupal completament instal·lat. Ací tens una captura de pantalla mostrant la part dels temes en la versió 10, el tema Olivero per al frontend i el tema Claro perà la part d'administració:

Themes nous amb la última versió de Drupal 10

I això és tot, ja tenim Drupal 10 amb PHP amb MariaDB i amb Nginx preparat per a tenir diferents projectes amb diferents dominis, tot preparat i tot correcte, la veritat.

RENDIMENT, EXPERIèNCIA D'úS I CONCLUSIONS

Fa temps vaig instal·lar un servidor web de característiques similars a una Raspberry Pi 2 i funcionava bé però es notava que estaves en un sevidor no massa potent, amb un processador ARM que pot ser li faltava una espenteta de vegades, i no ho dic per la connexíó a internet sinó que també passava gestionant eixes webs amb Drupal des de la mateixa LAN a casa. Però ara, amb la Raspberry Pi 4 amb 8 GB de RAM et puc confirmar que açò és una altra lliga, ara sí que sí.

Les possibilitats són infinites ara amb un servidor web amb Drupal en aquesta màquina tant xicoteta i potent. Definitivament vaig a moure'm alguns dels meus projectes de Drupal en la Raspberry i deixar de pagar hostings comercials per estalviar-me alguns dinerets, ja que veig que el rendiment és pràcticament el mateix, la velocitat de connexió era fin ara 300 MB de fibra però ara el meu operador em millorarà la fibra fins a 1 GB (i per 5 euros menys en la factura, curiòs) aleshores la velocitat de càrrega de les pàgines és molt bona.

I què dir del manteniment i de la seguretat? Doncs en breu li ficaré un certificat SSL i ho explicaré ací en la meua web, i el sistema de còpies de seguretat el puc fer molt més còmode aprofitant els dos discs de 4 TB que tinc a la Raspberry Pi 2 amb FreeBSD 13 des de fa quatre anys 24x7 i que m'ha donat moltes satisfaccions professionals i personals.

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.

Utilitats

NAVEGACIÓ SENSE RATOLÍ

- Tab següent enllaç.
- Shift+Tab anterior enllaç.
- Enter activa l'enllaç.
- Alt+esquerra anar arrere.

CONTRAST DE COLORS

Accessibilitat - Color Negre
Accessibilitat - Color Groc
Accessibilitat - Color Verd

Accessibilitat - Color Blau
Accessibilitat - Color Crema
Accessibilitat - Color Blanc

 

PORTADES ALTERNATIVES