Cómo instalar Magento 2 con Nginx y Letsencrypt en Ubuntu 18.04

Magento es un software de comercio electrónico de código abierto ampliamente utilizado y un sistema de gestión de contenidos para sitios web de comercio electrónico basado en PHP Zend Framework. Utiliza MySQL o MariaDB como base de datos. El desarrollo de Magento se inició en 2008 por Varien.

En este tutorial, te mostraré cómo instalar Magento 2 con Nginx, PHP 7.1 FPM y MySQL como base de datos. Utilizaré ubuntu 18.04 (Bionic Beaver) como sistema operativo del servidor. Si aún no tienes una configuración mínima del servidor, consulta este tutorial para obtener una configuración base adecuada.

Requisitos previos

  • Ubuntu 18.04
  • 2 GB o más de memoria RAM
  • Privilegios de root

Qué vamos a hacer

  1. Instalar Nginx en Ubuntu 18.04
  2. Instalar y configurar PHP-FPM 7.1
  3. Instalar y configurar el servidor MySQL
  4. Instalar y configurar Magento 2
    1. Instalar PHP Composer
    2. Descargar Magento 2
    3. Instalar componentes de Magento
    4. Generar SSL Letsencrypt
    5. Configurar el host virtual Nginx para Magento
    6. Post-Instalación de Magento
  5. Probando

Paso 1 – Instalar Nginx en Ubuntu 18.04 LTS

En este tutorial, utilizaremos el servidor web Nginx para nuestra instalación de Magento.

Inicia sesión en el servidor, actualiza el repositorio y actualiza todos los paquetes.

sudo apt update
sudo apt upgrade

Ahora instala el servidor web Nginx utilizando el siguiente comando apt.

sudo apt install nginx -y

Una vez completada la instalación, inicia el servicio Nginx y habilítalo para que se inicie cada vez que arranque el sistema.

systemctl start nginx
systemctl enable nginx

Una vez instalado el servidor web Nginx, compruébalo utilizando el comando netstat y asegúrate de que el puerto HTTP 80 está en estado ‘LISTEN’. Otra forma es utilizando el comando curl como se indica a continuación.

netstat -plntu
curl -I localhost

Instalar el servidor web Nginx

Paso 2 – Instalar y configurar PHP-FPM 7.1

Tras la instalación del servidor web Nginx, instalaremos PHP 7.1 en el servidor, ya que Magento aún no soporta PHP 7.2. Instalaremos PHP-FPM con todas las extensiones que necesita Magento 2.

Lista de extensiones PHP necesarias para la instalación de Magento 2:

  • bc-math
  • ctype
  • curl
  • dom
  • gd, ImageMagick 6.3.7 (o posterior) o ambos
  • intl
  • mbstring
  • mcrypt
  • hash
  • openssl
  • PDO/MySQL
  • SimpleXML
  • jabón
  • spl
  • libxml
  • xsl
  • zip
  • json
  • iconv

Para esta guía, instalaremos paquetes PHP-FPM desde el repositorio PPA. Utilizaremos el repositorio ‘ondrej/php’.

Instala el paquete ‘software-properties-common’ y añade el repositorio ‘ondrej/php’ utilizando los siguientes comandos.

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y

Instalar PHP 7.1

Ahora instala PHP-FPM 7.1 con todas las extensiones necesarias.

sudo apt install php7.1-fpm php7.1-mcrypt php7.1-curl php7.1-cli php7.1-mysql php7.1-gd php7.1-xsl php7.1-json php7.1-intl php-pear php7.1-dev php7.1-common php7.1-mbstring php7.1-zip php7.1-soap php7.1-bcmath -y

Una vez completada la instalación, comprueba la versión de PHP y las extensiones instaladas utilizando los comandos PHP.

php -v
php -me

Comprueba la instalación de PHP

A continuación, configuraremos el archivo php.ini para el PHP-FPM y el PHP-CLI.

Edita los archivos php.ini utilizando vim.

vim /etc/php/7.1/fpm/php.ini
vim /etc/php/7.1/cli/php.ini

Cambia el valor de esas líneas como se indica a continuación.

memory_limit = 512M
max_execution_time = 180
zlib.output_compression = On

Guarda y sal.

Ahora reinicia el servicio PHP-fpm y habilítalo para que se inicie cada vez al arrancar el sistema.

systemctl restart php7.1-fpm
systemctl enable php7.1-fpm

La instalación y configuración de PHP-FPM 7.1 se ha completado, comprueba el servicio utilizando el comando netstat.

netstat -pl | grep php

