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:

Configuración de Magento

Haz clic en el botón Aceptar e instalar Magento. Deberías ver la pantalla de preparación de Magento:

Comprobación de la preparación

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:

Se cumplen todos los requisitos previos

Haz clic en el botón Siguiente. Deberías ver la pantalla de configuración de la base de datos:

Configurar 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:

configuración de la web

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:

Ajustes personalizados 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:

Crear un 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:

Instalar ahora

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:

Instalación realizada con éxito

Haz clic en la dirección de administración de Magento. Deberías ver la página de administración de Magento:

Inicio de sesión en 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:

Panel de control de Magento

También puedes acceder a la tienda de Magento utilizando la URL https://magento.linuxbuz.com. Deberías ver la siguiente pantalla:

Página de inicio de Magento

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.

También te podría gustar...