Magento Installation · 22 min read · Oct 20, 2025

Cómo instalar Magento eCommerce en Ubuntu 22.04 con Nginx y Elasticsearch

Magento es una plataforma de comercio electrónico de código abierto escrita en PHP. Fue adquirida por Adobe en 2018 y se llamó Adobe eCommerce. También se ofrece como un producto comercial y basado en la nube. Puedes usar Magento para crear sitios web de compras profesionales de alta capacidad. Ofrece tanto un modo de tienda única como un modo de múltiples tiendas. Viene con muchos módulos para extender su funcionalidad.

En este tutorial, instalaremos la edición comunitaria de Magento de código abierto. Ofrece toda la funcionalidad que necesitas para configurar una tienda en línea profesional. También instalaremos Elasticsearch para buscar en el catálogo de productos, Redis para la sesión y el caché de archivos, y lo serviremos utilizando el servidor Nginx.

Prerrequisitos

  • Un servidor que ejecute Ubuntu 22.04 con un mínimo de 2GB de RAM. Puede que necesites más RAM dependiendo de tus requisitos.
  • Un usuario no root con privilegios sudo.
  • Un nombre de dominio completamente calificado (FQDN) para el servidor, magento.example.com
  • Asegúrate de que todo esté actualizado. $ sudo apt update $ sudo apt upgrade
  • Algunos paquetes que tu sistema necesita. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Algunos de estos paquetes pueden ya estar instalados en tu sistema.

Paso 1 - Configurar el Firewall

El primer paso es configurar el firewall. Ubuntu viene con ufw (Uncomplicated Firewall) por defecto.

Verifica si el firewall está en funcionamiento.

$ sudo ufw status

Deberías obtener la siguiente salida.

Estado: inactivo

Permite el puerto SSH para que el firewall no interrumpa la conexión actual al habilitarlo.

$ sudo ufw allow OpenSSH

Permite también los puertos HTTP y HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Habilita el Firewall

$ sudo ufw enable
El comando puede interrumpir las conexiones ssh existentes. ¿Proceder con la operación (y|n)? y
El firewall está activo y habilitado al inicio del sistema

Verifica el estado del firewall nuevamente.

$ sudo ufw status

Deberías ver una salida similar.

Estado: activo

Para                         Acción      Desde
--                         ------      ----
OpenSSH                    PERMITIR       En cualquier lugar
80/tcp                     PERMITIR       En cualquier lugar
443                        PERMITIR       En cualquier lugar
OpenSSH (v6)               PERMITIR       En cualquier lugar (v6)
80/tcp (v6)                PERMITIR       En cualquier lugar (v6)
443 (v6)                   PERMITIR       En cualquier lugar (v6)

Paso 2 - Instalar PHP y sus extensiones

Ubuntu 22.04 viene con la versión PHP 8.1.2 que está un poco desactualizada. Instalaremos la última versión PHP 8.2 utilizando el repositorio PHP de Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

A continuación, instala PHP y sus extensiones requeridas por Magento.

$ sudo apt install php8.2-fpm php8.2-mysql php8.2-bcmath php8.2-xml php8.2-zip php8.2-curl php8.2-mbstring php8.2-gd php8.2-tidy php8.2-intl php8.2-cli php8.2-soap php8.2-xsl libsodium-dev libsodium23 libssl-dev libcurl14-openssl-dev

Verifica la instalación.

$ php --version
PHP 8.2.5 (cli) (construido: 14 de abr 2023 04:27:02) (NTS)
Derechos de autor (c) El Grupo PHP
Zend Engine v4.2.5, Derechos de autor (c) Zend Technologies
    con Zend OPcache v8.2.5, Derechos de autor (c), por Zend Technologies

Paso 3 - Instalar Composer

Composer es una herramienta de gestión de dependencias para PHP y es necesaria para la instalación de Magento.

Ejecuta los siguientes comandos para descargar el binario de Composer. Magento requiere Composer 2.2 LTS, así que hemos modificado el comando en consecuencia.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php composer-setup.php --2.2
$ php -r "unlink('composer-setup.php');"

Instala Composer moviendo el binario al directorio /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Verifica la instalación comprobando su versión.

$ composer --version
Composer version 2.2.21 2023-02-15 13:07:40

