Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

Ací t'explique com configurar una màquina OpenBSD (un OpenBSD virtualitzat amb VMM en el meu cas) amb tot lo necessari per a tenir la última versió de Drupal en producció.

L'altre dia com muntar una màquina virtualtizada amb VMM a OpenBSD, una de les joies d'aquest sistema operatiu. Per a entrar en matèria, tinc un OpenBSD 6.5 i dins tinc una màquina VMM també amb OpenBSD 6.5 que farà de servidor on ho instal·larem tot. L'OpenBSD host té una IP de tipus C 192.168.0.20, i la màquina VMM té una IP de tipus B 100.64.1.3 configurada amb NAT per a poder eixir a internet. Aleshores navegadrem des de la màquina host i la màquina VMM serà el servidor.

OpenBSD té el seu propi servidor web anomenat httpd, però com no hi ha massa informació i exemples a la xarxa, he descartat aquesta opció. I com conec tant l'Apache Web Server (que a OpenBSD s'anomena apache-httpd) així com l'Nginx, però pense que l'Nginx va més ràpid, he triat aquest programari. A mi m'agrada Nginx.

INSTAL·LACIÓ DEL SERVIDOR WEB NGINX
Instal·larem l'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=""

Un consell per a més endavant per si no ens funciona l'Nginx per algun motiu que desconeixem, sempre podem fer un test i mirar què pot estar malament:

doas nginx -t -c /etc/nginx/nginx.conf
nginx: [emerg] unknown log format "main" in /etc/nginx/nginx.conf:30
nginx: configuration file /etc/nginx/nginx.conf test failed

Ens diu que a la línea 30 tenim un error, i si el corregim i tornem a passar el test veurem algo així:

doas nginx -t -c /etc/nginx/nginx.conf
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

I ja podem arrencar l'Nginx:

# /etc/rc.d/nginx start
nginx(ok)

Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

CONFIGURACIÓ DE PHP I DIVERSES LLIBRERIES
Ara, instal·lem PHP (i podem seleccionar la 7.1, la 7.2 i la 7.3). En el meu cas seleccionaré la 7.2:

pkg_add -vi php php-gd

I després d'instal·lar-ho, habilitem el PHP72 i iniciem el dimoni amb:

rcctl enable php72_fpm
rcctl start php72_fpm

Ara necessitem que el nostre servidor web Nginx tinga suport per a PHP, i aleshores editarem el fitxer de configuració /etc/nginx/nginx.conf i descomentarem les següents línies sobre la configuració de 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;
}

I ja tenim el servidor web Nginx amb suport de pàgines PHP:

Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

Per últim, i per a ser elegants, no anem a ficar el nostre Drupal a l'arrel del servidor web, sinó que crearem un directori exclusiu i ens inventarem un nom de domini, en el meu cas m'he inventat drupal1.com [domini de prova] i així treballaré com si aquest domini fora nostre.

Aleshores, anirem a configurar un virtual host a l'Nginx que és molt fàcil. Per defecte, quan editem el fitxer /etc/nginx/nginx.conf hi ha un apartat que diu # another virtual host using mix of IP-, name-, and port-based configuration...., doncs bé, podem començar per ahi, modificant els paràmetres que veiem. Però a més a més hem d'afegir el bloc del PHP. En resum, un virtual host a Nginx quedaria així (fica't que he afegit el domini de proves drupal1.com):

# another virtual host using mix of IP-, name-, and port-based configuration
#
server {
listen 80;
server_name drupal1.com www.drupal1.com;
index index.php;
root /var/www/drupal1.com;
# pass the PHP scripts to FastCGI server listening on unix socket
#
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;
}
}

Ara ja tenim un virtual host amb PHP configurat, però el gestor de continguts Drupal necessita la llibreria GD per a poder tractar
imatges. Aleshores ens cal instal·lar-la amb:

doas pkg_add -vi php-gd

