Magento Installation · 25 min read · Oct 19, 2025

Cómo instalar Magento eCommerce Suite en Rocky Linux 9 con Elasticsearch

Magento es una plataforma de comercio electrónico de código abierto escrita en PHP. Fue adquirida por Adobe en 2018. 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 código abierto de Magento. 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 la caché de archivos, y lo serviremos utilizando el servidor Nginx.

Prerrequisitos

  • Un servidor que ejecute Rocky Linux 9 con un mínimo de 2GB de RAM. Puede que necesites más RAM, dependiendo de tus requisitos.
  • Un usuario no root con privilegios de sudo.
  • Un nombre de dominio completamente calificado (FQDN) para el servidor, magento.example.com
  • Asegúrate de que todo esté actualizado. $ sudo dnf update
  • Algunos paquetes que tu sistema necesita. $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y Algunos de estos paquetes pueden ya estar instalados en tu sistema.

Paso 1 - Configurar el Firewall

El primer paso es configurar el firewall. Rocky Linux utiliza Firewalld Firewall. Verifica el estado del firewall.

$ sudo firewall-cmd --state
running

El firewall trabaja con diferentes zonas, y la zona pública es la predeterminada que utilizaremos. Lista todos los servicios y puertos activos en el firewall.

$ sudo firewall-cmd --permanent --list-services

Debería mostrar la siguiente salida.

cockpit dhcpv6-client ssh

Permite los puertos HTTP y HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Verifica nuevamente el estado del firewall.

$ sudo firewall-cmd --permanent --list-services

Deberías ver una salida similar.

cockpit dhcpv6-client http https ssh

Recarga el firewall para habilitar los cambios.

$ sudo firewall-cmd --reload

Paso 2 - Instalar PHP y sus extensiones

Rocky Linux 9 viene con PHP 8.1 por defecto. Para mantenerte siempre en la última versión de PHP o si deseas instalar múltiples versiones de PHP, necesitamos usar el repositorio REMI.

El primer paso es obtener el repositorio Epel.

$ sudo dnf install epel-release -y

A continuación, instala el repositorio Remi.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Verifica los flujos de PHP disponibles.

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP scripting language
php     remi-8.0            common [d], devel, minimal                    PHP scripting language
php     remi-8.1            common [d], devel, minimal                    PHP scripting language
php     remi-8.2            common [d], devel, minimal                    PHP scripting language
php     remi-8.3            common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

La versión predeterminada es 8.1. En el momento de escribir este tutorial, Magento es compatible con PHP 8.2. Por lo tanto, habilita el repositorio PHP 8.2 de Remi.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Puedes instalarlo y las extensiones requeridas por Magento ejecutando el siguiente comando.

$ sudo dnf install php-fpm php-cli php-mysql php-mbstring php-xml php-gd php-bcmath php-zip php-curl php-tidy php-intl php-soap php-opcache php-xsl php-sodium

Verifica la instalación.

$ php --version
PHP 8.2.15 (cli) (built: Jan 16 2024 12:19:32) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.15, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.15, Copyright (c), by 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.22 2023-09-29 10:53:45

Paso 4 - Instalar MariaDB

Rocky Linux 9 viene con una versión anterior de MariaDB. Por lo tanto, utilizaremos el repositorio de MariaDB para la instalación. En el momento de escribir este tutorial, Magento admite MariaDB 10.6, que es lo que instalaremos.

Importa la clave GPG de MariaDB.

$ sudo rpm --import https://supplychain.mariadb.com/MariaDB-Server-GPG-KEY

Crea y abre el archivo /etc/yum.repos.d/mariadb.repo para editar.

$ sudo nano /etc/yum.repos.d/mariadb.repo

Pega el siguiente código en él.

[mariadb]
name = MariaDB
baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch
gpgkey= https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

$ sudo dnf install MariaDB-server

Verifica la versión de MySQL.

$ mysql --version
mysql  Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using  EditLine wrapper

Habilita e inicia el servicio de MariaDB.

$ sudo systemctl enable mariadb --now

Ejecuta el script de instalación segura de MariaDB.

$ sudo mariadb-secure-installation

Se te pedirá la contraseña de root. Presiona Enter porque no hemos establecido ninguna contraseña para ello.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):