Paso 4 - Instalar MySQL

Ubuntu 22.04 viene con la última versión de MySQL. Puedes instalarlo con un solo comando.

$ sudo apt install mysql-server

Verifica la versión de MySQL.

$ mysql --version
mysql  Ver 8.0.33-0ubuntu0.22.04.1 para Linux en x86_64 ((Ubuntu))

Este paso es necesario para las versiones de MySQL 8.0.28 y superiores. Ingresa al Shell de MySQL.

$ sudo mysql

Ejecuta el siguiente comando para establecer la contraseña para tu usuario root. Asegúrate de que tenga una mezcla de números, mayúsculas, minúsculas y caracteres especiales.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Sal del shell.

mysql> exit

Ejecuta el script de instalación segura de MySQL.

$ sudo mysql_secure_installation

Primero, se te pedirá tu contraseña de root. Ingresa la contraseña. A continuación, se te pedirá que instales el Componente de Validación de Contraseña. Verifica la fortaleza de las contraseñas utilizadas en MySQL. Presiona Y para instalarlo. A continuación, se te pedirá que establezcas el nivel de la política de validación de contraseñas. Elige 2 ya que es el más fuerte.

Asegurando la implementación del servidor MySQL.

Ingresa la contraseña para el usuario root:

EL COMPONENTE DE VALIDACIÓN DE CONTRASEÑA se puede utilizar para probar contraseñas
y mejorar la seguridad. Verifica la fortaleza de la contraseña
y permite a los usuarios establecer solo aquellas contraseñas que son
es lo suficientemente seguras. ¿Te gustaría configurar el componente de VALIDACIÓN DE CONTRASEÑA?

Presiona y|Y para Sí, cualquier otra tecla para No: Y

Hay tres niveles de política de validación de contraseñas:

BAJO    Longitud >= 8
MEDIO Longitud >= 8, numérico, mezcla de mayúsculas y minúsculas, y caracteres especiales
FUERTE Longitud >= 8, numérico, mezcla de mayúsculas y minúsculas, caracteres especiales y archivo de diccionario

Por favor, ingresa 0 = BAJO, 1 = MEDIO y 2 = FUERTE: 2
Usando la contraseña existente para root.

Fortaleza estimada de la contraseña: 100

A continuación, ingresa N para rechazar cambiar tu contraseña de root. También, ingresa Y para eliminar usuarios anónimos, deshabilitar inicios de sesión remotos de root, eliminar la base de datos de prueba y recargar las tablas de privilegios.

