Cómo instalar y configurar Magento 2 en Ubuntu 18.04

Magento 2 es el sucesor de la poderosa plataforma de comercio electrónico de código abierto Magento disponible en sus distribuciones de Linux. Este tutorial le dará los pasos para instalar Magento 2 con Nginx en Ubuntu 18.04. Este software está escrito en PHP y usa Mysql o MariaDB para la base de datos, lo que significa que la configuración se puede realizar con LEMP.

Magento 2 es la última actualización de Magento que ofrece algunas mejoras como

  • tanto frontend como backend, uno para la administración y otro para los clientes de la tienda
  • flexibilidad y el apoyo total
  • la velocidad del sitio y los complementos integrados …

El diagrama de la base de datos de Magento 2 es diferente de Magento 1. Algunas tablas han sido renombradas o cambiadas de Magento 1 a Magento 2

  • core_website – store_website (la estructura ha cambiado)
  • core_store – tienda (la estructura no se cambia)
  • core_translate – traducción
  • core_url_rewrite – url_rewrite
  • core_store_group – store_group (la estructura no se cambia)
  • core_email_template – email_template
  • admin_role – Authorization_role (se cambia la estructura)
  • admin_rule – Authorization_rule (se cambia la estructura)
  • sales_flat_order – sales_order
  • sales_flat_order_address – sales_order_address
  • sales_flat_order_grid – sales_order_grid
  • sales_flat_order_item – sales_order_item
  • sales_flat_order_payment – sales_order_payment
  • sales_flat_order_status_history – sales_order_status_history
  • coupon_aggregated_order – salesrule_coupon_aggregated_order

Magento parece no ser totalmente compatible con php 7.2 que es el predeterminado instalado en Ubuntu 18.04. Hay un comunidad magento en GitHub disponible donde intentan implementar el soporte de php-7.2 en Magento.

A continuación, puede ver las diferentes versiones de php realmente compatibles con magento 2. Puede ver el resto de requisitos en la sitio oficial de magento

1) Instale los requisitos previos

En nuestro tutorial, instalaremos Magento 2 con Nginx en Ubuntu 18.04 y usaremos la base de datos MySQL. Esto significa que necesitará tener un servidor LEMP en ejecución en su servidor. Magento requiere algunas extensiones PHP que necesitará instalar

  • bc-matemáticas
  • ctype
  • curl
  • juicio
  • gd, ImageMagick 6.3.7 (o posterior) o ambos
  • intl
  • mbstring
  • mcrypt
  • picadillo
  • openssl
  • PDO / MySQL
  • SimpleXML
  • jabón
  • spl
  • libxml
  • xsl
  • Código Postal
  • json
  • iconv

Debe tener el paquete software-properties-common que ya está presente en Ubuntu 18.04 y el ondrej / php repositorio que agregaremos

# add-apt-repository ppa:ondrej/php -y

Ahora instale php 7.1 con las dependencias

# 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
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  autoconf automake autopoint autotools-dev binutils binutils-common binutils-x86-64-linux-gnu build-essential cpp cpp-7 debhelper dh-autoreconf
  dh-php dh-strip-nondeterminism dpkg-dev fakeroot g++ g++-7 gcc gcc-7
...
...

Tenga en cuenta que si no instala todas estas dependencias de php, será bloqueado en un paso futuro de nuestro tutorial.

Luego edita las líneas del archivo /etc/php/7.1/fpm/php.ini tener algo como a continuación y asegúrese de adaptar los valores a los suyos

# vim /etc/php/7.1/fpm/php.ini
file_uploads = On
upload_max_filesize = 150M
memory_limit = 256M
cgi.fix_pathinfo=0
date.timezone = Cameroon/Douala

Reinicie php 7.1-fpm

# systemctl restart php7.1-fpm

2) Crea la base de datos de Magento 2

Ahora debemos conectarnos a la base de datos MySQL para crear la base de datos para Magento

# mysql -u root -p
Enter password:

Luego cree la base de datos de magento, el usuario y otorgue los privilegios