A continuación, se te preguntará si deseas cambiar al método de autenticación de socket Unix. El plugin unix_socket te permite usar tus credenciales del sistema operativo para conectarte al servidor MariaDB. Dado que ya tienes una cuenta de root protegida, ingresa n para continuar.

OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n

A continuación, se te preguntará si deseas cambiar tu contraseña de root. Escribe Y para continuar y cambia tu contraseña de root a algo fuerte y seguro.

 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

A continuación, se te harán ciertas preguntas para mejorar la seguridad de MariaDB. Escribe 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.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Puedes ingresar a la shell de MariaDB escribiendo sudo mysql o sudo mariadb en la línea de comandos.

Paso 5 - Configurar MariaDB

Inicia sesión en la shell de MariaDB.

$ sudo mariadb

Crea una base de datos para Magento.

MariaDB > CREATE DATABASE magento;

Crea una cuenta de usuario SQL.

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

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

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

Recarga los privilegios del usuario.

MariaDB > FLUSH PRIVILEGES;

Sal de la shell.

MariaDB > exit

Paso 6 - Instalar Nginx

Rocky Linux 9 viene con una versión anterior de Nginx. Necesitas usar el repositorio oficial de Nginx para instalar la última versión.

Crea y abre el archivo /etc/yum.repos.d/nginx.repo para editar.

$ sudo nano /etc/yum.repos.d/nginx.repo

Pega el siguiente código en él.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Una vez que hayas terminado, guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Instalaremos la línea principal de Nginx, así que habilita el paquete para ello.

$ sudo dnf config-manager --enable nginx-mainline

Instala Nginx.

$ sudo dnf install nginx -y

Verifica la instalación.

$ nginx -v
nginx version: nginx/1.25.3

Habilita e inicia el servicio del servidor Nginx.

$ sudo systemctl enable nginx --now

Verifica el estado del servicio.

? nginx.service - nginx - servidor web de alto rendimiento
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/nginx.service.d
             ??php-fpm.conf
     Active: active (running) since Fri 2024-01-26 06:46:17 UTC; 1s ago
       Docs: http://nginx.org/en/docs/
    Process: 19765 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 19767 (nginx)
      Tasks: 3 (limit: 12225)
     Memory: 3.1M
        CPU: 16ms
     CGroup: /system.slice/nginx.service
             ??19767 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??19768 "nginx: worker process"
             ??19769 "nginx: worker process"

Paso 7 - Instalar SSL

Necesitamos instalar Certbot para generar el certificado SSL. Usaremos el instalador de paquetes Snapd para eso. Dado que Rocky Linux no lo incluye, instala el instalador Snapd. Requiere el repositorio EPEL (Paquetes adicionales para Enterprise Linux) para funcionar. Pero como ya lo instalamos en el paso 3, podemos avanzar directamente.

Instala el paquete Snapd.

$ sudo dnf install -y snapd

Habilita e inicia el servicio Snap.

$ sudo systemctl enable snapd --now

Instala el paquete central de Snap y asegúrate de que tu versión de Snapd esté actualizada.

$ sudo snap install core && sudo snap refresh core

Crea los enlaces necesarios para que Snapd funcione.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

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

Verifica si Certbot está funcionando correctamente.

$ certbot --version
certbot 2.8.0

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 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     
-------------------------------------------------------------------------------------------------------------------------------
Fri 2024-01-26 08:05:24 UTC 1h 1min left Fri 2024-01-26 06:35:00 UTC 29min ago dnf-makecache.timer          dnf-makecache.service
Fri 2024-01-26 14:20:42 UTC 7h left      Thu 2024-01-25 14:20:42 UTC 16h ago   systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Fri 2024-01-26 22:37:00 UTC 15h left     -                           -         snap.certbot.renew.timer     snap.certbot.renew.service

Haz una prueba en seco del proceso para verificar si la renovación SSL está funcionando correctamente.

$ 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 usando su repositorio oficial, ya que es la versión que es compatible con Magento 2.4.6, que es la última versión disponible. La página de requisitos menciona Elasticsearch 8.5 también, pero no funciona correctamente con Magento.

Importa la clave GPG de Elasticsearch.

$ sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Crea un archivo llamado elasticsearch.repo en el directorio /etc/yum.repos.d/ y ábrelo para editar.

$ sudo nano /etc/yum.repos.d/elasticsearch.repo

Pega el siguiente código en él.

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Una vez que hayas terminado, guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Instala Elasticsearch.

