Cómo instalar Joomla con Nginx en un servidor Ubuntu 24.04

Joomla es un gestor de contenidos flexible y de código abierto para crear sitios web y publicaciones en línea. Desarrollado por PHP, puede utilizarse para múltiples escenarios, como foros, galerías de fotos, comercio electrónico y otras aplicaciones basadas en web.

En esta guía, te mostraremos cómo instalar Joomla en un servidor Ubuntu 24.04. Ejecutarás Joomla con Nginx como servidor web, servidor de base de datos MariaDB y PHP-FPM. También asegurarás Joomla con HTTPS.

Requisitos previos

Para completar esta guía, asegúrate de que tienes lo siguiente:

  • Un servidor Ubuntu 24.04.
  • Un usuario no root con privilegios de administrador.
  • Un nombre de dominio apuntando a una dirección IP del servidor.

Instalación de dependencias

Joomla es un sistema de gestión de contenidos basado en PHP. Para instalarlo, debes instalar PHP en tu sistema. En esta sección, instalarás la pila LEMP (Linux, Nginx, MariaDB y PHP-FPM) como dependencias para Joomla.

En primer lugar, ejecuta el siguiente comando para actualizar el índice de paquetes de Ubuntu.

sudo apt update

actualizar repo

Instala las dependencias de la Pila LEMP con el siguiente comando. Introduce‘Y’ para confirmar la instalación.

sudo apt install nginx mariadb-server php-fpm php-curl php-common php-json php-intl php-xml php-gd php-mysql php-imagick php-mbstring php-zip

instalar deps

Una vez completada la instalación, comprueba el estado del servicio Nginx con lo siguiente:

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Puedes ver que el servicio Nginx se está ejecutando.

comprobar nginx

Ahora comprueba el servicio MariaDB para asegurarte de que el servicio se está ejecutando y está habilitado con el comando siguiente:

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

comprobar mariadb

Por último, ejecuta el siguiente comando para verificar el servicio PHP-FPM. El PHP-FPM debería estar ejecutándose por defecto en el archivo sock.

sudo systemctl is-enabled php8.3-fpm
sudo systemctl status php8.3-fpm

comprobar php-fpm

Configurar PHP-FPM

Ahora que la Pila LEMP está instalada, configurarás la instalación de PHP-FPM y cambiarás algunas configuraciones predeterminadas según sea necesario para Joomla.

Abre la configuración de PHP-FPM‘/etc/php/8.3/fpm/php.ini‘ con el editor‘nano‘.

sudo nano /etc/php/8.3/fpm/php.ini

Cambia la configuración por defecto con lo siguiente:

memory_limit=512M
upload_max_filesize=64M
post_max_size=64M
max_execution_time=120
output_buffering = Off
extension=intl

Guarda el archivo y sal del editor.

Ahora reinicia el servicio PHP-FPM para aplicar tus cambios.

sudo systemctl restart php8.3-fpm

Por último, puedes comprobar el archivo sock de PHP para el servicio PHP-FPM con el siguiente comando.

ss -pl | grep php

Puedes ver a continuación que el archivo sock para PHP-FPM se encuentra en‘/var/run/php/php8.3-fpm.sock‘.

archivo php-fpm sock

Configurar el servidor MariaDB

En esta sección, asegurarás la instalación del servidor MariaDB, y luego crearás una nueva base de datos y un nuevo usuario para Joomla. Utilizarás ‘mariadb-secure-installation’ para asegurar el servidor MariaDB, y luego a través del cliente ‘mariadb’ para crear una nueva base de datos y un nuevo usuario.

Para asegurar el servidor MariaDB, ejecuta el comando‘mariab-secure-installation‘ que aparece a continuación.

sudo mariadb-secure-installation

Ahora se te pedirá que configures el servidor MariaDB con lo siguiente:

  • Para la instalación por defecto del servidor MariaDB sin contraseña de root, pulsa ENTER cuando se te pregunte por la contraseña.
  • La autenticación local para los usuarios root de MariaDB está asegurada por defecto, introduce ‘n’ cuando se te pregunte si quieres cambiar el método de autenticación a ‘unix_socket’.
  • Introduce «Y» para crear una nueva contraseña de root de MariaDB. A continuación, introduce la contraseña segura de tu usuario raíz de MariaDB y repite la operación.
  • Cuando se te pida que desactives la autenticación remota para el usuario raíz de MariaDB, introduce «Y» para aceptar.
  • La instalación por defecto del servidor MariaDB viene con la base de datos «test» y permite que un usuario anónimo acceda a ella.
  • Introduce «Y» en ambas opciones para eliminar la base de datos «test» por defecto y el privilegio anónimo.
  • Por último, introduce «Y» para confirmar los privilegios de recarga de tablas.

Una vez asegurada la MariaDB, crearás una nueva base de datos y un nuevo usuario para Joomla.

Accede al servidor MariaDB con el siguiente comando‘mariadb‘. Introduce tu contraseña de root de MariaDB cuando te lo pida.

sudo mariadb -u root -p

Ahora ejecuta las siguientes consultas para crear una nueva base de datos‘joomladb‘, y un nuevo usuario‘joomla‘ con la contraseña‘p4ssword‘.

CREATE DATABASE joomladb;
CREATE USER joomla@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL PRIVILEGES ON joomladb.* TO joomla@localhost;
FLUSH PRIVILEGES;