mysql> CREATE DATABASE magentodb;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER 'magento'@'localhost' IDENTIFIED BY 'magentodb-password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON magentodb.* TO 'magento'@'localhost' IDENTIFIED BY 'magentodb-password';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

3) Descarga y configura Magento 2

Este tutorial mostrará la instalación de Magento 2.2.5 que es en realidad la última versión disponible. Lo descargaremos directamente desde el repositorio oficial de GitHub de Magento

# wget https://github.com/magento/magento2/archive/2.2.5.tar.gz
--2018-07-13 08:24:37-- https://github.com/magento/magento2/archive/2.2.5.tar.gz
Resolving github.com (github.com)... 192.30.253.112, 192.30.253.113
Connecting to github.com (github.com)|192.30.253.112|:443... connected.
HTTP request sent, awaiting response... 302 Found
...
...

Ahora descomprímelo

# tar xvf 2.2.5.tar.gz

Luego muévalo a la carpeta raíz de su servidor nginx

# mv magento2-2.2.5/ /var/www/html/magento

Asegúrese de actualizar el permiso usando el comando chmod y la propiedad usando el comando chown como se muestra a continuación:

# chown -R www-data:www-data /var/www/html/ && chmod -R 755 /var/www/html/

También puede necesitar compositor si planea desarrollar extensiones de Magento. También lo necesitará si desea contribuir al código base de Magento 2.

# apt install composer -y
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
jsonlint php-cli-prompt php-composer-ca-bundle 
....
....

Entonces revisa

# composer -V
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Composer 1.6.3 2018-01-31 16:28:17

Ahora podemos instalar los componentes de magento con composer. Esto se puede hacer solo si ha instalado todos los requisitos de php

# cd /var/www/html/magento/ && composer install -v
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Dependency resolution completed in 0.001 seconds
Analyzed 177 packages to resolve dependencies
Analyzed 482 rules to resolve dependencies
Package operations: 117 installs, 0 updates, 0 removals
Installs: magento/magento-composer-installer:0.1.13, braintree/braintree_php:3.28.0, colinmollenhour/cache-backend-file:1.4, colinmollenhour/cache-bac
kend-redis:1.10.4, colinmollenhour/credis:1.8.2
...
...

4) Configurar nginx para magento

Ahora configuraremos Nginx para Magento. Verifique la ubicación del socket PHP al que se conectará Nginx. Entonces, enumere el contenido del directorio /var/run/php/

# ls /var/run/php/
php7.1-fpm.pid php7.1-fpm.sock

Ahora edite el archivo de configuración

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

upstream fastcgi_backend {
        server unix:/var/run/php/php7.1-fpm.sock;
}       
        
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        server_name www.mywebstore.com;

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

Puede guardar la configuración, salir y activar el host virtual creando el enlace simbólico como se muestra a continuación

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

Para evitar algunos errores sobre el host virtual predeterminado a usar, asegúrese de editar el bloque del servidor de la configuración predeterminada de nginx /etc/nginx/sites-available/default para eliminar la mención default_server como se muestra a continuación

#vim /etc/nginx/sites-available/default

server {
        listen 80;
        listen [::]:80;
        # your others line below
}

Si no lo hace, tendrá un error similar al siguiente

[emerg] 2369#2369: a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/magento:22

mostrando que los dos hosts virtuales se consideran como el host virtual predeterminado para usar. Comprobar la configuración

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ahora reinicie el servidor nginx

# systemctl restart nginx

4) Instalación web completa del asistente de magento

Ahora puede iniciar su navegador web para continuar con la instalación de Magento https://www.yourwebstore.com entonces acepta

Verifique el entorno php

Si tu entorno es correcto, tendrás todo en verde

Ahora configure la base de datos ya creada con la información utilizada anteriormente con la línea de comando de mysql

Configure el acceso web. Asegúrate de mantener el magento admin habla a. Puedes echar un vistazo a las opciones avanzadas

Ahora elija la moneda, el idioma y la zona horaria que utilizará su tienda

Puede ver la opción avanzada que muestra los módulos que se instalarán

