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 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 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
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:
Iniciamos la instalación haciendo un check sobre las extensiones necesarias para PHP:
Si 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:
Configuramos la base de datos que hemos creado anteriormente:
Luego configuramos la configuración de la tienda, añadiendo el dominio y el acceso al panel de administración:
A continuación configuramos la zona horaria, la moneda y el idioma:
Y finalmente, configuramos un usuario administrador:
Una vez hemos configurado todo, iniciamos la instalación de la tienda:
¡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.