:::: MENU ::::

Configurar un servidor en EC2 para Magento 2

3.67 avg. rating (71% score) - 3 votes

Para este tutorial hemos utilizado Centos 7, que está disponible en el AWS Marketplace de Amazon EC2 de forma gratuita.

Si todavía estáis en periodo de Free Tier en vuestra cuenta de Amazon, con esta configuración podréis tener 1 año gratis de prácticas con Magento 2 en un servidor de 1 CPU / 1 GB de RAM.

Una vez configurada la instancia con Centos 7, lo primero siempre será realizar la actualización del software del servidor (buenas prácticas aunque vayamos a dedicar el servidor a desarrollo o testing). Para ello, simplemente ejecutar:

yum update

Instalar Apache 2.4 para Magento 2 (Centos 7)

La instalación de apache es muy sencilla también:

yum install httpd

Una vez instalado, será conveniente crear un Virtual Host para configurar el dominio de nuestra tienda. Para ello podemos crear un nuevo archivo de configuración de apache

vim /etc/httpd/conf.d/miweb.conf

Una configuración típica para el Virtual Host podría se la siguiente:

<VirtualHost *:80>
    DocumentRoot "/var/www/html/miweb"
    ServerName miweb.localhost.com
    <Directory "/var/www/html/miweb">
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog "logs/miweb-error.log"
    CustomLog "logs/miweb-access.log" combined
</VirtualHost>

Una vez configurado, reiniciamos el servidor web y lo configuramos para que se inicie automáticamente si se reinicia el servidor:

service httpd restart
sudo systemctl enable httpd.service

Para comprobar que hasta aquí lo estamos haciendo bien, reiniciamos el servidor web

service httpd restart

Y accedemos al dominio configurado en el Virtual Host (miweb.localhost.com) para comprobar que Apache se ha instalado correctamente.

Instalar PHP 7.1 para Magento 2 (Centos 7)

Magento 2 ya no soporta las versiones PHP 5.x que son las versiones de PHP por defecto en Centos 7. Actualmente además es muy recomendable trabajar con PHP 7.x por razones de rendimiento.

Para poder utilizar PHP 7.1 (en el momento de escribir este artículo Magento no es compatible con PHP 7.2) podemos hacerlo mediante el siguiente RPM:

yum install -y http://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-14.ius.centos7.noarch.rpm
yum -y update

A continuación simplemente será necesario instalar php7 con todas sus dependencias necesarias para Magento 2

yum -y install php71u php71u-pdo php71u-mysqlnd php71u-opcache php71u-xml php71u-mcrypt php71u-gd php71u-devel php71u-mysql php71u-intl php71u-mbstring php71u-bcmath php71u-json php71u-iconv php71u-soap

Una vez instalados los diferentes paquetes, reiniciamos apache una vez más y comprobamos que php se ha instalado correctamente.

service httpd restart

Para comprobar la instalación es recomendable crear un archivo PHP en la ruta de nuestra web, y verificar que podemos acceder correctamente.

vim /var/www/html/miweb/index.php

Si todo va bien, procederemos a modificar la configuración de PHP para adaptarla a los requisitos de Magento 2. Para ello editamos el archivo php.ini.

vim /etc/php.ini

Y modificamos las siguientes líneas para que queden como sigue:

date.timezone = Europe/Madrid
memory_limit = 768M

Instalar mySQL 5.7 para Magento 2 (Centos 7)

Una vez más, Magento 2 va por delante de las versiones estables de Centos y nuevamente la versión requerida de MySQL no es la versión por defecto en Centos 7, así que nuevamente necesitaremos instalar un repositorio externo.

wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

Lanzamos la instalación de mysql 5.7 que nos instalará además de forma automática todos los paquetes dependientes.

yum -y localinstall mysql57-community-release-el7-7.noarch.rpm

Una vez instalado, iniciamos el servicio y lo configuramos para que se inicie automáticamente en caso de reinicio del servidor.

systemctl start mysqld

A continuación deberemos realizar la configuración inicial de MySQL, donde se nos pedirá un password de root (recordad, buenas prácticas también aquí).

grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation

Durante la instalación se os pedirá un password de root. El resto de valores que os solicita podéis dejarlos en su valor por defecto.

Crear la base de datos para Magento 2

Una vez instalado MySQL, debemos conectarnos como root con el password que hemos elegido y crear una base de datos vacía para nuestra instalación de Magento 2.

create database magento;
GRANT ALL ON magento.* TO magento@localhost IDENTIFIED BY '<password>';

Y con esto tenemos listo nuestro servidor Centos 7 para Magento 2.

Usuarios Linux y Magento 2. Buenas prácticas.