Y obtendrás el archivo de calcetines PHP-fpm como se muestra a continuación.

Comprueba el socket PHP-FPM

Paso 3 – Instalar y configurar el servidor MySQL

El software Magento requiere MySQL 5.6.x, y el Magento 2.1.2 o posterior requiere MySQL 5.7.x. En este tutorial, instalaremos el último servidor MySQL 5.8 en el sistema Ubuntu 18.04.

Instala MySQL 5.8 utilizando el comando apt que aparece a continuación.

sudo apt install mysql-server mysql-client -y

Una vez completada la instalación, inicia el servicio MySQL y habilítalo para que se inicie cada vez que arranque el sistema.

systemctl start mysql
systemctl enable mysql

Ahora configuraremos la contraseña raíz de MySQL utilizando el comando ‘mysql_secure_installation’.

mysql_secure_installation

En esta versión MySQL 5.8, hay una mejora de seguridad para la política de contraseñas de MySQL. Tienes que elegir la política de contraseñas: 0 para la política BAJA, 1 para la política MEDIA y 2 para una política de contraseñas FUERTE.

Para esta guía, utilizaremos la política de contraseñas «MEDIA», y se recomienda utilizar la política de contraseñas «FUERTE» en el servidor de producción.

Elige el número «1» y pulsa Intro, a continuación escribe tu nueva contraseña «root» de MySQL.

Instalación segura de MySQL

 Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
 Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
 Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
 Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

La contraseña raíz de MySQL ya está configurada.

A continuación, crearemos una nueva base de datos para nuestra instalación de Magento. Crearemos una nueva base de datos llamada ‘magentodb’ con el usuario ‘magentouser’ y la contraseña ‘Magento0463@#’.

Accede al shell de MySQL utilizando el usuario root.

mysql -u root -p

Ahora ejecuta las siguientes consultas MySQL para crear la base de datos y el usuario.

create database magentodb;
create user magentouser@localhost identified by 'Magento0463@#';
grant all privileges on magentodb.* to magentouser@localhost identified by 'Magento0463@#';
flush privileges;

La instalación y configuración del servidor MySQL para la instalación de Magento se ha completado.

Crear base de datos MySQL y usuario para Magento

Paso 4 – Instalar y configurar Magento 2

En este paso, instalaremos la última versión de Magento 2.2.4 desde el repositorio de Github. Instalaremos el compositor de PHP para instalar los componentes de Magento, descargaremos Magento del repositorio de Github, configuraremos el host virtual Nginx para Magento e instalaremos Magento utilizando la postinstalación basada en web.

– Instalar PHP Composer

Instala PHP Composer en ubuntu 18.04 utilizando el siguiente comando apt.

sudo apt install composer -y

Una vez completada la instalación, comprueba la versión de Composer instalada en el sistema.

composer -V

Instalar PHP Composer

Se ha instalado la última versión de PHP Composer.

– Descarga Magento 2

Ve al directorio ‘/var/www’ y descarga el código fuente del archivo Magento desde Github utilizando el comando wget.

cd /var/www/
wget https://github.com/magento/magento2/archive/2.2.4.tar.gz

Ahora extrae el archivo Magento y renombra el directorio a ‘magento2’.

tar -xf 2.2.4.tar.gz
mv magento2-2.2.4/ magento2/

El código fuente de Magento se ha descargado, y el directorio ‘/var/www/magento2’ será la raíz web del sitio Magento.

– Instalar los componentes de Magento

Instala los componentes de Magento utilizando el compositor PHP. Ve al directorio ‘magento2’ e instala todos los componentes PHP que necesita Magento utilizando el comando ‘composer’.

cd /var/www/magento2
composer install -v

Una vez completada la instalación, obtendrás el resultado que se muestra a continuación.

Comprueba la versión del compositor

– Generar SSL Letsencrypt

Protegeremos nuestra instalación de Magento utilizando SSL de Letsencrypt. Instala Letsencrypt utilizando el comando apt que se muestra a continuación.

sudo apt install letsencrypt -y

Una vez completada la instalación, detén el servicio nginx.

systemctl stop nginx

Ahora genera los certificados SSL para el nombre de dominio utilizando el comando certbot como se indica a continuación.

certbot certonly --standalone -d magento.hakase-labs.pw

Escribe tu dirección de correo electrónico, acepta las condiciones de servicio de Letsencrypt y escribe «N» para compartir el correo electrónico.

Activar el certificado SSL Let's encrypt

Cuando se haya completado, obtendrás el resultado que se muestra a continuación.

Problemas con el certificado SSL

Los archivos del certificado SSL de Letsencrypt se han generado en el directorio ‘/etc/letsencrypt/live’.

