Instalación de Magento 2 en Ubuntu 16.04

En Clouding.io tienes disponible la imagen pre-instalada de Magento 2, pero si te interesa instalarlo tú mismo, a continuación te mostramos un tutorial con todos los pasos para instalar 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 16.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

Magento requiere unas dependencias de PHP extra para su buen funcionamiento:

# apt install php7.0-common php7.0-gd php7.0-mcrypt php7.0-curl php7.0-intl php7.0-xsl php7.0-mbstring php7.0-zip php7.0-iconv

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.0/cli/php.ini y /etc/php/7.0/apache2/php.ini. Buscamos los siguientes parámetros y los modificamos tal que así:


memory_limit = 2G
date.timezone = Europe/Madrid

Instalación de Magento

Una vez hemos configurado el servidor web es hora de instalar Magento en él. Lo primero que haremos será registrarnos en la web de Magento para poder descargar los paquetes. Nos descargamos el paquete Full Release.

Seleccionamos el fichero acabado en tar.gz y hacemos clic en Download

magento_1

Como que nos lo habremos descargado localmente, luego tendremos que copiarlo a nuestro servidor. Por ejemplo, podemos usar scp para ello:

# scp Magento-CE-2.1.6-2017-03-29-01-08-05.tar.gz root@46.183.XXX.XXX:/root

Una vez lo tenemos en nuestro servidor, lo descomprimiremos en el directorio que indicamos en el fichero de configuración del Apache

# tar zxf Magento-CE-2.1.6-2017-03-29-01-08-05.tar.gz -C /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:

# 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 de Magento CE

Existen dos modos para instalar Magento, la primera es por versión CLI, es decir, con comandos desde el servidor. La segunda, la fácil y recomendada, es hacerlo mediante el navegador en un entorno más GUI.

Version CLI

Accedemos en la ruta donde hemos copiado nuestro Magento y entramos dentro del directorio bin. En este directorio encontramos un fichero que nos permite ejecutar una instalación mediante comandos.

# ./magento setup:install --admin-firstname="Soporte" --admin-lastname="Clouding" --admin-email="soporte@clouding.io" --admin-user="soporte" --admin-password="p4ssw0rd" --db-name="magento" --db-host="localhost" --db-user="magento" --db-password="p4ssw0rd"

Es importante que se sustituyan todos los parámetros entre comillas por los que queráis configurar:

  • 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.

Cuando acaba con la instalación al final aparece lo siguiente:

[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin_3wonh3

Versión GUI

Accedemos a la instalación desde un navegador donde pondremos en la barra de direcciones la IP del servidor o bien, si hemos configurado un dominio el nombre de dominio. Nos debería de cargar la siguiente página:

magento_install_1Iniciamos la instalación haciendo un check sobre las extensiones necesarias para PHP:

magento_install_2Si todo aparece en verde y está correcto, seguimos hacía delante. En caso de existir algún error examinad el registro para saber que extensión o problema existe. Una vez solventado continuar con la instalación:

magento_install_3Configuramos la base de datos que hemos creado anteriormente:

magento_install_4Luego configuramos la configuración de la tienda, añadiendo el dominio y el acceso al panel de administración:

magento_install_5A continuación configuramos la zona horaria, la moneda y el idioma:

magento_install_6Y finalmente, configuramos un usuario administrador:

magento_install_7Una vez hemos configurado todo, iniciamos la instalación de la tienda:

magento_install_8

¡Y listo! Ya puedes acceder a tu tienda Magento.

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.

To write a comment on this article, fill out the form below. Fields marked with an asterisk (*) are required.