Configurarem el PHP 7.2 per tal d'activar la llibreria GD de PHP. Si editem el fitxer /etc/php-7.2.ini veiem que ens diu que el
directori de les extensions és /usr/local/lib/php-7.2/modules i allí veiem que tenim l'extensió gd.so, aleshores, afegirem en aquest fitxer /etc/php-7.2.ini l'extensió gd.so i quedarà així:

extension=gd

I ara reiniciem el PHP per a que els canvis s'executen:

doas /etc/rc.d/php72_fpm restart
php72_fpm(ok)
php72_fpm(ok)

També és un requeriment de Drupal el driver PDO (el connector de la programació orientada a objectes de PHP amb MySQL/MariaDB). Instal·larem aquesta llibreria amb:

doas pkg_add -vi php-pdo_mysql

Veiem que la tenim llistada al directori d'extensions de Nginx:

ls /usr/local/lib/php-7.2/modules
gd.so mysqli.so opcache.so pdo_mysql.so
virtual1#

I la activem en la configuració de PHP de la mateixa manera que hem activat abans l'extensió de la llibreria GD.

I finalment reiniciem el PHP per a que els canvis s'executen:

doas /etc/rc.d/php72_fpm restart
php72_fpm(ok)
php72_fpm(ok)

INSTAL·LACIÓ DE LA BASE DE DADES MARIADB
Ara ja tenim configurat el servidor Nginx, el PHP i un virtual host on instal·larem el nostre Drupal. 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:

'/usr/local/bin/mysqladmin' -u root password 'LA_TEUA_CONTRASENYA'
'/usr/local/bin/mysqladmin' -u root -h localhost password drupaleros -p'LA_TEUA_CONTRASENYA'

Ja tenim perfectament configurat el servidor MariaDB, ara anem a crear una base de dades i un usuari per al gestor de continguts Drupal:

CREATE DATABASE CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON .* TO @'localhost' IDENTIFIED BY '';
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

Reiniciem MariaDB per a que agafe els canvis amb:

doas rcctl stop mysqld
doas rcctl start mysqld

I amb això ja tenim també perfectament configurat el servidor de bases de dades. Ja no queda res!

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/drupal1.com que hem creat en
el servidor amb el nom fictici drupal1.com.

Concretament a dia d'avui, 12 de juliol de 2019, m'he descarregat la versió 8.7.4. I una vegada està descomprimit, iniciem la instal·lació normal.

Escrivim el nostre nom de domini fictici drupal1.com que apunta a la màquina virtualtizada VMM amb IP 100.64.1.3 i veurem la primera pantalla de la instal·lació de Drupal:
Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

Ara comencem amb la instal·lació del gestor, on seleccionarem la primera opció Standard:
Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

La següent pantalla és la pantalla d'avisos de requeriments. Com que hem instal·lat la llibreria GD i php_pdo per a connectar amb MySQL/MariaDB, no ens mostrarà cap avís. El que veiem a la captura de pantalla següent és una recomanació d'instal·lar i configurar el OPcaché per a millorar notablement la càrrega de les pàgines. De moment no ho tinc configurat i com que no és un requeriment delicat, procedirem a continuar amb la instal·lació:
Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

Ara configurem la base de dades, el nom d'usuari i contrasenya, el nom del nostre servidor (que és la màquina OpenBSD virtualitzada amb VMM) i el port, per defecte 3306 si no has tocat res:
Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

I comença el rock'n'roll:
Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

I quan acaba el procés de generació de les taules a la base de dades, ja ens mostra la següent pantalla on podem configurar el nom del nostre projecte i l'usuari administrador. En el meu cas continue anomenant al projecte drupal1.com per a fer les meues proves:
Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

I bé, ladies and gentlemen, ja tenim el nostre gestor de continguts Drupal perfectament instal·lat i preparat per a desenvolupar projectes. Ara toca crear tipus de continguts, instal·lar i configurar un bon theme responsiu i

Instal·lant Drupal 8 a una màquina virtualitzada VMM OpenBSD 6.5

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.