$ sudo dnf install --enablerepo=elasticsearch 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. Modifica los valores de acuerdo con el tamaño de tu servidor. El primer valor se refiere a la memoria inicial y el segundo se refiere a la memoria máxima disponible. Para 1GB y más, usa el formato -Xms1g.

-Xms512m
-Xmx784m

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida. Esto configura Elasticsearch para usar 1GB de RAM. Modifícalo según tus requisitos y especificaciones del servidor.

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.example.com",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "saBfw0F_Tam6ayGjXr6pEA",
  "version" : {
    "number" : "7.17.17",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "aba4da413a368e296dfc64fb20897334d0340aa1",
    "build_date" : "2024-01-18T10:05:03.821431920Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

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. Rocky Linux viene con Redis 6.0, así que utilizaremos el repositorio Remi para la instalación.

Ya instalamos el repositorio Remi cuando instalamos PHP en el paso 2. Lista todos los módulos de Redis disponibles.

$ dnf module list redis
Name                               Stream           Profiles                   Summary                                                                  
redis                              7                common [d]                 Redis persistent key-value database                                    
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name                               Stream           Profiles                   Summary                              
redis                              remi-5.0         common [d]                 Redis persistent key-value database 
redis                              remi-6.0         common [d]                 Redis persistent key-value database 
redis                              remi-6.2         common [d]                 Redis persistent key-value database 
redis                              remi-7.0         common [d]                 Redis persistent key-value database 
redis                              remi-7.2         common [d]                 Redis persistent key-value database 

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Habilita Redis 7.0.

$ sudo dnf module enable -y redis:remi-7.0

Emite el siguiente comando para instalar el servidor Redis.

$ sudo dnf install redis

Confirma la versión de Redis.

$ redis-server -v
Redis server v=7.0.15 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=77c9855172eb54e9

Habilita e inicia el servicio de Redis.

$ sudo systemctl enable redis --now

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

$ redis-cli

Serás cambiado a la 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/html/magento -p

Dale los derechos al directorio de Magento al usuario actual.

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

Antes de continuar, necesitas las claves de autenticación requeridas por el repositorio de Magento. Visita el sitio web https://commercemarketplace.adobe.com/, haz clic en el enlace Iniciar sesión en la parte superior derecha, y obtendrás la siguiente página pidiéndote que inicies sesión usando tu Adobe ID.

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 Adobe ID, 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://commercemarketplace.adobe.com/customer/accessKeys/. También puedes acceder a esta página visitando tu perfil (https://commercemarketplace.adobe.com/customer/account/) y haciendo clic en el enlace Claves de acceso.

Página de 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 archivo ~/.config/composer/auth.json y ábrelo para editar.

$ nano ~/.config/composer/auth.json

Pega el siguiente código en él. Usa la clave pública como nombre de usuario y la clave privada como contraseña.

{
"http-basic": {
        "repo.magento.com": {
                   "username": "",
                   "password": ""
              }

}
}

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Cambia al directorio /var/www/html/magento.

$ cd /var/www/html/magento

Crea el proyecto de Magento. Nota el punto al final del comando. Se refiere al directorio actual en el que se está ejecutando el comando.

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

Deberías ver una salida similar.

Creating a "magento/project-community-edition" project at "./"
Installing magento/project-community-edition (2.4.6-p3)
  - Downloading magento/project-community-edition (2.4.6-p3)
  - Installing magento/project-community-edition (2.4.6-p3): Extracting archive
Created project in /var/www/html/magento/.
Loading composer repositories with package information
Info from https://repo.packagist.org: #StandWithUkraine
Updating dependencies
Lock file operations: 566 installs, 0 updates, 0 removals
  - Locking 2tvenom/cborencode (1.0.2)
  - Locking adobe-commerce/adobe-ims-metapackage (2.2.0)
  - Locking allure-framework/allure-codeception (v2.3.0)
  - Locking allure-framework/allure-php-commons (v2.3.1)
  - Locking allure-framework/allure-phpunit (v2.1.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.

$ 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/html/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=127.0.0.1 \
--db-name=magento \
--db-user=magentouser \
--db-password=Your_password2 \
--admin-firstname=Navjot \
--admin-lastname=Singh \
[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, recibirás una salida similar.

.......
[SUCCESS]: Instalación de Magento completa.
[SUCCESS]: URI de administración de Magento: /admin_l5pv1h
Nothing to import.

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 START f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d
* * * * * /usr/bin/php /var/www/html/magento/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento/var/log/magento.cron.log
#~ MAGENTO END f37deed947b2ea951ad6f939b8ab752bc79587e3d77f40d06f20f0657c98e94d

Paso 12 - Configurar PHP-FPM

Abre el archivo /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

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

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx 
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Busca las líneas listen.owner = nobody, listen.group = nobody, listen.mode = 0660 en el archivo y cámbialas como se muestra a continuación después de descomentarlas.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx 
listen.group = nginx 
listen.mode = 0660

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Aumenta el tiempo de ejecución a 180 segundos.

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

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

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

Magento establece por defecto 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.ini
$ sudo sed -i 's/post_max_size = 8M/post_max_size = 25M/g' /etc/php.ini

Activa la compresión Zlib.

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

Aumenta la configuración de realpath_cache como se muestra.

$ sudo sed -i 's/;realpath_cache_size = 4096k/realpath_cache_size = 10M/g' /etc/php.ini
$ sudo sed -i 's/;realpath_cache_ttl = 120/realpath_cache_ttl = 7200/g' /etc/php.ini

Abre el archivo /etc/php.d/10-opcache.ini para editar.

$ sudo nano /etc/php.d/10-opcache.ini

Busca la línea ;opcache.save_comments=1 y descoméntala como se muestra.

opcache.save_comments=1

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida.

Reinicia el servicio PHP-FPM.

$ sudo systemctl restart php-fpm

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

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

Paso 13 - Configurar SELinux

Ejecuta los siguientes comandos para cambiar el contexto de seguridad para el directorio de Magento.

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/app/etc(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/var(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/media(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/pub/static(/.*)?'
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/magento/generated(/.*)?'
$ sudo restorecon -Rv '/var/www/html/magento/'

Aplica la política para permitir conexiones a hosts externos.

$ sudo setsebool -P httpd_can_network_connect 1

Aplica la política para permitir que Nginx dé acceso a PostgreSQL.

$ sudo setsebool -P httpd_can_network_connect_db 1

Paso 14 - 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 entrando Y cuando se te pida.

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-fpm/www.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/html/magento;
  include /var/www/html/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 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 ---
  # fetch OCSP records from URL in ssl_certificate and cache them
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Guarda el archivo presionando Ctrl + X y entrando Y cuando se te pida una vez que hayas terminado.

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 de 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, ejecuta los siguientes comandos.

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

Paso 15 - Desactivar la Autenticación de Dos Factores

Antes de acceder al panel de administración, necesitamos desactivar la autenticación de dos factores habilitada por defecto. Magento intenta enviar correos 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 desactivar la función primero.

Si tienes sendmail configurado en tu servidor para enviar correos, puedes omitir este paso. Necesitamos desactivar dos de los módulos de Magento usando los siguientes comandos para desactivar la autenticación de dos factores.

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

Ejecuta el siguiente comando para crear las clases.

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

Limpia la caché también.

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

Paso 16 - Acceder al Portal de Administración

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

$ php /var/www/magento/bin/magento info:adminuri
Admin URI: /admin_l5pv1h

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

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

Ingresa las credenciales de administrador que proporcionaste 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 correo de Magento

Desmarca la opción Usar valor del sistema antes de las opciones Transporte, Host y Puerto. Haz clic en el menú desplegable para Transporte y selecciona SMTP. Para nuestro tutorial, estamos usando Amazon SES como el remitente.

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 establece SSL en TLS en los campos dados. Haz clic en el botón Guardar Config 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, 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 Config cuando hayas terminado. De manera similar, abre la pantalla de Contactos, haz los mismos cambios y haz clic en el botón Guardar Config para finalizar.

Configuración de correo 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.

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

Para probar los correos electrónicos, visita la página de la tienda y abre la página 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 de prueba de Magento

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

Ahora que hemos habilitado el remitente de 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.

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

Actualiza la configuración para los módulos.

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

Ejecuta el siguiente comando para crear las clases.

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

Limpia la caché también.

$ sudo php /var/www/html/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.

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

Establecer los permisos de archivo.

$ cd /var/www/html/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 Google Authenticator. Puedes usar una llave de hardware si tienes una. El método 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, recibirá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 de un sitio de comercio electrónico Magento en un servidor Rocky Linux 9 con un 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.