La recomendación en todo sistema web es mantener usuarios separados para la ejecución de apache (o el servidor web correspondiente) y la propiedad de los archivos, de forma que si alguien compromete nuestra tienda accediendo al panel de control, le ponemos más difícil modificar los archivos ya que el propietario de los mismos es un usuario diferente.

Siguiendo estas recomendaciones, deberemos crear en nuestro Linux un nuevo usuario, diferente del usuario apache o www-data que habitualmente son los usuarios bajo los que se ejecuta apache.

Para ello, debemos ejecutar los siguientes comandos que crean el usuario y le asignan una contraseña.

useradd magento
passwd magento

Cómo el usuario magento y el usuario apache ahora son diferentes, debemos considerar que el proceso de apache debe tener permisos de lectura y ejecución sobre los archivos creados por el usuario propietario de los archivos de magento.

Para conseguir esto, la forma más cómoda es asignar a cada usuario el grupo del contrario como grupo adicional. Suponiendo el usuario recién creado (magento) y el usuario apache, podemos hacerlo de la siguiente forma:

usermod -a -G apache magento
usermod -a -G magento apache

Con esto estaremos listos para la instalación de Magento 2.

Otras consideraciones y configuraciones

Instalar NTP

NTP es un servicio de sincronización de la hora de servidores, que podemos utilizar para mantener en hora nuestros sistemas. Para instalar el cliente NTP que sincronice la hora de nuestro servidor, podemos hacerlo mediante los siguientes comandos, que además configuran el servicio para iniciarse al hacer reboot:

yum -y install ntp.x86_64
chkconfig ntpd on

Una vez instalado, necesitaréis configurar los servidores contra los que se realiza la sincronización. Para ello (si estáis en centos), podéis editar el archivo:

 
vim /etc/ntp.conf

Y añadir las siguientes líneas:

 
server 1.es.pool.ntp.org
server 0.europe.pool.ntp.org
server 2.europe.pool.ntp.org

Una vez añadidas y guardado el archivo, reiniciamos el servicio mediante el siguiente comando:

service ntpd restart

Deshabilitar SELINUX

Si estáis trabajando bajo Centos 7, SeLinux viene activado por defecto.

En un sistema de producción os recomiendo dejarlo activado y si no tenéis conocimientos acerca de su configuración, os recomiendo buscar algún tutorial al respecto y conocerlo para realizar una configuración adecuada.

Si esta es vuestra primera vez configurando un servidor y sólo lo vais a utilizar para realizar pruebas, probablemente desactivarlo es una buena opción, ya que os ahorrará unos cuantos dolores de cabeza.

Para ello, editad el archivo de configuración de SeLinux y modificar las siguientes líneas:

vim /etc/sysconfig/selinux
SELINUX=disabled

A continuación deberéis reiniciar vuestro servidor para que la configuración se aplique y quede desactivado realmente.

Instalar un servidor FTP

Si vais a hacer pruebas con Magento 2, o con cualquier otra plataforma, seguramente querréis disponer de acceso FTP para realizar cambios o subir archivos. Para ello podéis proceder a instalar VSFTP de la siguiente forma:

yum install vsftpd

A continuación deberéis modificar la configuración, para modificar las siguientes líneas:

vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
chroot_local_user=YES

Y reiniciar el servicio mediante:

service vsftpd restart

Instalar Magento 2

En Magento 2 existen hasta 4 formas diferentes de realizar la instalación de la plataforma. Cada una de ellas es apropiada para un tipo de situación diferente.

Mediante FTP

Este método será el adecuado cuando Magento 2 vaya a ejecutarse en un servidor compartido.

Mediante SSH

Si tenemos acceso mediante SSH a nuestro servidor, este es un método igual que el anterior, pero más rápido, ya que no tenemos que realizar la descarga previa de los archivos.

Mediante Composer

Composer es la nueva herramienta para realizar actualizaciones y gestionar las dependencias del core de Magento 2, y también es la forma recomendada de instalación para la mayoría de los casos.

Mediante GitHub + Composer

Esta forma de instalación sólo está recomendada para desarrolladores que quieran contribuir al código del core de Magento 2. Es necesario tener algún conocimiento previo de Composer y Git para desenvolverse con mayor facilidad.

Si sois desarrolladores y queréis saber más acerca de esta forma de instalación, podéis leer el tutorial:

Instalar Magento 2 para realizar contribuciones al core




2 Comments

  • Responder Edu |

    Hola! Quisiéramos desde Camping el FAR de Calella (Barcelona), soluciones para nuestro equipo de programación i mkt. Aceptaríamos presupuestos para cada operación en beneficios para la sociedad, u otros condiciones de mercado.

    Gracias de antemano,

    Cordialmente

    Edu

Hey! Qué opinas sobre el artículo?