¿Cambiar la contraseña para root? ((Presiona y|Y para Sí, cualquier otra tecla para No) : N

 ... omitiendo.
Por defecto, una instalación de MySQL tiene un usuario anónimo,
que permite a cualquiera iniciar sesión en MySQL sin tener que tener
una cuenta de usuario creada para ellos. Esto está destinado solo para
testing, y para hacer que la instalación sea un poco más fluida.
Deberías eliminarlos antes de pasar a un entorno de producción.

¿Eliminar usuarios anónimos? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
Éxito.

Normalmente, solo se debería permitir que root se conecte desde
'localhost'. Esto asegura que alguien no pueda adivinar la
contraseña de root desde la red.

¿Deshabilitar el inicio de sesión remoto de root? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
Éxito.

Por defecto, MySQL viene con una base de datos llamada 'test' que
cualquiera puede acceder. Esto también está destinado solo para
testing, y debería eliminarse antes de pasar a un entorno de producción.

¿Eliminar la base de datos de prueba y el acceso a ella? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
 - Eliminando base de datos de prueba...
Éxito.

 - Eliminando privilegios en la base de datos de prueba...
Éxito.

Recargar las tablas de privilegios asegurará que todos los cambios
realizados hasta ahora surtan efecto de inmediato.

¿Recargar tablas de privilegios ahora? (Presiona y|Y para Sí, cualquier otra tecla para No) : Y
Éxito.

¡Todo listo!

Paso 5 - Configurar MySQL

Inicia sesión en el shell de MySQL. Ingresa tu contraseña de root cuando se te solicite.

$ sudo mysql -u root -p

Crea una base de datos para Magento.

mysql> CREATE DATABASE magento;

Crea una cuenta de usuario SQL.

mysql> CREATE USER 'magentouser'@'localhost' IDENTIFIED BY 'Your_password2';

Otorga todos los privilegios en la base de datos al usuario.

mysql> GRANT ALL PRIVILEGES ON magento.* TO 'magentouser'@'localhost';

Actualiza los privilegios del usuario.

mysql> FLUSH PRIVILEGES;

Sal del shell.

mysql> exit

Paso 6 - Instalar Nginx

Ubuntu 22.04 viene con una versión más antigua de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.

Importa la clave de firma de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Agrega el repositorio para la versión estable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Actualiza los repositorios del sistema.

$ sudo apt update

Instala Nginx.

$ sudo apt install nginx

Verifica la instalación.

$ nginx -v
nginx version: nginx/1.24.0

Inicia el servidor Nginx.

$ sudo systemctl start nginx

Paso 7 - Instalar SSL

Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot utilizando el repositorio de Ubuntu o obtener la última versión utilizando la herramienta Snapd. Usaremos la versión de Snapd.

Ubuntu 22.04 viene con Snapd instalado por defecto. Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd esté actualizada.

$ sudo snap install core && sudo snap refresh core

Instala Certbot.

$ sudo snap install --classic certbot

Usa el siguiente comando para asegurarte de que el comando Certbot pueda ejecutarse creando un enlace simbólico al directorio /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ejecuta el siguiente comando para generar un certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d magento.example.com

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/magento.example.com en tu servidor.

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Verifica el servicio del programador de renovación de Certbot.

$ sudo systemctl list-timers

Encontrarás snap.certbot.renew.service como uno de los servicios programados para ejecutarse.

NEXT                        LEFT          LAST                        PASSED        UNIT                      ACTIVATES
.....
Dom 2023-02-26 06:32:00 UTC 9h left       Sáb 2023-02-25 18:04:05 UTC 2h 59min ago  snap.certbot.renew.timer  snap.certbot.renew.service
Dom 2023-02-26 06:43:20 UTC 9h left       Sáb 2023-02-25 10:49:23 UTC 10h ago       apt-daily-upgrade.timer   apt-daily-upgrade.service
Dom 2023-02-26 09:00:06 UTC 11h left      Sáb 2023-02-25 20:58:06 UTC 5min ago      apt-daily.timer           apt-daily.service

Haz una prueba del proceso para verificar si la renovación de SSL está funcionando bien.

$ sudo certbot renew --dry-run

Si no ves errores, estás listo. Tu certificado se renovará automáticamente.

Paso 8 - Instalar Elasticsearch

Elasticsearch es utilizado por Magento para búsquedas de productos. Instalaremos Elasticsearch 7.x utilizando su repositorio oficial ya que es la versión que es compatible con Magento.

Importa la clave GPG de Elasticsearch.

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

Agrega el repositorio de Elasticsearch.

$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list

Actualiza la lista de repositorios del sistema.

$ sudo apt update

Instala Elasticsearch.

$ sudo apt install elasticsearch

Elasticsearch utiliza mucha memoria. Necesitas limitar su uso dependiendo del tamaño de tu servidor. Crea el archivo /etc/elasticsearch/jvm.options.d/memory.options y ábrelo para editar.

$ sudo nano /etc/elasticsearch/jvm.options.d/memory.options

Pega el siguiente código en él.

-Xms1g
-Xmx1g

Guarda el archivo presionando Ctrl + X y luego Y cuando se te solicite. Esto configura Elasticsearch para usar 1GB de RAM. Puedes usar cualquier valor según sea necesario.

Inicia y habilita el servicio.

$ sudo systemctl enable elasticsearch --now

Verifica si Elasticsearch está funcionando.

$ curl http://localhost:9200

Deberías ver la siguiente salida.

{
  "name" : "magento",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "6yks8tZ6T4GskIwWoXuSLA",
  "version" : {
    "number" : "7.17.10",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "fecd68e3150eda0c307ab9a9d7557f5d5fd71349",
    "build_date" : "2023-04-23T05:33:18.138275597Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "Ya sabes, para buscar"
}

Paso 9 - Instalar el servidor Redis

Magento utiliza Redis para el almacenamiento de sesiones y caché. Es completamente opcional y puedes usar la base de datos para el almacenamiento de sesiones. Pero Redis hace un mejor trabajo. La última versión de Magento funciona con Redis 7.0. Ubuntu viene con Redis 6.0, así que usaremos el repositorio de Redis para la instalación.

Importa la clave GPG oficial de Redis.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

Agrega el repositorio APT a tu lista de fuentes.

$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Actualiza la lista de repositorios del sistema.

$ sudo apt update

Emite el siguiente comando para instalar el servidor Redis.

$ sudo apt install redis

Confirma la versión de Redis.

$ redis-server -v
Servidor Redis v=7.0.11 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=3af367a78d5e21e9

Verifiquemos la conexión del servicio utilizando el siguiente comando.

$ redis-cli

Te cambiarás al shell de Redis.

El primer paso es establecer la contraseña para el usuario predeterminado de Redis. Reemplaza Your_Redis_Password con una contraseña fuerte de tu elección. Asegúrate de prefijar la contraseña con el carácter >.

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Prueba la autenticación de Redis.

127.0.0.1:6379> AUTH Your_Redis_Password
OK

Envía un ping al servicio.

127.0.0.1:6379> ping
PONG

Sal del servicio escribiendo exit.

Paso 10 - Descargar Magento

Crea un directorio raíz web para Magento.

$ sudo mkdir /var/www/magento -p

Dale los derechos al directorio de Magento al usuario actual.

$ sudo chown $USER:$USER /var/www/magento/ -R

Cambia al directorio /var/www.

$ cd /var/www

Antes de continuar, necesitas las claves de autenticación requeridas por el repositorio de Magento. Visita el sitio web https://account.magento.com/ y obtendrás la siguiente página pidiéndote que inicies sesión con tu ID de Adobe.

Página de inicio de sesión de Adobe ID

Haz clic en el botón Iniciar sesión con Adobe ID para llegar a la siguiente página.

Página de inicio de sesión de Magento Adobe

Si tienes un ID de Adobe, ingresa tus credenciales para continuar o puedes crear una cuenta aquí. Una vez que hayas creado tu cuenta e iniciado sesión, abre la URL https://marketplace.magento.com/customer/accessKeys/. También puedes acceder a esta página visitando tu perfil y haciendo clic en el enlace Claves de acceso.

Página de claves de acceso del perfil de Adobe Magento

Haz clic en el botón Crear una nueva clave de acceso para crear tu clave de autenticación. Dale un nombre a tu clave para identificación.

Claves de acceso de Magento

Anota tanto la clave pública como la privada para el siguiente paso.

Crea el proyecto de Magento.

$ composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition magento

Se te pedirá el nombre de usuario y la contraseña para el repositorio. Usa la clave pública como tu nombre de usuario y la clave privada como tu contraseña. Se te preguntará si deseas almacenar las credenciales en el directorio de configuración de Composer. Ingresa y para hacerlo.

Creando un proyecto "magento/project-community-edition" en "./magento"
    Se requiere autenticación (repo.magento.com):
      Nombre de usuario: 53211xxxxxxxxxxxxxxxxxxxxxxxxxxx
      Contraseña:
¿Deseas almacenar las credenciales para repo.magento.com en /home/navjot/.config/composer/auth.json? [Yn] y
Instalando magento/project-community-edition (2.4.6)
  - Descargando magento/project-community-edition (2.4.6)
  - Instalando magento/project-community-edition (2.4.6): Extrayendo archivo
Proyecto creado en /var/www/magento
Cargando repositorios de composer con información de paquetes
Info de https://repo.packagist.org: #StandWithUkraine
Actualizando dependencias
Operaciones de archivo de bloqueo: 564 instalaciones, 0 actualizaciones, 0 eliminaciones
  - Bloqueando 2tvenom/cborencode (1.0.2)
  - Bloqueando adobe-commerce/adobe-ims-metapackage (2.2.0)
...............................................

Ejecuta los siguientes comandos para establecer los permisos de archivo y hacer que el binario de Magento sea ejecutable. Además, establece el propietario del directorio de Magento al usuario de Nginx para que pueda acceder al sitio web.

$ cd /var/www/magento/
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .
$ sudo chmod u+x bin/magento

Paso 11 - Instalar Magento

Asegúrate de estar en el directorio de Magento.

$ cd /var/www/magento

Ejecuta el siguiente comando para instalar Magento.

$ bin/magento setup:install \
--base-url=http://magento.example.com \
--use-secure=1 \
--base-url-secure=https://magento.example.com \
--use-secure-admin=1 \
--db-host=localhost \
--db-name=magento \
--db-user=magentouser \
--db-password=Your_password2 \
--admin-firstname=Navjot \
--admin-lastname=Singh \
--admin-email=[email protected] \
--admin-user=navjot \
--admin-password=admin_password \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--elasticsearch-host=http://127.0.0.1 \
--elasticsearch-port=9200 \
--session-save=redis \
--session-save-redis-db=0 \
--session-save-redis-password=redis_password \
--cache-backend=redis \
--cache-backend-redis-db=2 \
--cache-backend-redis-password=redis_password \
--page-cache=redis \
--page-cache-redis-db=4 \
--page-cache-redis-password=redis_password

Una vez que el proceso esté completo, obtendrás una salida similar.

.......
[ÉXITO]: Instalación de Magento completa.
[ÉXITO]: URI de administración de Magento: /admin_19uadb
Nada que importar.

Anota la URI de administración que necesitarás más tarde para acceder al panel de administración.

Crea trabajos cron de Magento.

$ php bin/magento cron:install

Verifica el trabajo cron.

$ crontab -l

Deberías ver la siguiente salida.

#~ MAGENTO INICIO d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c
* * * * * /usr/bin/php8.2 /var/www/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/magento/var/log/magento.cron.log
#~ MAGENTO FIN d1957f62aa710cc367525c9ec68dd7456d4311756b5aa37d2143c4a98b25318c

Paso 12 - Configurar PHP-FPM

Abre el archivo /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Necesitamos establecer el usuario/grupo Unix de los procesos PHP a nginx. Busca las líneas user=www-data y group=www-data en el archivo y cámbialas a nginx.

...
; Usuario/grupo Unix de procesos
; Nota: El usuario es obligatorio. Si el grupo no está establecido, se utilizará el grupo del usuario predeterminado
;       será utilizado.
; RPM: usuario de apache elegido para proporcionar acceso a los mismos directorios que httpd
user = nginx
; RPM: Mantener un grupo permitido para escribir en el directorio de registro.
group = nginx
...

Busca las líneas listen.owner = www-data y listen.group = www-data en el archivo y cámbialas a nginx.

; Establecer permisos para el socket unix, si se utiliza uno. En Linux, leer/escribir
; los permisos deben establecerse para permitir conexiones desde un servidor web. Muchos
; sistemas derivados de BSD permiten conexiones independientemente de los permisos. El propietario
; y el grupo pueden especificarse ya sea por nombre o por sus IDs numéricos.
; Valores predeterminados: el usuario y el grupo se establecen como el usuario en ejecución
;                 el modo se establece en 0660
listen.owner = nginx
listen.group = nginx

Guarda el archivo presionando Ctrl + X y luego Y cuando se te solicite.

Aumenta el tiempo de ejecución para PHP-FPM y PHP-CLI a 180 segundos.

$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/max_execution_time = 30/max_execution_time = 180/' /etc/php/8.2/cli/php.ini

Aumenta el límite de memoria para PHP-FPM de 128MB a 256MB. Puedes aumentar el límite dependiendo del tamaño de tu servidor y requisitos.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/8.2/fpm/php.ini

Magento, por defecto, establece el límite de tamaño de archivo para la biblioteca de medios en 2MB. Ejecuta los siguientes comandos para aumentar el límite de tamaño de archivo a 25MB.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 25M/g' /etc/php/8.2/fpm/php.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php/8.2/fpm/php.ini

Activa la compresión Zlib.

$ sudo sed -i 's/zlib.output_compression = Off/zlib.output_compression = On/g' /etc/php/8.2/fpm/php.ini

Reinicia el servicio PHP-FPM.

$ sudo systemctl restart php8.2-fpm

Cambia el grupo del directorio de sesiones de PHP a Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Paso 13 - Configurar Nginx

Abre el archivo /etc/nginx/nginx.conf para editar.

$ sudo nano /etc/nginx/nginx.conf

Agrega la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Guarda el archivo presionando Ctrl + X y luego Y cuando se te solicite.

Crea y abre el archivo /etc/nginx/conf.d/magento.conf para editar.

$ sudo nano /etc/nginx/conf.d/magento.conf

Pega el siguiente código en él.

upstream fastcgi_backend {
  server  unix:/run/php/php8.2-fpm.sock;
}

server {
  # Redirigir cualquier solicitud http a https
  listen 80;
  listen [::]:80;
  server_name magento.example.com;
  return 301 https://$host$request_uri;
}

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name magento.example.com;

  set $MAGE_ROOT /var/www/magento;
  include /var/www/magento/nginx.conf.sample;
  client_max_body_size 25m;

  access_log /var/log/nginx/magento.access.log;
  error_log  /var/log/nginx/magento.error.log;

  # Configuración de TLS
  ssl_certificate /etc/letsencrypt/live/magento.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/magento.example.com/privkey.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/magento.example.com/chain.pem;
  ssl_protocols TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:50m;
  ssl_session_timeout 1d;

  # OCSP Stapling ---
  # obtener registros OCSP de la URL en ssl_certificate y almacenarlos en caché
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Guarda el archivo presionando Ctrl + X y luego Y cuando se te solicite una vez que termines.

Magento viene con una plantilla de configuración de Nginx en /var/www/magento/nginx.conf.sample que hemos incluido en nuestra configuración. La variable $MAGE_ROOT apunta al directorio raíz web de Magento que hemos establecido en nuestro archivo y se utiliza en el archivo de configuración de muestra.

Verifica la sintaxis del archivo de configuración de Nginx.

$ sudo nginx -t
nginx: el archivo de configuración /etc/nginx/nginx.conf tiene una sintaxis correcta
nginx: la prueba del archivo de configuración /etc/nginx/nginx.conf fue exitosa

Reinicia el servicio Nginx.

$ sudo systemctl restart nginx

Abre el sitio web de Magento a través de la URL https://magento.example.com. Deberías ver la siguiente página.

Página de inicio de Magento

Si el CSS y JS no se cargan para ti, ejecuta los siguientes comandos.

$ cd /var/www/magento
$ php bin/magento setup:static-content:deploy -f
$ php bin/magento indexer:reindex

Paso 14 - Deshabilitar la Autenticación de Dos Factores

Antes de acceder al panel de administración, necesitamos deshabilitar la autenticación de dos factores que está habilitada por defecto. Magento intenta enviar correo a través de sendmail para habilitar la autenticación de dos factores durante la instalación, pero como no configuramos eso, la única forma de acceder al panel es deshabilitar primero la función.

Si tienes sendmail configurado en tu servidor para enviar correos electrónicos, puedes omitir este paso. Para deshabilitar la autenticación de dos factores, necesitamos deshabilitar dos de los módulos de Magento utilizando los siguientes comandos.

$ php /var/www/magento/bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth
$ php /var/www/magento/bin/magento module:disable Magento_TwoFactorAuth

Ejecuta el siguiente comando para crear las clases.

$ php /var/www/magento/bin/magento setup:di:compile

Limpia la caché también.

$ php /var/www/magento/bin/magento c:c

Paso 15 - Acceder al Portal de Administración

Necesitarás abrir el portal de administración utilizando la URI que te dio el script de instalación de Magento. Si de alguna manera olvidaste anotarla o la perdiste, puedes recuperar la URI nuevamente utilizando el siguiente comando.

$ php /var/www/magento/bin/magento info:adminuri
URI de administración: /admin_19uadb

Abre la URL https://magento.example.com/admin_19uadb en tu navegador y obtendrás la siguiente pantalla.

Página de inicio de sesión del panel de administración de Magento

Ingresa tus credenciales de administrador proporcionadas durante la instalación y haz clic en el botón Iniciar sesión para continuar. Serás recibido con la siguiente pantalla.

Panel de administración de Magento

Recibirás un popup pidiendo permiso a Adobe para recopilar datos de uso. Haz clic en el botón No permitir para continuar.

El siguiente paso es configurar SMTP para correos electrónicos para que podamos volver a habilitar la autenticación de dos factores. Visita el menú Stores >> Configuration.

Menú de configuración de Magento Stores >> Config

Expande el menú Avanzado desde el lado izquierdo y haz clic en la opción Sistemas para abrir la página de configuración de correo electrónico.

Configuración de envío de correos electrónicos de Magento

Desmarca la opción Usar valor del sistema frente a las opciones Transporte, Host y Puerto. Haz clic en el menú desplegable para Transporte y selecciona SMTP de él. Para nuestro tutorial, estamos utilizando Amazon SES como el correo.

Configuración de correo de Amazon SES de Magento

Ingresa tu host SMTP, 587 como el puerto, nombre de usuario y contraseña, establece Auth en LOGIN y SSL en TLS en los campos dados. Haz clic en el botón Guardar configuración cuando hayas terminado. Ahora que hemos configurado la configuración de correo electrónico, el siguiente paso es configurar las direcciones de correo electrónico de la tienda para que podamos probarlas.

Desplázate hacia arriba y expande el menú General en la misma página y selecciona la opción Direcciones de correo electrónico de la tienda.

Página de direcciones de correo electrónico de la tienda de Magento

Desmarca los campos de correo electrónico del remitente predeterminado e ingresa las direcciones de correo electrónico de tu tienda. Haz clic en el botón Guardar configuración cuando hayas terminado. De manera similar, abre la pantalla de Contactos y realiza los mismos cambios y haz clic en el botón Guardar configuración para finalizar.

Configuración de correo electrónico de Contacto de Magento

Cambiar las opciones de administrador puede afectar la caché y recibirás una advertencia. Ejecuta el siguiente comando para limpiar la caché manualmente.

$ php /var/www/magento/bin/magento c:c

Para probar los correos electrónicos, visita la página de la tienda y abre la página de Contáctenos. Puedes usar la URL https://magento.example.com/contact/ directamente para acceder a ella. Envía un mensaje de prueba y haz clic en el botón Enviar. Deberías recibir un correo similar.

Correo electrónico de prueba de Magento

Paso 16 - Habilitar y Configurar la Autenticación de Dos Factores

Ahora que hemos habilitado el correo SMTP, es hora de volver a habilitar la autenticación de dos factores. Ejecuta los siguientes comandos para habilitar la autenticación de dos factores.

$ php /var/www/magento/bin/magento module:enable Magento_AdminAdobeImsTwoFactorAuth
$ php /var/www/magento/bin/magento module:enable Magento_TwoFactorAuth

Actualiza la configuración para los módulos.

$ php /var/www/magento/bin/magento setup:upgrade

Ejecuta el siguiente comando para crear las clases.

$ php /var/www/magento/bin/magento setup:di:compile

Limpia la caché también.

$ php /var/www/magento/bin/magento c:c

Si no puedes acceder al área de administración, ejecuta también los siguientes comandos.

Forzar la implementación del contenido estático.

$ php /var/www/magento/bin/magento setup:static-content:Deploy -f

Establecer los permisos de archivo.

$ cd /var/www/magento
$ sudo find var generated vendor pub/static pub/media app/etc -type f -exec chmod g+w {} +
$ sudo find var generated vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} +
$ sudo chown -R :nginx .

Visita el portal de administración y obtendrás la siguiente pantalla.

Configuración de 2FA de Magento

Usaremos el método de Google Authenticator. Puedes usar una clave de hardware si la tienes. El método de Google Authenticator funciona con cualquier aplicación TOTP, incluyendo Authy, 1Password, Bitwarden, Microsoft Authenticator, etc. Haz clic en el botón Aplicar para continuar.

Configuración de Google 2FA de Magento

En la siguiente página, obtendrás el código QR para escanear con tu aplicación 2FA. Ingresa los detalles en tu aplicación y copia el código generado en el campo Código de autenticador. Haz clic en el botón Confirmar para proceder al panel de administración.

Conclusión

Esto concluye nuestro tutorial sobre la instalación del sitio Magento eCommerce en un servidor Ubuntu 22.04 con servidor Nginx y Elasticsearch. Si tienes alguna pregunta, publícalas en los comentarios a continuación.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.