En Clouding tienes disponible la imagen preinstalada de Magento 2, pero si te interesa instalarlo tú mismo, a continuación te mostramos un tutorial con todos los pasos para instalar el e-commerce Magento, ¿prefieres que te lo instale nuestro equipo técnico? Llámanos o escríbenos a soporte@clouding.io, ¡nos pondremos manos a la obra en seguida para que comiences tu negocio online ya!
Magento es el sistema de gestión de contenidos más popular para sitios web de comercio electrónico. Este CMS se utiliza tanto en empresas pequeñas como empresas grandes ya que se puede adaptar a las necesidades de cada uno gracias a las miles de extensiones y temas.
Magento utiliza MySQL, lenguaje de programación PHP y partes del framework Zend. En el siguiente tutorial, explicaremos cómo instalar Magento en un VPS de Clouding con una instalación previa de LAMP bajo Ubuntu 20.04.
Antes de empezar
Es importante que antes de seguir con el tutorial tengamos un servidor VPS en Clouding con lo siguiente:
- Es recomendable que nuestro VPS tenga 2GB o más de RAM debido a las exigencias de procesamiento que tiene Magento.
- Para continuar correctamente es importante que el VPS tenga un LAMP instalado (Linux, Apache, MySQL, PHP). Además que tener una configuración básica.
Preparación del servidor para Magento
Primero hay que actualizar el sistema:
# apt update && sudo apt upgrade
Después hay que instalar MYSQL:
# apt install mysql-server
Instalamos apache2:
# apt install apache2
Instalamos PHP:
# apt-get install php7.4
Magento requiere unas dependencias de PHP extra para su buen funcionamiento:
# apt install php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip php7.4-bcmath php7.4-soap
Tendremos que descargar Elasticsearch para poder instalar magento 2:
# cd /opt
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-amd64.deb
# dpkg -i elasticsearch-7.6.1-amd64.deb
# systemctl start elasticsearch
Configuración de Apache para Magento
Antes de descargar e instalar Magento, Apache necesita estar configurado para manejar correctamente las tareas de tráfico y computación de Magento, y algunos módulos adicionales tendrán que ser instalados y activados.
Primero comprobamos que estamos usando la versión 2.4 de Apache con:
# apache2 -v
Activa el módulo rewrite para Apache:
# a2enmod rewrite
Crea un fichero de configuración para Magento:
# touch /etc/apache2/sites-available/magento.conf
Y en él, añade lo siguiente:
<Directory /var/www/html/vhosts/magento/www>
Require all granted
</Directory>
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/vhosts/magento/www
ErrorLog /var/www/html/vhosts/magento/logs/error.log
CustomLog /var/www/html/vhosts/magento/logs/access.log combined
<Directory /var/www/html/vhosts/magento/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
</VirtualHost>
Es importante que de esta configuración modifiques los parámetros ServerName, ServerAlias, ServerAdmin y DocumentRoot.
Creamos los directorios donde copiaremos Magento:
# mkdir -p /var/www/html/vhosts/magento/{logs,www}
Activamos el VirtualHost para Magento:
# a2ensite magento.conf
Y recargamos la configuración de Apache:
# systemctl reload apache2
Creación de la Base de Datos
Iniciamos sesión dentro de MySQL con el usuario root:
# mysql -u root -p
Creamos la base de datos para Magento, un usuario y configuramos los permisos. Para este tutorial hemos decidido llamar la base de datos y el usuario como Magento. Reemplaza p4ssw0rd por una contraseña segura.
CREATE DATABASE magento;
CREATE USER 'magento' IDENTIFIED BY 'p4ssw0rd';
GRANT ALL PRIVILEGES ON magento.* TO 'magento';
Salimos del MySQL shell:
quit
Configuración PHP
Necesitamos modificar dos parámetros en la configuración de PHP para que Magento funcione correctamente. Editamos los ficheros /etc/php/7.4/cli/php.ini y /etc/php/7.4/apache2/php.ini. Buscamos los siguientes parámetros y los modificamos tal que así:
memory_limit = 2G
date.timezone = Europe/Madrid
Descarga Magento
Descargamos Magento en la carpeta de instalación, para ello usamos los siguientes comandos:
# cd /var/www/html/vhosts/magento/www/
# git clone https://github.com/magento/magento2.git /var/www/html/vhosts/magento/www/
Configuración de usuarios y permisos
Creamos un usuario para los ficheros de Magento. Para simplificar lo llamaremos magento:
# useradd magento
A continuación lo añadiremos al grupo del Apache (el www-data):
# usermod -g www-data magento
Y una vez creado el usuario configuramos los permisos de la siguiente manera. Ejecutamos los siguientes comandos en el orden establecido:
# cd /var/www/html/vhosts/magento/www
# find var vendor pub/static pub/media app/etc -type f -exec chmod g+w {} \;
# find var vendor pub/static pub/media app/etc -type d -exec chmod g+ws {} \;
# chown -R magento:www-data ../../magento
# chmod u+x bin/magento
Instalación Magento
Tendremos que descargar y actualizar el composer:
# curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
# composer install
Procederemos a la instalación con el comando:
# bin/magento setup:install --db-host=localhost --db-name=magento --db-user=magento --db-password=p4ssw0rd --admin-firstname=Soporte --admin-lastname=Clouding --admin-email=your@emailaddress.com --admin-user=soporte --admin-password=p4ssw0rd --language=en_US --currency=USD --timezone=Europe/Madrid --use-rewrites=1
Es importante que se sustituyan todos los parámetros entre comillas por los que queráis configurar:
- base-url: El dominio a configurar, ten en cuenta que si no quieres SSL tendrás que poner http.
- admin-firstname / admin-lastname: Es el nombre completo del administrador.
- admin-email: EL correo electrónico para reiniciar la contraseña y para recibir las notificaciones
- admin-user / admin-password: Son las credenciales para iniciar sesión en el panel de control de Magento.
- db-name: Nombre de la base de datos
- db-host: Anfitrión del servidor MySQL, si es el mismo servidor utiliza localhost.
- db-user: Usuario de la base de datos.
- db-password: Contraseña configurada para la base de datos.
Asignaremos permisos para los directorios:
# chown -R www-data:www-data /var/www/html/vhosts/magento/
¡Y listo! Ya puedes acceder a tu tienda Magento.
Para acceder al panel de administración puedes al final de la instalación verás :
Magento Admin URI: /admin_XXXXXX
Para acceder al panel de administración será tan simple como www.ejemplo.com/admin_xxxxx (el resultado de Magento Admin URI)
Configuración SSL
Empezaremos instalando certbot:
# apt install certbot python3-certbot-apache
# certbot --apache -d example.com -d www.ejemplo.com
Con esto se redirigirá automáticamente por HTTPS.
Configuración Magento
Si has accedido al Tablero de Magento verás que han aparecido unos avisos de los Cron Jobs. Es necesario que para un buen funcionamiento se configure lo siguiente:
Configura Cron Jobs
Abrimos el crontab con el usuario magento que hemos creado:
# crontab -u magento -e
Si es la primera vez que usas cron, te aparecerá un mensaje diciendo que editor quieres usar. Selecciona uno con un número.
Al final del fichero añadimos lo siguiente:
* * * * * /usr/bin/php /var/www/html/vhosts/magento/www/bin/magento cron:run | grep -v "Ran jobs by schedule" >> /var/www/html/vhosts/magento/www/var/log/magento.cron.log
* * * * * /usr/bin/php /var/www/html/vhosts/magento/www/update/cron.php >> /var/www/html/vhosts/magento/www/var/log/update.cron.log
* * * * * /usr/bin/php /var/www/html/vhosts/magento/www/bin/magento setup:cron:run >> /var/www/html/vhosts/magento/www/var/log/setup.cron.log
Nota: Recuerda de cambiar /var/www/html/vhosts/magento/www por la ruta de la instalación de Magento que has configurado. Es importante que php se ejecute con la ruta absoluta /usr/bin/php para que funcione correctamente en Cron Jobs.
La primera línea se encarga de reindexar. La segunda y tercera son necesarias para el Administrador de componentes y actualización del sistema.
Ahora para comprobar que esta configuración funciona, salimos de Magento y volvemos a iniciar sesión, ene ste caso no deberíamos de ver ninguna notificación.
Configurar las opciones X-Frame
Recomendamos encarecidamente inhabilitar la capacidad de mostrar la tienda Magento en un frame, de esta manera evitamos ataques clickjacking. Para ello tenemos que modificar el fichero app/etc/env.php.
Cambia SAMEORIGIN por DENY, como se muestra abajo:
'X-frame-options' => 'DENY',
Así evitamos que los atacantes incrusten su tienda en un frame (por ejemplo, en un sitio malicioso que imite su tienda) en un intento de interceptar pagos y otra información confidencial del cliente.