Instale varias instancias de Drupal con Nginx en Ubuntu 20.04

Elige lengua

Drupal es una plataforma gratuita, escalable y abierta que se utiliza para crear y administrar contenido de sitios web. Tiene una gran comunidad y es utilizado por millones de personas y organizaciones en todo el mundo. Drupal proporciona una interfaz web simple y fácil de usar que lo ayuda a crear una variedad de sitios web que van desde sitios web personales hasta sitios web impulsados ​​por grandes comunidades.

En esta guía, le mostraremos cómo implementar varias instancias de Drupal con Nginx en Ubuntu 20.04.

requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Dos nombres de dominio válidos apuntados con la IP de su servidor.
  • Una contraseña de root está configurada en el servidor.

Paso 1: Instale las dependencias requeridas

Primero, deberá actualizar los paquetes de su sistema a la versión actualizada e instalar las dependencias requeridas en su sistema. Puedes hacerlo con el siguiente comando:

apt-get update -y
apt-get install gnupg2 software-properties-common unzip git wget -y

Una vez que todas las dependencias estén instaladas, puede continuar con el siguiente paso.

Paso 2: Instale Nginx y MariaDB

Aquí, hospedaremos Drupal con Nginx. Entonces Nginx debe estar instalado en su servidor. Si no está instalado, puede instalarlo con el siguiente comando:

apt-get install nginx -y

Después de instalar Nginx, deberá instalar la última versión de MariaDB en su servidor. De forma predeterminada, la última versión de MariaDB no está incluida en el repositorio predeterminado de Ubuntu 20.04. Por lo tanto, deberá agregar el repositorio de MariaDB a APT.

Primero, agregue la clave GPG con el siguiente comando:

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

A continuación, agregue el repositorio de MariaDB con el siguiente comando:

add-apt-repository "deb [arch=amd64,arm64,ppc64el] http://mariadb.mirror.liquidtelecom.com/repo/10.4/ubuntu $(lsb_release -cs) main"

Una vez que se agrega el repositorio, actualice el repositorio e instale la última versión de MariaDB con el siguiente comando:

apt-get update -y
apt-get install mariadb-server -y

Una vez que el servidor MariaDB está instalado, puede continuar con el siguiente paso.

Paso 3: Instale PHP 7.4

Drupal no es compatible con PHP 8.0. Por lo tanto, deberá instalar PHP 7.4 en su sistema. Puede instalar PHP versión 7.4 con otras extensiones requeridas con el siguiente comando:

apt-get install php7.4 php7.4-fpm php7.4-gd php7.4-common php7.4-mysql php7.4-apcu php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip -y

Una vez que todos los paquetes estén instalados, edite el archivo php.ini y modifique algunos cambios:

nano /etc/php/7.4/fpm/php.ini

Cambia las siguientes líneas:

date.timezone = Asia/Kolkata
memory_limit = 256M
upload_max_filesize = 64M
max_execution_time = 600
cgi.fix_pathinfo = 0

Guarde y cierre el archivo y luego reinicie PHP-FPM para aplicar los cambios:

systemctl restart php7.4-fpm

Paso 4: Crear base de datos Drupal

A continuación, deberá crear una base de datos y un usuario para ambas instancias de Drupal.

Primero, conéctese a MySQL con el siguiente comando:

mysql

Una vez conectado, cree una base de datos para ambas instancias de Drupal con el siguiente comando:

MariaDB [(none)]> create database drupal1db;
MariaDB [(none)]> create database drupal2db;

A continuación, cree un usuario de base de datos para ambas instancias de Drupal con el siguiente comando:

MariaDB [(none)]> create user [email protected] identified by 'password';
MariaDB [(none)]> create user [email protected] identified by 'password';

A continuación, otorgue todos los privilegios a ambas bases de datos de Drupal con el siguiente comando:

MariaDB [(none)]> grant all privileges on drupal1db.* to [email protected] identified by 'password';
MariaDB [(none)]> grant all privileges on drupal2db.* to [email protected] identified by 'password';