– Configurar el host virtual Nginx

Ve al directorio ‘/etc/nginx/sites-available’ y crea un nuevo archivo de host virtual ‘magento’ utilizando vim.

cd /etc/nginx/sites-available/
vim magento

Pega allí la siguiente configuración.

upstream fastcgi_backend {
        server  unix:/run/php/php7.1-fpm.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name magento.hakase-labs.pw;
    return 301 https://$server_name$request_uri;
}

server {

        listen 443 ssl;
        server_name magento.hakase-labs.pw;

        ssl on;
        ssl_certificate /etc/letsencrypt/live/magento.hakase-labs.pw/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/magento.hakase-labs.pw/privkey.pem;

        set $MAGE_ROOT /var/www/magento2;
        set $MAGE_MODE developer;
        include /var/www/magento2/nginx.conf.sample;
}

Guarda la configuración y sal.

Ahora activa el host virtual creando el enlace simbólico para el archivo de host virtual de Magento en el directorio ‘sites-enabled’.

ln -s /etc/nginx/sites-available/magento /etc/nginx/sites-enabled/

Prueba el archivo de configuración de nginx y asegúrate de que no hay ningún error.

nginx -t

Ahora reinicia el servicio PHP-FPM y Nginx.

systemctl restart php7.1-fpm
systemctl restart nginx

Y cambia el propietario del directorio raíz web de Magento al usuario y grupo ‘www-data’.

chown -R www-data:www-data /var/www/magento2/

Se ha añadido el host virtual nginx para Magento.

– Post-Instalación de Magento

Abre el navegador web y escribe la URL de Magento. La mía es

https://magento.hakase-labs.pw/

En los «Términos y condiciones», haz clic en el botón «Aceptar e instalar Magento».

Instalador web Magento

Ahora comprueba toda la configuración del sistema y del servidor para Magento ‘Readlines Check’, y asegúrate de que ‘pasa’ todas las comprobaciones del sistema y de la configuración como se indica a continuación.

Comprueba los requisitos previos

Ahora haz clic en el botón «Siguiente».

Configuración de la base de datos para Magento – escribe toda la información de nuestra base de datos y haz clic en ‘Siguiente’.

Configuración de la base de datos

Para la configuración web, cambia la «dirección de la tienda» a HTTPS, la «dirección de administración de Magento» por la URL de tu ruta de administración y desmarca la opción «Reescrituras de Apache», porque estamos utilizando el servidor web Nginx.

Configuración web

Vuelve a hacer clic en el botón ‘Siguiente’.

Deja la opción ‘Personalizar tu tienda’ por defecto y haz clic en ‘Siguiente’.

Personalizar la tienda Magento

Escribe tu usuario y contraseña de administrador y haz clic en «Siguiente».

Configurar la cuenta de administrador

Y haz clic en el botón ‘Instalar ahora’ para instalar Magento.

Iniciar la instalación de Magento

Cuando la instalación se haya completado, obtendrás el resultado «correcto» que se muestra a continuación.

Instalación correcta de Magento

Ahora tenemos que deshabilitar el acceso de escritura para el directorio ‘/var/www/magento2/app/etc’. Ejecuta el siguiente comando.

sudo chmod -w /var/www/magento2/app/etc

Magento se ha instalado en el servidor Ubuntu 18.04 Bionic Beaver.

Paso 5 – Pruebas

Escribe la dirección URL de inicio de Magento y asegúrate de que obtienes la página de inicio predeterminada de Magento. La mía es: https://magento.hakase-labs.pw/

Página de inicio de Magento

Ahora accede al panel de administración de Magento visitando la URL definida durante la instalación ‘admin_hakase’. La mía es

https://magento.hakase-labs.pw/admin_hakase/

Inicio de sesión en el backend de Magento

Escribe el nombre de usuario y la contraseña, y haz clic en el botón ‘Iniciar sesión’.

Y obtendrás el panel de administración de Magento como se muestra a continuación.

Panel de control de Magento

Magento 2 se ha instalado en Ubuntu 18.04 con un servidor web Nginx, una base de datos MySQL y PHP-FPM 7.1.

Además:

Si recibes un error sobre la falta de un cronjob del indexador de Magento, puedes solucionarlo generando el script crontab utilizando el comando siguiente.:

cd /var/www/magento2
sudo -u www-data php bin/magento cron:install --force

Ahora comprueba el script crontab de la lista para el usuario ‘www-data’.

crontab -u www-data -l

Configurar el cronjob del indexador de Magento

Referencia

También te podría gustar...