crear usuario db

A continuación, ejecuta la siguiente consulta para comprobar los privilegios del usuario‘joomla‘. Verás que el usuario‘joomla‘ puede acceder a la base de datos‘joomladb‘.

SHOW GRANTS FOR joomla@localhost;

Por último, escribe‘quit‘ para salir del servidor MariaDB.

mostrar privilegios de usuario

Descargar el código fuente de Joomla

Llegados a este punto, ya has instalado y configurado las dependencias para Joomla. Ahora descargarás el código fuente de Joomla y configurarás el directorio document-root/webroot para la instalación de Joomla.

Ve al directorio ‘/var/www’ y descarga el código fuente de Joomla con el comando ‘wget’ que aparece a continuación. Comprueba la página de descargas de Joomla y coge el enlace de la última versión.

cd /var/www/
wget https://downloads.joomla.org/cms/joomla5/5-1-4/Joomla_5-1-4-Stable-Full_Package.zip

Ahora ejecuta el comando «unzip» para extraer el código fuente de Joomla al directorio «joomla».

unzip Joomla_5-1-4-Stable-Full_Package.zip -d joomla

Por último, ejecuta el comando «chmod» para cambiar la propiedad del directorio «/var/www/joomla» al usuario «www-data».

sudo chown -R www-data:www-data /var/www/joomla

Configurar el bloque del servidor Nginx

Ahora vas a crear una nueva configuración de bloque de servidor Nginx para ejecutar Joomla. Así que asegúrate de que tienes tu nombre de dominio listo y apuntando a la dirección IP del servidor.

Crea un nuevo archivo de servidor Nginx‘/etc/nginx/sites-available/joomla‘ con el siguiente editor‘nano‘.

sudo nano /etc/nginx/sites-available/joomla

Introduce la configuración que aparece a continuación y cambia la opción‘nombre_servidor‘ por el nombre de tu dominio.

server {
listen 80;
server_name howtoforge.local;
server_name_in_redirect off;
access_log /var/log/nginx/localhost.access_log;
error_log /var/log/nginx/localhost.error_log info;

root /var/www/joomla;
index index.php index.html index.htm default.html default.htm;

# Support API
location /api/ {
try_files $uri $uri/ /api/index.php?$args;
}

# Support Clean (aka Search Engine Friendly) URLs
location / {
try_files $uri $uri/ /index.php?$args;
}

# add global x-content-type-options header
add_header X-Content-Type-Options nosniff;

# deny running scripts inside writable directories
location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
return 403;
error_page 403 /403_error.html;
}

location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi.conf;
}

# caching of files
location ~* \.(ico|pdf|flv)$ {
expires 1y;
}

location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
expires 14d;
}

}

Guarda el archivo y sal del editor.

Ahora ejecuta el siguiente comando para activar el bloque de servidor‘joomla‘ y verifica tu configuración de Nginx. Si la configuración de Nginx es correcta, verás una salida‘Syntax is OK‘.

sudo ln -s /etc/nginx/sites-available/joomla /etc/nginx/sites-enabled/
sudo nginx -t

Por último, ejecuta el siguiente comando ‘systemctl’ para reiniciar el servicio Nginx y aplicar tus cambios.

sudo systemctl restart nginx

setupnginx

Proteger Joomla con HTTPS

En esta guía, asegurarás Joomla con HTTPS. Si estás utilizando el dominio público, puedes asegurar Joomla mediante certificados SSL/TLS a través de Certbot y Letsencerypt.

Instala ‘Certbot’ y el plugin Certbot Nginx con el siguiente comando ‘apt’. Introduce ‘Y’ para confirmar la instalación.

sudo apt install certbot python3-certbot-nginx

Una vez completada la instalación, ejecuta el siguiente comando ‘certbot’ para generar certificados SSL/TLS y asegurar tu instalación de Joomla con HTTPS. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico con tu información.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d howtoforge.local

Cuando hayas terminado, tu instalación de Joomla estará protegida con HTTPS mediante certificados SSL/TLS de Letsencrypt.

Instalar Joomla

Abre tu navegador web y visita tu nombre de dominio Joomla, como https://howtoforge.local/. Verás el asistente de instalación de Joomla.

Selecciona tu idioma por defecto e introduce el nombre de tu sitio.

configurar idioma

Introduce el nuevo usuario administrador, correo electrónico y contraseña para Joomla.

nuevo usuario administrador

Introduce los detalles de tu base de datos MariaDB y el usuario, y haz clic en«Instalar Joomla» para proceder con la instalación.

db detalles

Una vez completada la instalación, haz clic en«Abrir sitio» para abrir la página de inicio predeterminada, o en«Abrir administrador» para acceder al panel de administración de Joomla.

instalación completa

En la página de inicio predeterminada de Joomla, verás lo siguiente.

página de inicio

Ahora introduce tu usuario y contraseña de administrador y haz clic en‘Iniciar sesión‘.

inicio de sesión

Si tienes el usuario y la contraseña correctos, verás el siguiente panel de administración de Joomla.

salpicadero

Conclusión

¡Enhorabuena! Has instalado Joomla en el servidor Ubuntu 24.04. Has puesto en marcha Joomla con el servidor web Nginx, el servidor de base de datos MariaDB y PHP-FPM. También has asegurado Joomla con HTTPS a través de Certbot y Letsencrypt.

También te podría gustar...