Instalación de la plataforma de comercio electrónico Magento con Apache2 y Let’s Encrypt en Ubuntu 20.04
Magento es una aplicación web de comercio electrónico gratuita y de código abierto que te permite crear una tienda de comercio electrónico totalmente funcional en cuestión de minutos. Está escrito en PHP y combina potentes funciones con flexibilidad y una interfaz fácil de usar. Es una de las soluciones más populares para las tiendas online autoalojadas debido a su sencillez y a su potente panel de administración. Viene con un rico conjunto de funciones que incluyen la gestión del sitio, el SEO, la gestión de catálogos, la navegación por productos y catálogos, la gestión de pedidos, el pago, las promociones y las herramientas de conversión, y mucho más.
En este tutorial, te mostraremos cómo instalar la plataforma de comercio electrónico Magento con Apache y Let’s Encrypt SSL en Ubuntu 20.04.
Requisitos previos
- Un servidor con Ubuntu 20.04 con 4 GB de RAM.
- Un nombre de dominio válido apuntado con tu servidor.
- Una contraseña de root configurada en tu servidor.
Instalar el servidor LAMP
Magento se ejecuta en el servidor web, escrito en PHP, y utiliza MariaDB como base de datos. Así que tendrás que instalar una pila LAMP en tu servidor.
Primero, instala el servidor web Apache y el servidor MariaDB con el siguiente comando:
apt-get install apache2 mariadb-server mariadb-client -y
La última versión de Magento sólo es compatible con PHP 7.1.3+ y 7.2.x. Así que tendrás que instalar en tu servidor las versiones de PHP compatibles con las extensiones necesarias.
Por defecto, Ubuntu 20.04 viene con la versión 7.4 de PHP. Así que tendrás que añadir el PPA de Ondrej en tu sistema para poder instalar otras versiones de PHP.
Puedes añadir el PPA de PHP de Ondrej con el siguiente comando:
apt-get install software-properties-common -y
add-apt-repository ppa:ondrej/php
A continuación, actualiza el repositorio e instala PHP con otras extensiones necesarias mediante el siguiente comando:
apt-get install php7.2 libapache2-mod-php7.2 php7.2-bcmath php7.2-common php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-gd php7.2-xml php7.2-intl php7.2-mysql php7.2-cli php7.2-ldap php7.2-zip php7.2-curl wget curl unzip -y
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar la base de datos MariaDB
Por defecto, MariaDB no está asegurada. Así que es una buena idea asegurar y establecer la contraseña de la raíz de MariaDB. Puedes hacerlo con el siguiente comando:
mysql_secure_installation
Responde a todas las preguntas como se muestra a continuación:
Enter current password for root (enter for none): Set root password? [Y/n] Y New password: Re-enter new password: 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
Una vez asegurada la MariaDB, entra en el shell de MariaDB:
mysql -u root -p
Proporciona tu contraseña de root de MariaDB y luego crea una base de datos y un usuario para Magento:
MariaDB [(none)]> CREATE DATABASE magentodb;
MariaDB [(none)]> CREATE USER 'magento'@'localhost' IDENTIFIED BY 'password';
A continuación, concede todos los privilegios a la base de datos de Magento con el siguiente comando:
MariaDB [(none)]> GRANT ALL ON magentodb.* TO 'magento'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
A continuación, vacía los privilegios y sal del shell de MariaDB con el siguiente comando:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Una vez que hayas terminado, puedes pasar al siguiente paso.
Descargar Magento
En el momento de escribir este tutorial, la última versión de Magento es la 2.3.5. Puedes descargarla desde la página oficial de descargas de Magento.
Una vez descargado, extrae el archivo descargado al directorio raíz de la web de Apache con el siguiente comando:
mkdir /var/www/html/magento
tar -xvjf magento-ce* -C /var/www/html/magento/
A continuación, da la propiedad y el permiso adecuados al directorio de Magento:
chown -R www-data:www-data /var/www/html/magento/
chmod -R 755 /var/www/html/magento/
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar Apache para Magento
A continuación, crea un nuevo archivo de configuración del host virtual de Apache para servir al sitio web de Magento.
nano /etc/apache2/sites-available/magento.conf
Añade las siguientes líneas:
<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/html/magento/ ServerName magento.linuxbuz.com <Directory /var/www/html/magento/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Guarda y cierra el archivo y luego habilita el host virtual de Magento y el módulo de reescritura de Apache con el siguiente comando:
a2ensite magento.conf
a2enmod rewrite
Por último, reinicia el servicio Apache para aplicar los cambios:
systemctl restart apache2
En este punto, el servidor web Apache está configurado para servir a Magento.
Asegura Magento con Let’s Encrypt SSL
Siempre es una buena idea asegurar tu sitio web con el SSL gratuito de Let’s Encrypt. Primero, instala el cliente Certbot en tu servidor para descargar y configurar Let’s Encrypt SSL para tu sitio web.
apt-get install certbot python3-certbot-apache -y
Una vez instalado el Certbot, ejecuta el siguiente comando para descargar e instalar Let’s Encrypt SSL para tu sitio web:
certbot --apache -d magento.linuxbuz.com
Se te pedirá que proporciones tu correo electrónico válido y que aceptes las condiciones del servicio, como se muestra a continuación:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for magento.linuxbuz.com Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/magento-le-ssl.conf Enabled Apache socache_shmcb module Enabled Apache ssl module Deploying Certificate to VirtualHost /etc/apache2/sites-available/magento-le-ssl.conf Enabling available site: /etc/apache2/sites-available/magento-le-ssl.conf
A continuación, se te pedirá que elijas si quieres redirigir el tráfico HTTP a HTTPS o no:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Escribe 2 y pulsa Enter para finalizar la instalación.
Redirecting vhost in /etc/apache2/sites-enabled/magento.conf to ssl vhost in /etc/apache2/sites-available/magento-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://magento.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=magento.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/magento.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/magento.linuxbuz.com/privkey.pem Your cert will expire on 2020-08-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Acceder al sitio web de Magento
En este punto, tu sitio web de Magento está protegido con Let’s Encrypt SSL.
Ahora, abre tu navegador web y escribe la URL https://magento.linuxbuz.com. Serás redirigido al asistente de instalación de Magento basado en la web:
Haz clic en el botón Aceptar e instalar Magento. Deberías ver la pantalla de preparación de Magento:
Haz clic en el botón Iniciar comprobación de disponibilidad. Una vez completada la comprobación de disponibilidad, deberías ver la siguiente pantalla:
Haz clic en el botón Siguiente. Deberías ver la pantalla de configuración de la base de datos:
Proporciona el nombre de tu base de datos Magento, el nombre de usuario de la base de datos, la contraseña y haz clic en el botón Siguiente. Deberías ver el asistente de configuración web de Magento:
Proporciona la dirección de tu tienda Magento y de tu administrador, activa el HTTPS y haz clic en el botón Siguiente. Deberías ver la pantalla de personalización de la tienda:
Establece tu zona horaria, moneda e idioma preferidos y haz clic en el botón Siguiente. Deberías ver la pantalla de creación del usuario administrador:
Proporciona tu nombre de usuario de administrador, correo electrónico, contraseña y haz clic en el botón Siguiente. Deberías ver la siguiente pantalla:
Haz clic en el botón Instalar ahora para iniciar la instalación. Una vez que la instalación se haya completado con éxito, deberías ver la siguiente pantalla:
Haz clic en la dirección de administración de Magento. Deberías ver la página de administración de Magento:
Proporciona tu nombre de usuario y contraseña de administrador de Magento y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de Magento en la siguiente pantalla:
También puedes acceder a la tienda de Magento utilizando la URL https://magento.linuxbuz.com. Deberías ver la siguiente pantalla:
Conclusión
Enhorabuena! has instalado con éxito Magento con Let’s Encrypt SSL en Ubuntu 20.04. Ahora puedes desplegar tu propia tienda online fácilmente. No dudes en preguntarme si tienes alguna duda.