Configurar el admin cuenta

Ahora puede comenzar la instalación

Ahora puede ver un resumen de la configuración. No olvide las menciones importantes en esta página por razones de seguridad.

Ahora verá la página de inicio de sesión. Enter tu admin parámetros creados antes

Puede ver la página de inicio del panel de control de su tienda web magento. Siéntase libre de explorar cada función proporcionada por magento2

Puede abrir la página de inicio de su tienda web. Es la pagina para el cliente

Puede enfrentar algunos errores durante el proceso, cubriremos los posibles errores que puedan ocurrir.

5) Corrija algunos posibles errores

Durante el proceso, puede enfrentar algunos problemas que pueden detener la instalación de su Magento 2. Por lo tanto, hemos enumerado algunos errores con las correcciones que podrían aplicarse.

php FastCGI denegado

Puede tener un permiso denegado debido al archivo de configuración nginx predeterminado de Magento 2 que no puede funcionar. Al verificar su registro de nginx, puede ver el error a continuación

Para resolverlo, edite el /var/www/html/magento/nginx.conf.sample / configurar el bloque de ubicación agregando una línea específica como se muestra a continuación

 # vim /var/www/html/magento/nginx.conf.sample

location ~* ^/setup($|/) {
    root $MAGE_ROOT;
    location ~ ^/setup/index.php {

        ### The only line to add is the one below:
        fastcgi_split_path_info ^(.+?.php)(/.*)$;
        ###################
        ## Don't change anything else in the file

Luego reinicie nginx. Puedes seguir un hilo en Magento Github sobre ese problema si eres tucapaz de ejecutar la configuración web en nginx

Uno o más indexadores no son válidos. Asegúrese de que su trabajo cron de Magento se esté ejecutando

Al acceder a la admin panel por primera vez, puede tener un mensaje sobre los índices no válidos y el trabajo cron de magento que no funcionan correctamente como se muestra a continuación

Aquí debe volver a indexar toda la indexación disponible en Magento 2. Para eso, vaya al directorio raíz del proyecto

# cd /var/www/html/magento

y ejecutar la CLI de magento

# php bin/magento indexer:reindex
Design Config Grid index has been rebuilt successfully in 00:00:00
Customer Grid index has been rebuilt successfully in 00:00:00
Category Products index has been rebuilt successfully in 00:00:00
Product Categories index has been rebuilt successfully in 00:00:00
Catalog Rule Product index has been rebuilt successfully in 00:00:00
Product EAV index has been rebuilt successfully in 00:00:00
Stock index has been rebuilt successfully in 00:00:00
Product Price index has been rebuilt successfully in 00:00:00
Catalog Product Rule index has been rebuilt successfully in 00:00:00
Catalog Search index has been rebuilt successfully in 00:00:00

Ahora para configurar y ejecutar cron para Magento 2, use el comando

# php bin/magento cron:run
Ran jobs by schedule.

Los tipos de caché están invalidados

Puede enfrentarse a los tipos de caché que están invalidados. El mensaje aparecerá en la parte superior.

Uno o más de los tipos de caché están invalidados: caché de página. Vaya a Administración de caché y actualice los tipos de caché.
Las razones de la invalidación de la caché de bloques pueden deberse a actualizaciones de productos, cambios en las reglas de precios de catálogo y también extensiones de terceros. Algunos cronjobs en ejecución también pueden hacer que los cachés de bloques se invaliden. La resolución se indica en el mensaje, vaya a sistema> gestión de caché

Verá todos los tipos de caché. Ahora haga clic en Vaciar caché de Magento

Leer también:

  • Cómo instalar LAMP Stack en Ubuntu 18.04
  • Cómo instalar PhpMyAdmin con LAMP en Ubuntu 18.04

Tienes los diferentes pasos para tener un Magento 2 funcional en Ubuntu 18.04. El soporte de php-7.2 parece no estar listo, pero una comunidad de magento está trabajando en este propósito. Puede forzar el intento de adaptar Magento 2 con php-7.2 pero, cuando el soporte oficial esté listo, su parche ya no funcionará.