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 -yAlgunos 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.

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

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.