En aquest article explique com configurar-nos una màquina OpenBSD 7.3 preparada a per als nostres desenvolupaments Drupal 10 i, al final de l'article, faig una ràpida instal·lació.
La màquina OpenBSD 7.3 és la màquina virtual que hem instal·lat prèviament a GhostBSD, i està perfectament preparada per a instal·lar tots els projectes web que necessitem ja que en la pròpia màquina també tenim el servidor MariaDB per a gestionar les bases de dades.
Ja feia temps que no necessitava instal·lar, partint de zero, el sistema operatiu OpenBSD complet amb tots els requeriments necessaris per a Drupal, la última vegada ho vaig fer i redactar ací al meu blog amb data de 10 de juny de 2020 i és que amb OpenBSD 7.3 i amb Drupal 10.1.1 les versions i els requisits han canviat un poc i cal reinstal·lar i actualitzar diverses llibreries.
INSTAL·LACIÓ DEL SERVIDOR WEB NGINX
Instal·lem Nginx amb:
$ doas pkg_add -vi nginx
I afegim a /etc/rc.conf.local l'entrada següent per a que sempre arranque quan iniciem el sistema operatiu:
nginx_flags=""
Si volem, en aquest punt en el que ens trobem podem fer la comprovació del funcionament d'Nginx reiniciant la màquina i escrivint a la terminal lynx 127.0.0.1.
CONFIGURACIÓ DE PHP I DIVERSES LLIBRERIES
A continuació, instal·lem distintes versions de PHP i els requisits de mòduls necessaris per a Drupal. Jo vaig a instal·lar tres versions de PHP, la 7.4, la 8.0 i la 8.2:
$ doas pkg_add -vi php-8.2.5 php-curl-8.2.5 php-gd-8.2.5 php-zip-8.2.5 php-mysqli-8.2.5 php-pdo_mysql-8.2.5 php-8.0.29 php-pdo_mysql-8.0.29 php-curl-8.0.29 php-gd-8.0.29 php-zip-8.0.29 php-mysqli-8.0.29 php-7.4.33p0 php-pdo_mysql-7.4.33 php-curl-7.4.33p0 php-gd-7.4.33 php-zip-7.4.33 php-mysqli-7.4.33
Habilitem PHP a l'inici:
$ doas rcctl enable php74_fpm
$ doas rcctl enable php80_fpm
$ doas rcctl enable php82_fpm
Arranquem PHP 8.2 amb:
$ doas rcctl start php82_fpm
php82_fpm(ok)
Editem el fitxer /etc/nginx/nginx.conf i descomentem les següents línies per a que funcionen les pàgines PHP:
location ~ \.php$ {
try_files $uri $uri/ =404;
fastcgi_pass unix:run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
De tant en tant, a mesura que afegim modificacions a Nginx, podem testejar si ho tenim tot ben configurat amb:
$ doas nginx -t
Editarem el fitxer de configuració d'PHP-FPM /etc/php-fpm.conf i hem de tenir-ho així:
Confirm that PHP-FPM connects through the socket /var/www/run/php-fpm.sock, and also runs with the user, group www.
#
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
#
user = www
group = www
#
; The address on which to accept FastCGI requests.
; Valid syntaxes are:
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
; a specific port;
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
; a specific port;
; 'port' - to listen on a TCP socket to all addresses
; (IPv6 and IPv4-mapped) on a specific port;
; '/path/to/unix/socket' - to listen on a unix socket.
#
; Note: This value is mandatory.
; If using a TCP port, never expose this to a public network.
#
listen = /var/www/run/php-fpm.sock
Ara podem configurar-nos distints llocs web afegint al fitxer de configuració d'Nginx /etc/nginx/nginx.conf el següent:
include sites/*.conf;
Crearem un parell de dominis en I et configures un parell de dominis dins del directori /etc/nginx/sites/ i proves si et funciona bé.
$ cd /etc/nginx/sites
$ ls
proveta1.net.conf proveta2.net.conf proveta3.net.conf
I ara afegirem estos dos nous sites en el nostre fitxer /etc/hosts:
127.0.0.1 proveta1.net
127.0.0.1 proveta2.net
127.0.0.1 proveta3.net
Finalment, provarem el PHP i totes les variables escrivint el fitxer info.php amb:
echo phpinfo();
Ara tenim ja funcionant PHP8.2, però encara no li hem dit que volem que faça servir els mòduls o extensions que necessita Drupal (curl, gd, mysqli, opcache, zip, etc).
Anirem a veure si els tenim llistats dins del directori modules de PHP 7.4:
ls /usr/local/lib/php-8.2/modules/
curl.so gd.so mysqli.so opcache.so pdo_mysql.so zip.so
Ara els activarem editant el fitxer de configuració de PHP 8.2:
doas vi /etc/php-8.2.ini
I habilitarem, o si no estan els afegirem sense comentar (;) els mòduls següents:
extension=curl
extension=mysqli
extension=opcache
extension=gd
extension=zip
extension=pdo_mysql
Ara reiniciarem PHP 8.2 i si tornem a la pàgina de configuració phpinfo(); haurem de veure'ls carregats:
doas rcctl restart php82_fpm
Aquesta configuració de mòduls la farem per a cada una de les versions de PHP que vullguem per als nostres projectes de desenvolupament, jo en aquest article nomès m'he configurat la versió 8.2, que és la que faré servir de moment per a la versió de Drupal 10.1.1.
INSTAL·LACIÓ DE LA BASE DE DADES MARIADB
Ara ja tenim configurat el servidor Nginx, el PHP i tres projectes de prova per als meus desenvolupaments (proveta1.net, proveta2.net i proveta3.net). A continuació necessitem instal·lar el servidor de base de dades MariaDB (mariadb-server a OpenBSD. Ho instal·larem amb l'ordre:
doas pkg_add -vi mariadb-server
I a continuació habilitarem el dimoni de MariaDB (el qual s'anomena 'mysqld'):
doas rcctl enable mysqld
I ara prepararem el servidor de bases de dades:
doas mysql_install_db
Installing MariaDB/MySQL system tables in '/var/mysql' ...
A continuació arranquem el servidor MariaDB amb:
doas rcctl start mysqld
mysqld(ok)
I ara li donarem una contrasenya a l'usuari administrador, tant des de la màquina com especificant el servidor:
doas mysqladmin --user=root password 'LA_TEUA_CONTRASENYA'
doas mysqladmin -h localhost --user=root password 'LA_TEUA_CONTRASENYA'
Ja tenim perfectament configurat el servidor MariaDB. Accedirem a MariaDB com a root així:
triton$ mysql -h localhost -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 10.9.4-MariaDB OpenBSD port: mariadb-server-10.9.4v1
#
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
#
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
#
MariaDB [(none)]>
Ara anem a crear una base de dades i un usuari per al gestor de continguts Drupal:
CREATE DATABASE la_teua_bbdd CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON la_teua_bbdd.* TO 'EL_TEU_USUARI'@'localhost' IDENTIFIED BY 'LA_TEUA_CONTRASENYA';
FLUSH PRIVILEGES;
I per acabar amb la configuració del servidor de bases de dades, et comentaré que de moment nomès podràs accedir des de la pròpia màquina on està instal·lat MariaDB, ja que per defecte hi ha un bloqueig dels accesos i MySQL/MariaDB nomès deixa fer consultes a les bases de dades des de la IP 127.0.0.1, aleshores haurem de modificar aquest bloqueig i obrir MariaDB per a que qualsevol persona des de qualsevol IP puga anar fullejant les pàgines del gestor de continguts Drupal albergat al MariaDB.
Editarem /etc/my.cnf i modifiquem el paràmetre que diu bind-address = 127.0.0.1 i deixarem:
bind-address = 0.0.0.0
També en aquest fitxer /etc/my.cnf anem a donar-li més memòria al servei mysqld, i li donarem 64, enlloc de nomès 1Mb:
max_allowed_packet = 64M
Si no li donem més memòria a MySQL, Drupal pot experimentar problemes de funcionament a l'hora d'instal·lar i desinstal·lar mòduls.
Bé, finalment reiniciem MariaDB per a que agafe els canvis amb:
doas rcctl stop mysqld
doas rcctl start mysqld
INSTAL·LACIÓ DE DRUPAL
Ací no vaig a donar molts detalls de com funciona el gestor de continguts Drupal, perquè açò allargaria aquest article massa, simplement has de saber que descarregarem Drupal (ja siga el fitxer tar.gz o el zip) des de la web oficial del projecte Drupal i ho descomprimirem en el directori de l'Nginx /var/www/proveta1.net que hem creat en el servidor amb el nom fictici proveta1.net.
Concretament a dia d'avui, 23 de juliol de 2023, m'he descarregat la versió 10.1.1, i una vegada està descomprimit, iniciem la instal·lació normal.
Ací en aquesta pantalla ens demana crear el directori de fitxers de Drupal i el fitxer de configuració, aleshores farem:
$ doas mkdir files
$ doas chmod 777 files
$ doas cp default.settings.php settings.php
$ doas chmod 777 settings.php
I seguim amb la web, ara ja no ens mostra cap error, aleshores ja podem continuar:
En la següent pantalla ja hem de configurar les dades d'accés amb la base de dades:
I a continuació començarà el procés d'instal·lació de Drupal 10.1.1:
Una vegada acabe el procés d'instal·lació caldrà ficar les dades bàsiques del nostre projecte web com el título, correu electrònic, localització i si volem rebre notificacions per correu electrònic de noves versions o d'actualitzacions:
I ja està, ja tenim el nostre Drupal 10.1.1 funcionant perfectament sobre la nostra OpenBSD 7.3 amb Nginx, MariaDB i PHP 8.2: