Drupal es una plataforma abierta, escalable y gratuita 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
- Un servidor con Ubuntu 20.04.
- Dos nombres de dominio válidos apuntados con la IP de su servidor.
- Se configura una contraseña raíz en el servidor.
Paso 1:instalar 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:Instalar 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:Instalar 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
Cambie 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:
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 comprobar 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:Acceda a Drupal
Ahora, abra su navegador web y escriba la URL http://drupal1.example.com o http://drupal2.example.com . Será redirigido al asistente de instalación web de Drupal como se muestra a continuación:
Seleccione su idioma y haga clic en Guardar y continuar botón. Debería ver la siguiente página:
Seleccione el tipo de instalación estándar y haga clic en Guardar y continuar botón. Debería ver la siguiente página:
Proporcione los detalles de su base de datos y haga clic en Guardar y continuar botón. Debería ver la siguiente página:
Proporcione la información de su sitio y haga clic en Guardar y continuar botón. Debería ver el panel de control de Drupal en la siguiente página:
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. Siéntase libre de preguntarme si tiene alguna pregunta.