Cómo instalar la plataforma de comercio electrónico Magento en Ubuntu 24.04
Magento es una conocida plataforma de comercio electrónico de código abierto escrita en PHP. Magento es una solución de comercio electrónico robusta y potente utilizada por más de 240.000 comerciantes en todo el mundo. Magento es una plataforma versátil y escalable para crear una tienda de comercio electrónico. Es adecuada para crear tiendas online pequeñas, medianas y grandes. Magento te permite crear y alojar tus tiendas online en tu servidor.
En esta guía, te guiaremos a través de la instalación de Magento eCommerce en el servidor Ubuntu 22.04.
Requisitos previos
Para empezar con esta guía, asegúrate de que has preparado lo siguiente:
- Un Ubuntu 24.04 con al menos 4 GB de memoria.
- Un usuario no root con privilegios sudo.
- Un nombre de dominio apuntando a una dirección IP del servidor.
Instalación de dependencias
Antes de pasar a la instalación, debes asegurarte de que las dependencias de Magento están instaladas. En esta sección, instalarás paquetes de software para Magento, que incluyen OpenSearch, Nginx, servidor MySQL, PHP-FPM, Redis, Composer y Git.
Primero, instala los paquetes‘apt-transport-https‘ y‘gnupg‘ con lo siguiente:
sudo apt install apt-transport-https gnupg -y
Ejecuta el siguiente comando para añadir la clave GPG de OpenSearch y el repositorio para las distribuciones basadas en Debian/Ubuntu.
curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | \ sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | \ sudo tee /etc/apt/sources.list.d/opensearch-2.x.list
Ahora actualiza el índice de paquetes de Ubuntu e instala las dependencias con el siguiente comando apt. Con esto, instalarás los paquetes OpenSearch, Nginx, MySQL, PHP-FPM, Redis, Composer y Git.
sudo apt update && sudo apt install opensearch nginx mysql-server composer git redis-server php-fpm php-bcmath php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl php-mysql php-cli php-redis php-ldap php-zip php-curl php-imagick
Introduce Y para confirmar la instalación.
Tras la instalación, comprueba todos los servicios para asegurarte de que se están ejecutando.
Comprueba el servicio Nginx con lo siguiente. Verás que el servicio Nginx se está ejecutando y está habilitado.
sudo systemctl is-enabled nginx sudo systemctl status nginx
Ahora comprueba el servidor MySQL con el siguiente comando. Puedes ver en la salida de abajo que el servidor MySQL se está ejecutando.
sudo systemctl is-enabled mysql sudo systemctl status mysql
Comprueba el servicio PHP-FPM con el siguiente comando. El PHP-FPM debería estar ejecutándose y habilitado automáticamente.
sudo systemctl is-enabled php8.3-fpm sudo systemctl status php8.3-fpm
Comprueba el servidor Redis utilizando el comando siguiente. Deberías ver que Redis se está ejecutando y está habilitado.
sudo systemctl is-enabled redis-server sudo systemctl status redis-server
Por último, comprueba la versión de Composer con lo siguiente. Deberías tener Composer v2.7 instalado en tu sistema.
sudo -u www-data composer -v
Configurar OpenSearch
Después de haber instalado las dependencias, necesitas configurar OpenSearch. Magento utiliza OpenSearch para los pri=ductos de búsqueda avanzada y la indexación. En esta sección, aumentarás la memoria heap máxima por defecto y desactivarás el plugin de seguridad de OpenSearch (sólo para un entorno de desarrollo).
Abre el archivo‘/etc/opensearch/jvm.options‘ utilizando el siguiente editor nano.
sudo nano /etc/opensearch/jvm.options
Cambia la asignación de memoria por defecto para OpenSearch según necesites. En este caso, utilizaremos 2GB para OpenSearch.
-Xms2g -Xmx2g
Guarda el archivo y sal.
Ahora abre la configuración por defecto de OpenSearch‘/etc/opensearch/opensearch.yml‘ con el editor nano.
sudo nano /etc/opensearch/opensearch.yml
Añade la siguiente configuración para desactivar el plugin de seguridad en OpenSearch. Para demostración, puedes desactivarlo, pero para producción, debes activar el plugin de seguridad y configurar certificados TLS para tu instalación de OpenSearch.
plugins.security.disabled: true
Cuando hayas terminado, guarda y sal del archivo.
A continuación, ejecuta el siguiente comando para recargar el gestor systemd. Después de instalar OpenSearch, debes recargar el gestor systemd.
sudo systemctl daemon-reload
Ahora inicia, habilita y verifica el servicio Opensearch con el siguiente comando:
sudo systemctl enable --now opensearch sudo systemctl status opensearch
En la siguiente salida, puedes ver que OpenSearch se está ejecutando y está habilitado.
Por último, comprueba tu instalación de OpenSearch utilizando el siguiente comando‘curl‘. Esto te mostrará información básica sobre tu instalación de OpenSearch.
curl -X GET http://localhost:9200
A continuación puedes ver que OpenSearch 2.14 se está ejecutando en el servidor Ubuntu.
Configurar PHP-FPM
En esta sección, modificarás la configuración por defecto de PHP-FPM y activarás la extensión Opcache a través del archivo ‘php.ini’. Aumentarás el límite_de_memoria por defecto y ajustarás la opción date.timezone.
Abre la configuración de PHP-FPM‘/etc/php/8.3/fpm/php.ini ‘ con el siguiente editor nano.
sudo nano /etc/php/8.3/fpm/php.ini
Cambia la configuración por defecto por la siguiente. Además, ajusta el date.timezone, y memory_limit con el entorno actual de tu servidor.
date.timezone = Europe/Amsterdam
Cuando hayas terminado, guarda el archivo y sal.
Ahora ejecuta el siguiente comando para reiniciar el servicio PHP-FPM y aplicar tus cambios.
sudo systemctl restart php8.3-fpm
Configurar el servidor MySQL
Ahora que ya has configurado PHP-FPM, en la siguiente sección configurarás la instalación del servidor MySQL y crearás una nueva base de datos y un nuevo usuario para Magento.
Asegura la instalación de tu servidor MySQL ejecutando el siguiente comando.
sudo mysql_secure_installation
A continuación se te preguntará por las configuraciones del servidor MySQL:
- Introduce y para activar el componente VALIDAR CONTRASEÑA.
- Introduce 1 para establecer el nivel de seguridad de la contraseña en MEDIO.
- Introduce y cuando se te pida que cambies la contraseña raíz de MySQL.
- Introduce y para eliminar el usuario anónimo por defecto.
- Introduce y para no permitir el acceso remoto al usuario raíz de MySQL.
- Introduce y de nuevo para eliminar la prueba de base de datos por defecto de MySQL.
- Por último, introduce y para recargar las tablas de MySQL privilegia aplicar los cambios.
Una vez configurado MySQL, tienes que crear una base de datos y un usuario nuevos para Magento.
Accede al servidor MySQL con el siguiente comando. Escribe tu contraseña de root de MySQL cuando se te solicite.
sudo mysql -u root -p
Ahora ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario para Magento. En este ejemplo, crearás un nuevo usuario y base de datos‘magento‘ con la contraseña‘M4gentoPassw0rd__‘.
Asegúrate de cambiar los siguientes datos con tu información. Además, la contraseña MySQL para Magento debe tener un carácter especial, un número y mayúsculas.
CREATE DATABASE magento; CREATE USER 'magento'@'localhost' IDENTIFIED BY 'M4gentoPassw0rd__'; GRANT ALL PRIVILEGES ON magento.* to 'magento'@'localhost'; FLUSH PRIVILEGES;
A continuación, ejecuta la siguiente consulta para verificar los privilegios del usuario‘magento‘. Asegúrate de que tu usuario puede acceder a la base de datos ‘magento‘.
SHOW GRANTS FOR magento@localhost;
Por último, escribe quit para salir del servidor MySQL.
Instalar Magento a través de la línea de comandos
En esta sección, descargarás el código fuente de Magento e instalarás las dependencias PHP utilizando Composer. A continuación, instalarás Magento mediante la línea de comandos. Por último, generarás un crontab para Magento.
Ve al directorio‘/var/www’ y descarga el código fuente de Magento utilizando el siguiente comando wget. Comprueba la página GitHub de Magento y coge la URL de la última versión de Magento.
cd /var/www wget https://github.com/magento/magento2/archive/refs/tags/2.4.7.tar.gz
Una vez completada la descarga, extrae el código fuente de Magento y renombra el directorio extraído a ‘magento2’. Con esto, tu instalación de Magento debería estar ubicada en ‘/var/www/magento2’.
tar -xf 2.4.7.tar.gz mv magento2-* magento2
Ahora ejecuta el siguiente comando para crear directorios adicionales para Composer y cambia la propiedad del directorio‘/var/www ‘ al usuario‘www-data‘.
sudo mkdir -p /var/www/{.config,.cache} sudo chown -R www-data:www-data /var/www
A continuación, ejecuta el siguiente comando para dar permiso al usuario ‘www-data‘ para leer, escribir y ejecutar dentro del directorio ‘/var/www/magento2‘.
sudo chmod u+rwx /var/www/magento2
A continuación, ve al directorio ‘/var/www/magento2‘ e instala las dependencias PHP para Magento con el siguiente comando de Composer. Esto asegurará que tus dependencias para Magento están instaladas
cd /var/www/magento2 sudo -u www-data composer install
Después de instalar las dependencias, ejecuta el comando siguiente para permitir el permiso de usuario‘www-data‘ de‘rwx’ a los directorios‘generated‘ y‘var’ dentro de la raíz web de Magento.
sudo chown -R www-data:www-data /var/www/magento2/var /var/www/magento2/generated sudo chmod u+rwx /var/www/magento2/var /var/www/magento2/generated sudo chmod g+rw /var/www/magento2/var /var/www/magento2/generated
Ahora ejecuta el siguiente comando para iniciar la instalación de Magento. Asegúrate de cambiar los detalles de la URL, la base de datos MySQL, el usuario administrador y la contraseña de tu instalación de Magento.
sudo -u www-data bin/magento setup:install \ --base-url=http://hwdomain.io \ --db-host=localhost \ --db-name=magento2 \ --db-user=magento \ --db-password=M4gentoPassw0rd__ \ --admin-firstname=bob \ --admin-lastname=admin \ [email protected] \ --admin-user=bob \ --admin-password=BobAdm1nP4ssword \ --currency=USD \ --timezone=Europe/Amsterdam \ --use-rewrites=1 \ --session-save=redis \ --search-engine=opensearch \ --opensearch-host=127.0.0.1 \ --opensearch-port=9200 \ --opensearch-enable-auth=0 \ --opensearch-index-prefix=magento22 \ --opensearch-timeout=30
A continuación puedes ver cómo comienza la instalación de Magento:
Una vez completada, verás la salida‘Instalación de Magento completada‘ y la ruta URL del administrador para tu instalación de Magento. Asegúrate de guardar la URL generada para la página de administración de Magento.
Para finalizar la instalación de Magento, ejecuta el siguiente comando para generar crontab para Magento y ejecutar la indexación para Magento.
sudo -u www-data bin/magento cron:install sudo -u www-data bin/magento cron:run --group index
Puedes comprobar la lista crontab para el usuario ‘www-data’ con lo siguiente:
crontab -u www-data -l
A continuación puedes ver que se ha generado el crontab para Magento.
Por último, ejecuta el siguiente comando para borrar la caché de tu instalación de Magento. Con esto, ya has completado la instalación de Magento, lo siguiente que tienes que hacer es configurar el servidor web Nginx.
sudo -u www-data bin/magento cache:clean
Configurar el bloque del servidor Nginx
En este punto, tu instalación de Magento está terminada, ahora crearás un nuevo servidor Nginx para ejecutar tu instalación de Magento. Asegúrate de que tienes un nombre de dominio apuntando a la dirección IP de tu servidor.
Crea un nuevo bloque de configuración del servidor Nginx‘/etc/nginx/sites-available/magento.conf‘ con el editor nano.
sudo nano /etc/nginx/sites-available/magento.conf
Introduce la siguiente configuración y asegúrate de cambiar la opción server_name por el nombre de dominio de tu Magento.
upstream fastcgi_backend { server unix:/run/php/php8.3-fpm.sock; }
server {
listen 80;
listen [::]:80;
server_name hwdomain.io;
set $MAGE_ROOT /var/www/magento2/;
include /var/www/magento2/nginx.conf.sample;
client_max_body_size 2M;
access_log /var/log/nginx/magento.access;
error_log /var/log/nginx/magento.error;
}
Cuando hayas terminado, guarda y sal del archivo.
Ahora ejecuta el siguiente comando para activar el bloque de servidor‘magento.conf‘ y verifica la sintaxis de tu Nginx. Asegúrate de que obtienes la salida‘syntax is ok – test is successful‘.
sudo ln -s /etc/nginx/sites-available/magento.conf /etc/nginx/sites-enabled/ sudo nginx -t
Por último, reinicia el servicio Nginx con lo siguiente para aplicar tu nueva configuración del bloque de servidor. Una vez ejecutado el comando, tu instalación de Magento estará disponible.
sudo systemctl restart nginx
Asegurar Magento con HTTPS
Si estás ejecutando Magento en el dominio público, debes asegurarlo con HTTPS. En esta sección, asegurarás tu instalación de Magento con HTTPS mediante Certbot y Letsencrypt.
Instala el plugin Certbot y Certbot Nginx utilizando el siguiente comando. Introduce Y para confirmar la instalación.
sudo apt install certbot python3-certbot-nginx
Una vez completada la instalación, ejecuta el siguiente comando para generar certificados SSL/TLS desde Letsencrypt. Asegúrate de cambiar la dirección de correo electrónico y el nombre de dominio que aparecen a continuación con tu información.
sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email protected] -d hwdomain.io
Tu instalación de Magento debería estar protegida automáticamente con HTTPS cuando el proceso haya finalizado. Tus certificados SSL/TLS están en el directorio‘/etc/letsencrypt/live/domain.com‘.
Acceder a Magento
Abre tu navegador web y visita tu nombre de dominio Magento, por ejemplo https://hwdomain.io. Si la instalación se ha realizado correctamente, verás la página de índice predeterminada de Magento como la siguiente.
Ahora, visita la URL de administración de Magento, que es https://hwdomain.io/admin_ze87mmj. Consulta el proceso de instalación.
Introduce tu usuario y contraseña de administrador de Magento y pulsa Iniciar sesión.
Si se realiza correctamente, deberías obtener el panel de administración de Magento como el siguiente:
Conclusión
¡Enhorabuena! Has completado la instalación de Magento eCommerce en el servidor Ubuntu 24.04. Tienes Magento instalado con la pila LEMP (Linux, Nginx, MySQL y PHP-FPM), OpenSearch y Redis. También has asegurado Magento con HTTPS a través de Certbot y Letsencrypt.