A continuación, elimine los privilegios y salga de MySQL con el siguiente comando:

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Una vez que haya terminado, puede continuar con el siguiente paso.

Paso 5: Descarga Drupal

A continuación, deberá descargar la última versión de Drupal desde su sitio web oficial.

Primero, cambie el directorio a la raíz web de Nginx con el siguiente comando:

cd /var/www/html

A continuación, descargue la última versión de Drupal con el siguiente comando:

wget -q https://www.drupal.org/download-latest/tar.gz -O drupal-latest.tar.gz

A continuación, extraiga el archivo descargado con el siguiente comando:

tar -xf drupal-latest.tar.gz

Luego, copie el directorio extraído a drupal1 y drupal2:

cp -r drupal-9.1.5 drupal1
cp -r drupal-9.1.5 drupal2

A continuación, establezca la propiedad adecuada con el siguiente comando:

chown -R www-data:www-data /var/www/html/drupal*

Una vez que haya terminado, puede continuar con el siguiente paso.

Paso 6: Configurar Nginx

A continuación, deberá crear dos archivos de configuración de host virtual Nginx para cada instancia de Drupal.

Primero, cree un archivo de configuración de host virtual Nginx para la primera instancia de Drupal:

nano /etc/nginx/conf.d/drupal1.conf

Agregue las siguientes líneas:

server {
    listen 80;
    root /var/www/html/drupal1;
    index  index.php index.html index.htm;
    server_name drupal1.example.com;

    location / {
    try_files $uri /index.php?$query_string;
    }

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

    location ~ [^/]\.php(/|$) {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
    }

    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
               try_files $uri @rewrite;
        }

    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
        }
}

Guarde y cierre el archivo cuando haya terminado.

A continuación, cree un archivo de configuración de host virtual de Nginx para la segunda instancia de Drupal:

nano /etc/nginx/conf.d/drupal2.conf

Agregue las siguientes líneas:

server {
    listen 80;
    root /var/www/html/drupal2;
    index  index.php index.html index.htm;
    server_name drupal2.example.com;

    location / {
    try_files $uri /index.php?$query_string;
    }

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

    location ~ [^/]\.php(/|$) {
         include snippets/fastcgi-php.conf;
         fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
         include fastcgi_params;
    }

    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
               try_files $uri @rewrite;
        }

    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
        }
}

Guarde y cierre el archivo cuando haya terminado, luego verifique el Nginx para detectar cualquier error de sintaxis con el siguiente comando: Anuncio

nginx -t

Debería ver el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, reinicie el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puede verificar el estado de Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener el siguiente resultado:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-03-23 08:50:47 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 19946 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 19959 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 19964 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 2.7M
     CGroup: /system.slice/nginx.service
             ??19964 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??19965 nginx: worker process

Mar 23 08:50:47 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Mar 23 08:50:47 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Paso 7: Accede a Drupal

Ahora, abra su navegador web y escriba la URL http://drupal1.ejemplo.com o http://drupal2.ejemplo.com. Será redirigido al asistente de instalación web de Drupal como se muestra a continuación:

Elige lengua

Seleccione su idioma y haga clic en el Guardar y continuar botón. Deberías ver la siguiente página:

Seleccionar perfil de instalación

Seleccione el tipo de instalación estándar y haga clic en el Guardar y continuar botón. Deberías ver la siguiente página:

Configuración de base de datos

Proporcione los detalles de su base de datos y haga clic en el Guardar y continuar botón. Deberías ver la siguiente página:

Configuración del sitio

Configuración de país

Proporcione la información de su sitio y haga clic en el Guardar y continuar botón. Deberías ver el tablero de Drupal en la siguiente página:

Sitio web Drupal

Conclusión

En la publicación anterior, aprendió cómo implementar varias instancias de Drupal con Nginx en el servidor Ubuntu 20.04. Ahora puede implementar cualquier número de instancias de Drupal en su servidor. Solo necesita definir el nombre de dominio y la ruta de instalación de Drupal para cada nueva instancia de Drupal. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *