Pasos previos:
1. Instalación do servidor LEMP: https://blog.atio.es/node/441
2. Instalación de Drupal9: https://blog.atio.es/node/442
Polo tanto xa dispoñemos un Drupal 9 instalado nun servidor LEMP. Configuremos o Drupal xa instalado para que lle dea soporte a varios dominios, é dicir para ter varias páxinas web que empregan os módulos, o core do Dupral principal, ocupando menos espazo e coa vantaxe de que só precisamos actualizar un só sitio.
Paso 1. Configuración dos dominios. Dirixímonos ao noso proveedor de nomes de dominio, no meu caso dinahosting.com e creamos varios subdominios que apunten á ip do servidor, neste caso á ip 164.92.209.43
Fago varios Rexistro tipo A, aínda que neste exemplo só imos empregar d.atio.es, pero podo facer tantos como páxinas queira ter no multisite
d.atio.es -> 164.92.209.43
Paso 2. Accedemos por ssh ao servidor e creamos os seguintes cartafoles dentro do cartafol blog, que é o cartafol onde instalamos o drupal principal e creamos e asignamos os permisos necesarios para cada un dos subcartafoles
mkdir -p /srv/http/blog/sites/atio/files/translations chmod -R 777 /srv/http/blog/sites/atio/files cp /srv/http/blog/sites/default/default.settings.php /srv/http/blog/sites/atio/settings.php chmod 777 /srv/http/blog/sites/atio/settings.php
Paso 3. Copiamos o ficheiro example.sites.php a sites.php. Este ficheiro é o encargado de redirixir o navegador a unha ruta interna e concreta de Drupal, en función do nome de dominio que faga a chamada. Vexamos como se configura:
cp /srv/http/blog/sites/example.sites.php /srv/http/blog/sites/sites.php
nano /srv/http/blog/sites/sites.php
E engadimos un conxunto de liñas necesarias para redixir a búsqueda dos dominios aos distintos cartafoles. No noso caso só estamos configurando o dominio d.atio.es para que apunte ao cartafol /srv/http/blog/sites/atio/, polo tanto deixámolo do seguinte xeito:
$sites['d.atio.es'] = 'atio';
Paso 4. Configuramos o ficheiro do virtual host.
cd /etc/nginx/sites-avaliable
Descargamos o ficheiro default, se non o temos xa descargado neste cartafol
wget https://atio.es/pub/vhost_default
Copiamos no vhost_default c nome mnmoténico da configuración da páxina que estamos configurando
cp default atio
E editámolo e configurámolo
nano atio
a. Cambiamos o root
root /srv/http; por: root /srv/http/blog;
b. O server_name
server_name _; por: server_name d.atio.es;
c. Se desexamos empregar a versión php 7.4 en vez da 8.1, cambiamos a liña fastcgi_pass unix:/run/php-fpm/php-fpm.sock; por esta fastcgi_pass unix:/run/php-fpm7/php-fpm.sock;
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include fastcgi.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
por:
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
#include snippets/fastcgi-php.conf;
include fastcgi.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/run/php-fpm7/php-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
Paso 5. Creamos un enlace simbólico ao cartafol sites-enabled, comprobamos a sintaxis da configuración e recargamos o nginx
sudo ln -s /etc/nginx/sites-available/atio /etc/nginx/sites-enabled/ nginx -t nginx -s reload
Paso 6. Xeramos os certificados do dominio d.atio.es coa ferramenta Certbot
certbot --nginx
e o sistema pregúntanos para que dominios queremos activar https. Neste caso escollemos o segundo d.atio.es, inserimos un 2, polo tanto.
Paso 7. Accedemos co navegador no dominio d.atio.es e procedemos a instalar este sitio que acabamos de configurar que a súa vez está dentro dun Drupal principal.
E configuramos unha nova base de datos para este novo sitio
E cando remate teremos o novo sitio funcionando. Non podemos esquecer restrinxir o modo escritura no ficheiro settings.php do espazo que acabamos de crear.
chmod 644 /srv/http/blog/sites/atio/settings.php
E tal e como explicamos aquí, para protexer o servidor contra os ataques HTTP HOST Header:
nano /srv/http/blog/sites/default/settings.php
$settings['trusted_host_patterns'] = [ '^d.atio\.es$', '^www\.d.atio\.es$' ];
Repetindo o proceso, podemos ter cantos espazos web como desexemos.