Cómo instalar Magento 2 con Nginx y Let’s Encrypt SSL en Ubuntu 20.04 LTS
Magento es un software de comercio electrónico de código abierto ampliamente utilizado y un sistema de gestión de contenidos para sitios web de comercio electrónico basado en PHP Zend Framework. Utiliza MySQL o MariaDB como base de datos. El desarrollo de Magento se inició en 2008 por Varien.
En este tutorial, te mostraremos paso a paso cómo instalar Magento 2 en la última versión Ubuntu 20.04. Instalaremos Magento bajo la pila LEMP, el servidor web Nginx, PHP-FPM 7.3 y el servidor MariaDB.
Requisitos
Para este tutorial, instalaremos Magento 2 en el sistema Ubuntu 20.04 con 2 GB de RAM, 50 GB de espacio libre en disco y 2 CPUs.
¿Qué haremos?
- Instalar el servidor web Nginx
- Instalar y configurar PHP-FPM 7.3
- Instalar y configurar el servidor MySQL
- Instalar PHP Composer
- Descargar e Instalar Magento
- Generar SSL Letsencrypt
- Configurar Nginx Virtualhost para Magento
- Post-Instalación de Magento
Paso 1 – Instalar el servidor web Nginx
En primer lugar, instalaremos el servidor web Nginx en el sistema Ubuntu 20.04.
Instala Nginx utilizando el comando apt que aparece a continuación.
sudo apt install nginx
Una vez completada la instalación, inicia el servicio Nginx y añádelo al arranque del sistema.
systemctl start nginx systemctl enable nginx
Después, comprueba el estado del servicio Nginx utilizando el siguiente comando.
systemctl status nginx
El servidor web Nginx está en funcionamiento en el servidor Ubuntu 20.04.
A continuación, abriremos los puertos HTTP y HTTPS en nuestro sistema Ubuntu.
Ejecuta el siguiente comando ufw.
for svc in ssh http https do ufw allow $svc done
Como resultado, los servicios SSH, HTTP y HTTPS se han añadido a la regla de cortafuegos ufw.
Ahora ejecuta la habilitación del cortafuegos ufw mediante el siguiente comando.
ufw enable
Escribe «y» y pulsa Intro, y habrás habilitado el cortafuegos ufw.
Paso 2 – Instalar y configurar PHP-FPm 7.3
Tras instalar el servidor web Nginx, instalaremos el PHP-FPM en nuestro servidor Ubuntu 20.04.
Por defecto, el Ubuntu 20.04 viene con la versión más reciente de PHP/PHP-FPM 7.4. Pero por ahora, Magento sólo funciona con PHP/PHP-FPM 7.3. Y en este paso, instalaremos el PHP-FPM 7.3 desde el repositorio PPA.
Antes de continuar, instala el paquete ‘software-properties-common’ y añade el repositorio PPA para PHP 7.3 utilizando el siguiente comando.
sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php
El comando ‘add-apt-repository’ actualizará automáticamente todos los repositorios del sistema.
Ahora instala los paquetes PHP-FPM 7.3 desde el repositorio PPA utilizando el siguiente comando apt.
sudo apt install php7.3-fpm php7.3-common php7.3-curl php7.3-cli php7.3-mysql php7.3-gd php7.3-xml php7.3-json php7.3-intl php-pear php7.3-dev php7.3-common php7.3-mbstring php7.3-zip php7.3-soap php7.3-bcmath php7.3-opcache -y
Y la instalación de PHP-FPM 7.3 se habrá completado.
Después, ve al directorio ‘/etc/php/7.3’ y edita la configuración ‘php.ini’ para PHP-FPM.
cd /etc/php/7.3/ vim fpm/php.ini
Descomenta y cambia la configuración como se indica a continuación.
date.timezone = Asia/Singapore memory_limit = 1G max_execution_time = 1800 zlib.output_compression = On cgi.fix_pathinfo = 0
opcache.enable=1
opcache.save_comments = 1
Guárdala y ciérrala.
A continuación, inicia el servicio PHP-FPM y añádelo al arranque del sistema.
systemctl start php7.3-fpm systemctl enable php7.3-fpm
El servicio PHP-FPM está en marcha, compruébalo con el comando que aparece a continuación.
ss -xa | grep php systemctl status php7.3-fpm
Como resultado, el PHP-FPM está en funcionamiento en el servidor Ubuntu 20.04, se ejecuta bajo el archivo sock ‘/run/php/php7.3-fpm.sock’.
Paso 3 – Instalar y configurar el servidor MariaDB
En este paso, instalaremos el servidor de base de datos MariaDB, configuraremos la contraseña raíz por defecto para MariaDB y crearemos una nueva base de datos y un nuevo usuario para Magento.
Instala los paquetes del Servidor MariaDB en el Ubuntu 20.04 utilizando el comando apt que aparece a continuación.
sudo apt install mariadb-server
Una vez completada la instalación, inicia el servicio MariaDB y añádelo al arranque del sistema.
systemctl start mariadb systemctl enable mariadb
El servicio MariaDB ya está en marcha.
A continuación, configuraremos la contraseña raíz de MariaDB utilizando la utilidad ‘mysql_secure_instalaltion’.
Ejecuta el comando ‘mysql_secure_instalaltion’ que aparece a continuación.
mysql_secure_installation
Escribe tu contraseña segura para el usuario root de MariaDB y escribe ‘Y’ para toda la configuración.
Set a root password? [Y/n] Y Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Como resultado, se ha configurado la contraseña raíz de MariaDB.
A continuación, crearemos una nueva base de datos y un nuevo usuario para la instalación de Magento.
Accede al intérprete de comandos MariaDB/MySQL utilizando el comando mysql que aparece a continuación.
mysql -u root -p
Ahora crea una nueva base de datos para nuestra instalación de Magento. Crea la base de datos ‘magentodb’ y el usuario ‘magentouser’ con la contraseña ‘magentodbpass’.
Ejecuta las siguientes consultas MySQL.
create database magentodb; create user magentouser@'localhost' identified by 'magentopassdb'; grant all privileges on magentodb.* to magentouser@'localhost'; flush privileges;
Ahora escribe ‘exit’ para salir del intérprete de comandos de MySQL.
Como resultado, se ha completado la instalación de la nueva base de datos y el nuevo usuario para Magento.
Paso 4 – Instalar Composer
Composer es un gestor de dependencias para PHP. Es un gestor de paquetes a nivel de aplicación para PHP que te permite descargar dependencias y librerías PHP adicionales a tu proyecto PHP.
En este paso, instalaremos PHP Composer desde el repositorio de Ubuntu.
Instala Composer utilizando el comando apt que aparece a continuación.
sudo apt install composer -y
Una vez completada la instalación, comprueba la versión de Composer a continuación.
composer --version
A continuación se muestra la respuesta que obtendrás.
Composer 1.10.1 2020-03-13 20:34:27
Como se puede ver, el Composer 1.10 ha sido instalado en el Servidor ubuntu 20.04.
Paso 5 – Descargar e instalar Magento 2
En este paso, descargaremos e instalaremos el Magento 2, y todos los paquetes PHP necesarios utilizando el Composer.
En primer lugar, ve al directorio ‘/var/www/’ y descarga el código fuente de Magento 2.3.5 CE (Community Edition) utilizando el comando wget como se indica a continuación.
cd /var/www/ wget -q https://github.com/magento/magento2/archive/2.3.5.tar.gz
Una vez completado todo, extrae el código fuente de Magento y renombra el directorio extraído a directorio ‘magento2’.
tar -xf 2.3.5.tar.gz mv magento2-*/ magento2/
A continuación, ve al directorio de instalación de Magento ‘/var/www/magento2’ e instala todas las dependencias de los paquetes PHP para Magento utilizando el comando Composer como se indica a continuación.
cd /var/www/magento2/ composer install
Una vez completada toda la instalación, fija la propiedad del directorio de instalación de Magento 2 al usuario ‘www-data’.
chown -R www-data:www-data /var/www/magento2
Como resultado, la instalación de Magento 2 y todas las dependencias de paquetes se ha completado.
Paso 6 – Generar SSL Letsencrypt
Para este tutorial, aseguraremos la instalación de Magento 2 utilizando el SSL Letsencrypt. Y en este paso, generaremos el SSL Letsencrypt utilizando el comando certbot. Asegúrate también de que tu nombre de dominio está resuelto en la dirección IP del servidor.
Instala la herramienta certbot utilizando el siguiente comando apt.
sudo apt install certbot
Una vez completada la instalación, detén el servicio Nginx.
systemctl stop nginx certbot certonly --standalone --agree-tos --no-eff-email --email [email protected] -d magento.hakase-labs.io
Una vez completado todo, obtendrás tus certificados SSL en el directorio ‘/etc/letsencrypt/live/magento.tu-dominio.com’.
Como resultado, se ha generado la instalación SSL Letsencrypt para Magento 2.
Paso 7 – Configurar Nginx Virtualhost para Magento 2
En este paso, añadiremos una nueva configuración de Nginx virtualhost para Magento 2.
Ve al directorio ‘/etc/nginx/sites-available/’ y crea una nueva configuración ‘magento’ utilizando el editor vim.
cd /etc/nginx/sites-available/ vim magento
Pega en ella la siguiente configuración.
upstream fastcgi_backend { server unix:/run/php/php7.3-fpm.sock; } server { listen 80; listen [::]:80; server_name magento.hakase-labs.io; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name magento.hakase-labs.io; ssl_certificate /etc/letsencrypt/live/magento.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/magento.hakase-labs.io/privkey.pem; set $MAGE_ROOT /var/www/magento2; set $MAGE_MODE developer; include /var/www/magento2/nginx.conf.sample; }
Guárdala y ciérrala.
A continuación, activa el host virtual Magento Nginx y prueba la configuración nginx, y asegúrate de que no se produce ningún error.
ln -s /etc/nginx/sites-available/magento /etc/nginx/sites-enabled/ nginx -t
Ahora reinicia el servicio Nginx utilizando el siguiente comando.
systemctl restart nginx
Como resultado, se ha creado y activado la configuración del host virtual Nginx para Magento 2.
Paso 8 – Postinstalación de Magento
Abre tu navegador web y escribe el nombre de dominio de tu instalación de Magento en la barra de direcciones.
https://magento.hakase-labs.io/
Ahora se te redirigirá a la conexión segura HTTPS y aparecerá la página de bienvenida de Magento y las Condiciones del servicio.
Haz clic en el botón‘Aceptar e instalar Magento‘ para continuar.
En la página ‘Comprobación de disponibilidad’, asegúrate de que todos los requisitos están en verde y haz clic en el botón‘Siguiente‘.
Introduce los datos de la base de datos MariaDB y del usuario que hemos creado anteriormente y haz clic en «Siguiente«.
Para la ‘Configuración web’, cambia todo el protocolo HTTP a HTTPS, y asegúrate de cambiar la ‘Dirección del administrador de Magento’.
Ahora haz clic en ‘Opciones Avanzadas’ y marca todas las opciones HTTPS, luego desmarca la opción ‘Reescrituras Apache’ y vuelve a hacer clic en el botón‘Siguiente‘.
A continuación, en la configuración ‘Personaliza tu tienda’ de Magento, déjalo por defecto y pulsa el botón ‘Siguiente‘.
Ahora escribe los detalles de usuario admin, correo electrónico y contraseña. Luego haz clic en el botón Siguiente.
Haz clic en el botón ‘ Instalar ahora ‘ para instalar tu tienda Magento 2.
Ahora asegúrate de que la instalación no tiene ningún error.
Una vez finalizada la instalación, aparecerá la página«Éxito» que se muestra a continuación.
Haz clic en «Iniciar Magento Admin» para acceder a tu panel de administración de Magento.
Ahora escribe tu usuario y contraseña de Magento Admin, luego haz clic en » Iniciar sesión » y verás el panel de control de Magento Admin como se muestra a continuación.
Para la página de índice por defecto de Magento, abre una nueva pestaña y escribe el nombre de tu dominio en la barra de direcciones.
A continuación se muestra la página de índice por defecto de Magento.
Como resultado, la instalación de Magento 2 se ha completado.
A continuación, vuelve al shell de tu servidor y vamos a configurar el Cron de Magento y a eliminar el permiso de escritura de algún directorio de instalación de Magento.
Para configurar el cron de Magento, ejecuta el siguiente comando.
cd /var/www/magento2 sudo -u www-data php bin/magento cron:install --force
El cron de Magento se ejecutará bajo el usuario ‘www-data’, compruébalo con el siguiente comando.
crontab -u www-data -l
Como resultado, el Magento Cron se ha añadido al sistema.
A continuación, tenemos que eliminar el permiso de escritura del directorio ‘/var/www/magento2/app/etc’.
Ejecuta el siguiente comando chmod.
chmod u-w /var/www/magento2/app/etc
Y finalmente, la instalación de Magento 2 con el servidor web Nginx, el servidor MariaDB, PHP-FPM 7.3 en el último Ubuntu 20.04 se ha completado con éxito.