Magento es un sistema de gestión de contenido gratuito y de código abierto integrado en PHP, Zend framework y base de datos MySQL. Es una aplicación web de comercio electrónico muy popular que se ejecuta sobre muchas aplicaciones de código abierto como Apache, MySQL y muchas más. Magento viene con muchos módulos integrados que se utilizan para agregar más funciones.
Varnish Cache es un potente acelerador de aplicaciones web de código abierto, también conocido como proxy inverso HTTP de almacenamiento en caché. Se utiliza para acelerar su sitio web almacenando en caché una copia de una página web la primera vez que un usuario la visita. Magento y Varnish es una combinación conocida para aumentar significativamente el rendimiento del sitio. Varnish está integrado por defecto en Magento 2. Solo necesitarás hacer algunos cambios de configuración para que funcione.
En este tutorial, aprenderemos a instalar Magento 2 con Varnish como caché de página completa en el servidor Ubuntu 16.04.
Requisitos
- Un servidor con Ubuntu 16.04.
- Apache, PHP y MariaDB.
- Un usuario no root con configuración de privilegios sudo en su servidor.
1 Primeros pasos
Antes de comenzar, se recomienda actualizar su sistema con el último paquete ejecutando el siguiente comando:
sudo apt-get update -y
sudo apt-get upgrade -y
Una vez que su sistema esté actualizado, reinícielo e inicie sesión con el usuario sudo.
2 Instalar servidor LAMP
Magento no funcionará sin instalar la pila LAMP (Apache, PHP, MariaDB). Primero, instale el servidor web Apache y barniz ejecutando el siguiente comando:
sudo apt-get install apache2 varnish -y
Después de instalar Apache, inicie el servicio Apache y habilítelo para que se inicie en el momento del arranque ejecutando el siguiente comando:
sudo systemctl start apache2
sudo systemctl enable apache2
Magento está escrito en lenguaje PHP, por lo que también debe instalar PHP con todas las bibliotecas en su sistema. Puede instalarlos todos ejecutando el siguiente comando:
sudo apt-get install php7.0 libapache2-mod-php7.0 php7.0-mbstring php7.0-mysql php7.0-mcrypt php7.0-xsl php-imagick php7.0-gd php7.0-cli php-pear php7.0-intl php7.0-curl php7.0-zip php7.0-gd php7.0-soap php7.0-xml -y
Después de instalar PHP junto con todas las bibliotecas requeridas, deberá cambiar algunas configuraciones predeterminadas de PHP. Puede hacer esto editando el archivo php.ini:
sudo nano /etc/php/7.0/cli/php.ini
Cambie las siguientes líneas:
memory_limit = 512 upload_max_filesize = 128M zlib.output_compression = on max_execution_time = 15000
Guarde y cierre el archivo cuando haya terminado.
3 Instalar y configurar MariaDB
Magento utiliza MariaDB como base de datos. Por lo tanto, deberá instalarlo en su servidor. Puede instalarlo simplemente ejecutando el siguiente comando:
sudo apt-get install mariadb-server -y
Después de instalar MariaDB, inicie el servicio MariaDB y habilítelo para que se inicie en el momento del arranque ejecutando el siguiente comando:
sudo systemctl start mysql
sudo systemctl enable mysql
De forma predeterminada, MariaDB no está protegida, por lo que deberá protegerla. Puede asegurarlo ejecutando el siguiente comando:
sudo mysql_secure_installation
Responda todas las preguntas como se muestra a continuación:
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have a root password set, so you can safely answer 'n'. Change the root password? [Y/n] n ... skipping. By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
A continuación, inicie sesión en el shell de MariaDB con el siguiente comando:
mysql -u root -p
Ingrese su contraseña raíz cuando se le solicite, luego cree una base de datos para Magento con el siguiente comando:
MariaDB [(none)]>CREATE DATABASE magento_db;
Después de crear la base de datos para Magento, cree un nombre de usuario y una contraseña con el siguiente comando:
MariaDB [(none)]>CREATE USER 'magento'@'localhost' IDENTIFIED BY 'password';
A continuación, otorgue privilegios a la base de datos de Magento con el siguiente comando:
MariaDB [(none)]>GRANT ALL PRIVILEGES ON magento_db.* TO 'magento'@'localhost';
A continuación, ejecute el comando FLUSH PRIVILEGES y vuelva a cargar los privilegios:
MariaDB [(none)]>FLUSH PRIVILEGES;
Finalmente, salga de la consola de MariaDB con el siguiente comando:
MariaDB [(none)]>\q
4 Descargar Magento
Primero, deberá descargar la última versión de Magento desde su sitio web oficial.
Después de descargar Magento, extraiga el archivo zip descargado en el directorio raíz web de apache con el siguiente comando:
sudo mkdir /var/www/html/magento/
sudo unzip magento2-develop.zip -d /var/www/html/magento
A continuación, cambie la propiedad del directorio magento y otorgue el permiso adecuado:
sudo chown -R www-data:www-data /var/www/html/magento
sudo chmod -R 777 /var/www/html/magento
A continuación, deberá instalar Composer en su sistema. Composer es un administrador de dependencias que se usa para instalar todas las dependencias PHP requeridas. Puede descargar e instalar Composer binario con el siguiente comando:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/bin/composer
A continuación, ejecute el comando composer para instalar todas las dependencias requeridas por Magento:
cd /var/www/html/magento
sudo composer install
Una vez que todas las dependencias estén instaladas, puede proceder a configurar Apache para Magento.
5 Configurar Apache para Magento
A continuación, deberá crear un archivo de host virtual de Apache para Magento. Cree un nuevo archivo de configuración de Apache llamado magento.conf con el siguiente comando:
sudo nano /etc/apache2/sites-available/magento.conf
Agregue las siguientes líneas:
<VirtualHost *:8080> ServerAdmin [email protected] DocumentRoot /var/www/html/magento ServerName 192.168.15.189 ServerAlias www.example.com <Directory "/var/www/html/magento/"> Options FollowSymLinks AllowOverride All Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/magento-error_log CustomLog /var/log/apache2/magento-access_log common </VirtualHost>
Guarde el archivo, luego habilite su host virtual con el módulo de reescritura de Apache con el siguiente comando:
sudo a2ensite magento
sudo a2enmod rewrite
A continuación, también deberá cambiar el puerto de escucha de Apache de 80 a 8080. Porque reservaremos el puerto 80 para el barniz. Para hacerlo, abra el archivo ports.conf:
sudo nano /etc/apache2/ports.conf
Cambie el archivo como se muestra a continuación:
Listen 8080
Finalmente, reinicie el servicio Apache para aplicar estos cambios con el siguiente comando:
sudo systemctl restart apache2
6 Acceda al asistente de instalación web de Magento
Magento ahora está instalado, ahora es el momento de instalar Magento a través del navegador web.
Para hacerlo, abra su navegador web y escriba la URL http://192.168.15.189:8080, debería ver la siguiente página:
Ahora, acepte los Términos y condiciones y luego haga clic en el botón "Aceptar y configurar Magento", debería ver la siguiente página:
Verifique toda la preparación y haga clic en el botón "Siguiente", debería ver la siguiente página:
Proporcione los detalles de su base de datos, como el nombre de la base de datos, el nombre de usuario y la contraseña de la base de datos, luego haga clic en el botón "Siguiente", debería ver la siguiente página:
Proporcione los detalles de su sitio web y haga clic en el botón "Siguiente", debería ver la siguiente página:
Personalice Magento según sus necesidades y haga clic en el botón "Siguiente", debería ver la siguiente página:
Proporcione los detalles de su usuario administrador y haga clic en el botón "Siguiente", debería ver la siguiente página:
Ahora, haga clic en el botón "Instalar ahora" para iniciar la instalación de Magento. Una vez que se complete la instalación, debería ver la siguiente página:
Nota:Recuerde su URL de administrador de Magento:http://192.168.15.189/admin_wczta4. Esto se usará para acceder al administrador de Magento.
Ahora, haga clic en el botón "Iniciar Magento Admin", debería ver la página de inicio de sesión de Magento como se muestra a continuación:
Proporcione sus credenciales de administrador de Magento y haga clic en el botón "Iniciar sesión", debería ver el panel de Magent-o como se muestra a continuación:
Desde su panel de administración de Magento, haga clic en el botón TIENDAS (lado izquierdo)> Configuración> AVANZADO> Sistema> Caché de página completa , luego deseleccione el valor del sistema de uso y seleccione Varnish Cache de la lista de aplicaciones de almacenamiento en caché, guarde la configuración, haga clic en el vínculo Configuración de Varnish y haga clic en el botón Exportar VCL para Varnish 4 (esto exportará el archivo varnish.vcl en /var/www /html/magento/var directorio) como se muestra a continuación:
Finalmente, vacíe el caché de Magento con el siguiente comando:
cd /var/www/html/magento
sudo php bin/magento cache:flush
Una vez que haya terminado, puede proceder a configurar el barniz.
6 Configurar barniz
Magento ahora está instalado y configurado. Es hora de configurar el barniz.
Primero, elimine el archivo /etc/varnish/default.vcl y cree un enlace simbólico a partir de la configuración de barniz exportada:
sudo rm -rf /etc/varnish/default.vcl
sudo ln -s /var/www/html/magento/var/varnish.vcl /etc/varnish/default.vcl
A continuación, deberá crear un archivo de servicio systemd para barniz. Puede hacer esto copiando varnish.service desde /lib/systemd/system/ al directorio /etc/systemd/system/:
sudo cp /lib/systemd/system/varnish.service /etc/systemd/system/
Después de copiar este archivo, deberá realizar algunos cambios en el archivo varnish.service:
sudo nano /etc/systemd/system/varnish.service
Realice los siguientes cambios:
[Unit] Description=Varnish HTTP accelerator Documentation=https://www.varnish-cache.org/docs/4.1/ man:varnishd [Service] Type=simple LimitNOFILE=131072 LimitMEMLOCK=82000 ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m ExecReload=/usr/share/varnish/reload-vcl ProtectSystem=full ProtectHome=true PrivateTmp=true PrivateDevices=true [Install] WantedBy=multi-user.target
Guarde el archivo cuando haya terminado, luego reinicie el servicio de barniz con el siguiente comando:
sudo systemctl daemon-reload
sudo systemctl reload varnish.service
Si todo funciona bien, debería poder iniciar sesión en su back-end de Magento escribiendo la siguiente URL en su navegador web:
http://192.168.15.189/admin_wczta4
También puede verificar si el barniz está habilitado o no ejecutando el siguiente comando:
curl -I http://192.168.15.189/admin_wczta4
Deberías ver que el barniz está activado:
Date: Fri, 07 Jul 2017 17:10:01 GMT Server: Apache/2.4.18 (Ubuntu) Set-Cookie: store=default; expires=Sat, 07-Jul-2018 17:10:03 GMT; Max-Age=31536000; path=/; HttpOnly Set-Cookie: PHPSESSID=irp2k8cmrhct0dfh18qk7ap0i4; expires=Fri, 07-Jul-2017 18:10:04 GMT; Max-Age=3600; path=/; domain=192.168.15.189; HttpOnly Expires: Thu, 07 Jul 2016 17:10:04 GMT Cache-Control: max-age=0, must-revalidate, no-cache, no-store Pragma: no-cache Location: http://192.168.15.189/admin_wczta4/?SID=irp2k8cmrhct0dfh18qk7ap0i4 X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Content-Length: 0 Content-Type: text/html; charset=UTF-8 X-Varnish: 2 Age: 0 Via: 1.1 varnish-v4 Connection: keep-alive
¡Felicidades! Ha configurado correctamente Magento con Varnish en el servidor Ubuntu 16.04.