Mi tienda Prestashop carga lenta de un día para otro sin haber hecho cambios

En muchas ocasiones algunos clientes nos han reportado problemas de lentitud en sus tiendas Prestashop de un día para otro sin haber hecho cambios. Hay que tener en cuenta que la mayoría de módulos y plantillas realizan conexiones a la web oficial del desarrollador para validar licencias, comprobar actualizaciones, etc.

Esas conexiones se realizan en todo momento, incluido el front-end, por lo que esas conexiones se realizan cuando nuestros usuarios o clientes están visitando nuestro sitio web. Por lo tanto, si la web de alguno de los desarrolladores de nuestros módulos o plantillas tiene alguna incidencia, el rendimiento de nuestro sitio web se verá afectado considerablemente.

Si el tiempo de respuesta de nuestro sitio web es 0.5 segundos, pero la conexión a la web del desarrollador se demora 5 segundos, nuestro sitio tardará 5.5 segundos en responder. Hasta que nuestra tienda no haya completado todas las conexiones externas definidas en los módulos, nuestra página web no mostrará nada y se quedará cargando.

En el siguiente ejemplo, un cliente nos reporta problemas de lentitud en su sitio web, y efectivamente la página no ha sido modificada desde hace semanas. Analizando los procesos identificamos esta conexión:

php-fpm xxxxx xxxxxx 6u IPv6 2206060903 0t0 TCP linxxx.loading.es:58876->[2606:4700:30::xxxx:xxxx]:http (SYN_SENT)

El proceso php-fpm permanece bloqueado durante cerca de 60 segundos realizando esa conexión ya que el servidor de destino (2606:4700:30::xxxx:xxxx) no responde correctamente, por lo que la carga del sitio web se demora más de 60 segundos. Analizando la plantilla y módulos usados, conseguimos identificar a que módulo hace referencia esa dirección IP:

/modules/pk_themesettings/

Después de revisar el código fuente del módulo, detectamos que el problema es de la plantilla/módulo, buscando actualizaciones:

/modules/pk_themesettings/inc/confighelper.php

public function checkupdates() {
    $update_list = "http://promokit.eu/share/updates/"._THEME_NAME_."/5/update_list.dat";
    $msg = "";
    if (!$update = @file_get_contents($update_list)) {
        $msg = false;
    } else {
        $versions = explode(",", $update);
        $i = 1;
        foreach ($versions as $key => $version) {
            if (Configuration::get('ALYSUM_VER') < $version) {
                $msg .= (($i == 1) ? "" : ",").$version;
                $i++;
            }
        }
    }

    return $msg;
}

Por lo que comentamos las lineas que realizan la conexión a la web oficial del desarrollador, quedando así:

public function checkupdates() {
    /*
    $update_list = "http://promokit.eu/share/updates/"._THEME_NAME_."/5/update_list.dat";
    $msg = "";
    if (!$update = @file_get_contents($update_list)) {
        $msg = false;
    } else {
        $versions = explode(",", $update);
        $i = 1;
        foreach ($versions as $key => $version) {
            if (Configuration::get('ALYSUM_VER') < $version) {
                $msg .= (($i == 1) ? "" : ",").$version;
                $i++;
            }
        }
    }

    return $msg;
    */
}

De este modo la página web del cliente no volverá a generar problemas de lentitud buscando actualizaciones de la plantilla. No obstante, puede que tenga otros módulos o plantillas que sigan realizando conexiones de este tipo.

Normalmente cuando la web del desarrollador funcione correctamente no detectaremos ningún problema, aunque hay que tener en cuenta la importancia de usar los módulos 100% necesarios e imprescindibles. Cada conexión cuenta, si por ejemplo tenemos 10 módulos que buscan actualizaciones, y cada conexión se demora 0.10 segundos, estamos generando 1 segundo (10 x 0.10) de carga adicional a nuestro sitio web.

Al hacer un uso abusivo de módulos, tenemos mayor probabilidad de sufrir estos problemas. Aunque los módulos no estén activos, el hecho de estar instalados ya ocasiona que Prestashop tenga que leer su código fuente y realizar las conexiones correspondientes. Por lo que es recomendable eliminar los módulos que estén en desuso y hacer un uso moderado de ellos.

Visto esto, dependemos al 100% de la web de los desarrolladores de nuestros módulos y plantillas.

Crear una tarea programada para Prestashop desde Plesk

En esta ocasión vamos a explicar como crear una tarea programada dentro de Plesk. Como ejemplo vamos a usar el comando o URL que nos facilita Prestashop para regenerar el indice de productos del buscador.

 

1. Primero necesitamos la URL o comando para automatizar su ejecución, accedemos al back office de nuestro Prestashop, “Parámetros de la tienda”, “Búsqueda“.

 

 

2. Entramos al panel de control Plesk y pinchamos en “Tareas programadas“.

 

 

3. Hacemos click en “Añadir tarea“.

 

 

4. En “Tipo de tarea” seleccionamos la opción “Obtener una URL“, y en el campo de “URL” la que copiamos en el primer paso del back office de Prestashop. Terminamos eligiendo la periodicidad deseada, en nuestro caso diaria (Diariamente) a las 04 de la madrugada.

 

 

Existen otras opciones más complejas de ejecución o periodicidad que sería “Estilo cron”, añadimos algunos ejemplos.

Cada 5 minutos:

*/5 * * * *

Cada 2 horas, el minuto 1:

1 */2 * * *

Los minutos 10, 20 y 30 de cada hora:

10,20,30 * * * *

 

Algunos de nuestros planes de hosting no incluyen el servicio de tareas programadas. Se pueden contratar adicionalmente, o ampliar a un plan superior que si las incluya.

Incrementar tiempo máximo de ejecución en Plesk con Nginx y Apache

En las últimas versiones de Plesk se han implementado distintas funcionalidades que ofrecen mayor rendimiento, pero complican bastante incrementar el tiempo máximo de ejecución del dominio/servidor, en esta entrada explicamos los pasos a seguir.

 

1. En la gestión del dominio dentro de Plesk tenemos dos apartados en los que tenemos que realizar cambios, “Configuración de PHP” y “Configuración de Apache y nginx”.

 

 

2. Entramos en “Configuración de PHP” y cambiamos el valor del campo “max_execution_time” y “max_input_time” como vemos en la imagen inferior por el valor deseado (en este caso 600 segundos / 10 minutos) y hacemos click en “Aceptar”.

 

 

3. Ahora dentro de “Configuración de Apache y nginx”, en  el campo de “Directivas adicionales para HTTP” y “Directivas adicionales para HTTPS” añadimos:

 

<IfModule mod_proxy_fcgi.c>
ProxyTimeout 600
</IfModule>

 

Y en campo de “Directivas adicionales de nginx” añadimos:

 

proxy_connect_timeout 600;
proxy_send_timeout 600;
send_timeout 600;

 

 

Por nuestra parte, no recomendamos mantener estos valores muy elevados de forma definitiva salvo que sea 100% necesario. Hacerlo supone que los procesos o visitas bloqueadas no “mueran” hasta llegado el tiempo máximo de ejecución. Si el valor es muy elevado, y se acumulan muchos procesos bloqueados, puede incrementar la carga del servidor, consumo de recursos, generar lentitud y caídas del servicio. Es mejor tener quedarse cortos e incrementarlo de forma progresiva, que poner un valor muy elevado de primeras.

 

IMPORTANTE: Dentro de Loading, esta opción solo es válida para servidores VPS y dedicados. En hosting compartido este cambio lo realizamos mediante ticket de soporte.

Nuevo sistema de copias de seguridad

Tras unos meses de desarrollo, nuestros clientes de hostings compartidos y Resellers (Linux) ya tienen disponible en modo producción el nuevo sistema de restauración de copias de seguridad. Este sistema cuenta con la posibilidad de restaurar completa o parcialmente el contenido alojado en el hosting: archivos/directorios, bases de datos y cuentas de correo.

 

La periodicidad de copias también se ha aumentado, contando el usuario con un abanico más amplio de horas y fechas para poder restaurar su web lo más próximo posible al momento deseado. Se podrá disponer de copias de bases de datos generadas cada 4 horas y de copias de archivos: horarias en el día presente y el anterior, además de copias diarias de los últimos siete días, y copias quincenales hasta dos meses atrás. Por ejemplo, si nos encontramos en el día 12 de Septiembre las copias de archivos disponibles serían:

HORARIAS
* Copias del día 12 actual horarias: desde las 00:00h hasta la hora en la que nos encontremos.
* Copias del día 11 horarias: desde las 00:00h hasta las 23:00h de ese día.

DIARIAS
* Al menos dos copias de cada uno de los días 10, 9, 8, 7 y 6.

QUINCENALES
* Una copia del día 1 de Septiembre.
* Una copia del día 15 de Agosto.
* Una copia del día 1 de Agosto.
* Una copia del día 15 de Julio.

 

Os vamos a guiar en el proceso de restauración para que no tengáis ningún problema a la hora de realizarlo las primeras veces, pulsa sobre las imágenes para verlas a tamaño completo.

1.- En primer lugar accedemos al panel de control Plesk desde nuestro área de cliente o con el usuario y contraseña.

2.- En la sección principal (Sitios web y dominios) encontraremos el botón de “Copias de seguridad” en el panel de gestión del hosting del dominio.


3.- Tras acceder al mismo, nos aparecerán en pantalla las opciones disponibles de restauración: Bases de datos, Ficheros y Cuentas de correo.

 

3.1.Bases de datos. Aquí se nos mostrarán las bases de datos que tenemos creadas en el hosting. Si sólo quieres restaurar la base de datos, esta es la opción que debes elegir; ten en cuenta que se restaura de forma completa, si tienes que restaurar una tabla o la quieres restaurar de forma parcial tendrás que descargarla y restaurar el contenido manualmente.

NOTA: Si tu intención es restaurar la web completa (archivos y bases de datos), no selecciones esta opción y ve directamente a restaurar la copia de Ficheros en el siguiente punto.

 

3.2.- Ficheros. Como se indica en el anterior punto, si tu intención es restaurar por completo la web o sólo archivos y directorios, selecciona esta opción. En el caso de gestionar varios dominios, automáticamente te los mostrará por pantalla al seleccionar la fecha y hora de la restauración.

También tienes la posibilidad de restaurar un único fichero o un único directorio seleccionando la opción “Explorar ficheros” y desplazándote hasta la ruta deseada.

 

Pulsamos sobre la opción deseada y tras unos segundos aparecerán todo el listado de fechas de copias de archivos disponibles

 

Pinchamos en Iniciar proceso de restauración y nos preguntará el dominio que se desea restaurar o la opción de Explorar ficheros para restaurar archivos de forma individual u otra carpeta concreta (y todo su contenido).

Iniciamos la restauración en la parte inferior derecha de la pantalla aparecerá la tarea en curso; además la pantalla irá refrescando cada 10 segundos mostrándonos el registro de cambios que se va a realizar (archivos/directorios que se crearán, eliminarán, modificados, etc.).

MUY IMPORTANTE: Esta primera fase de la restauración es un TEST donde se indican los cambios que se van a llevar a cabo, por si el usuario desea cancelarla. Hay que confirmar la restauración pulsando sobre Ejecutar restauración, y en este momento es cuando realmente se está realizando esa restauración.

 

 

Si usas una de las aplicaciones más comunes (Prestashop, Worpdress, Joomla, Magento, etc.), tras la prueba de restauración de archivos y posterior restauración, automáticamente te detectará la base de datos asociada a ese dominio y te dará la opción para restaurarla. Al pulsar sobre Restaurar base de datos, habrá que seguir el proceso del punto 3.1 de este manual.

 

3.3.- Cuentas de correo. Disponible por si borras uno o varios correos de forma errónea y necesitas recuperarlos, esto siempre y cuando los estés almacenando en el servidor (protocolo IMAP o protocolo POP sin borrado en la descarga). Al seleccionar la opción, te aparecerán todas las cuentas de correo que tengas creadas actualmente y podrás seleccionar la/s que desea/s restaurar.

 

En todos los procesos de restauración te aparecerá un monitor de progreso en la parte inferior derecha del panel, que pasará a verde cuando se haya completado o a rojo si ha habido algún tipo de error en el mismo. En este último caso contacta con nosotros por ticket para poder revisarlo.

 

NOTA: Si tu web tiene mucho volumen de archivos o el contenido a restaurar pesa mucho, debes tener paciencia porque podría demorarse unos minutos en completarse.

 

Esperamos que este nuevo sistema os sea de gran utilidad y recordad que si surge cualquier duda siempre nos tenéis disponibles por vía telefónica y chat online (Loading.es) en horario de oficina y a través de tickets las 24h los 365 días del año.

 

Sigue todas nuestras ofertas y novedades en Facebook y Twitter.

Certificados Let’s Encrypt

le

Ya tenemos disponibles en Plesk los certificados SSL gratuitos Let’s Encrypt. Esta entidad certificadora ha sido obra de la Fundación Linux con el objetivo de ofrecer certificados SSL libres, abiertos, automáticos y gratuitos.

 

Este proyecto trae consigo grandes ventajas, entre las que destacamos la sencillez de instalación en el servidor y la gratuidad de los certificados. A partir de este momento, en Plesk cada usuario tendrá disponible el botón personalizado Let’s Encrypt con el que podrá proteger sus dominios con certificados totalmente válidos para prácticamente todos los ámbitos.

 

La forma de instalación es de lo más sencillo, en dos sencillos pasos e imágenes lo explicamos:

1.- El usuario entra en su panel de control Plesk con su usuario y contraseña y verá la siguiente pantalla, tendrá que pinchar en “Configuración de hosting”.

 

 

2.- Verificar que está activa la opción de “Soporte para SSL/TLS”.

 

 

3.- Una vez comprobado que está activo el soporte SSL, en la página principal verá la siguiente pantalla con el símbolo de Let’s Encrypt, sobre el que tendrá que pinchar.

 

letsencrypt1

 

4.- Poner una cuenta de correo válida y marcar la opción “Incluir www.dominio.es como nombre de dominio alternativo”, para que el certificado sea válido sobre el dominio con y sin www. Pulsar sobre instalar.

 

letsencrypt2

 

Ahora solamente nos quedaría esperar unos 10 minutos para que se recargue la configuración y poder habilitarlo en la web o aplicación web que gestionemos.

La renovación del certificado es totalmente automática y se realiza cada 90 días, sin que se tenga que intervenir ninguna parte del proceso.

Actualización (Abril 2017): Estos certificados ya soportan a día de hoy los dominios IDN (Nombre de dominio internacionalizado), como son los dominios con ñ o ç.

IMPORTANTE: Se debe tener en cuenta que si se tiene una tienda online con pagos a través de TPV con el módulo Redsys, estos certificados instalados sin una IP dedicada en el hosting tienen una función de certificados SSL SNI y NO SON COMPATIBLES con dicho módulo, mostrando problemas de comunicación entre la pasarela de pago y la aplicación web, generando errores a la hora de registrar los pedidos en la tienda.

Actualización IMPORTANTE (20/11/2017): Tenemos noticias importantes para los usuarios que tengan instalado el módulo de pago Redsys, y es que hemos recibido información de que se han realizado las actualizaciones pertinentes en dicho módulo para hacerlo compatible con SSL SNI. Esto quiere decir que si se tiene habilitado un certificado SSL sobre la web, no va a ser requisito imprescindible el disponer de una IP dedicada para que las comunicaciones entre el servidor y los servidores de Redsys sean válidos, y los pedidos quedarán guardados correctamente.

Por nuestra parte, hemos realizado unas comprobaciones en webs en producción con estas características y los resultados han sido correctos. Esto no quiere decir que el problema esté solventado ya al 100%, ya que depende exclusivamente del funcionamiento del propio módulo y cualquier modificación o actualización que se realice en el mismo podría revertir este avance. No disponemos de información adicional y oficial por parte de Redsys de que haya que hacer alguna actualización o modificación en el código, debe ser el propio usuario el que contacte con el desarrollador del módulo para obtener toda la información al respecto.

 

Para los CMS más comunes, la activación se realizaría de esta forma:

 

PRESTASHOP 1.5.x y 1.6.x

1.- Entramos a la administración de Prestashop

2.- Vamos a Preferencias > Configuración.

3.- Habilitar SSL.

 

PRESTASHOP 1.7.x

1.- Entramos a la administración de Prestashop

2.- Vamos a Parámetros de la tienda > Configuración.

3.- Habilitar SSL.

 

WORDPRESS 4.x

1. Accedemos al sitio WordPress como administrador

2. Vamos a Ajustes > Generales

3. En el campo Dirección de WordPress (URL): cambiamos http:// por https://

4. En el campo Dirección del sitio (URL): cambiamos http:// por https://

 

JOOMLA

1.- Accedemos a la administración de Joomla

2.- Vamos a Sistema (System) > Configuración global > Servidor

3.- En la opción Forzar SSL le indicamos la opción de “todo el sitio”

 

MAGENTO

1.- Accedemos a la administración de Magento

2.- Vamos a System > Configuration > Web

3.- En las urls que aparecen en los dos campos (Inseguro y seguro), sustituir http por https

4.- Marcar “Sí” o “Yes” en las opciones “Use Secure URLs in Frontend” y “Use Secure URLs in Admin”

 

NOTA: A pesar de activar el protocolo https sobre la web, dependiendo de la configuración que tenga el propio CMS o página web, puede cargar contenido sobre http. Si esto es así, al cargar una página sobre https con contenido http aparecería un error de seguridad o advertencia de página no segura, en estos casos es el cliente o su desarrollador el encargado de corregir de forma manual esas urls para cargar el contenido totalmente sobre https.

 

Sigue todas nuestras ofertas y novedades en Facebook Twitter.

 

Uso y tipos de certificados SSL

ssl

Con esta nueva entrada en el blog vamos a tratar de ayudaros a resolver las dudas más comunes a la hora de decidir si instalar un certificado SSL o no en vuestro sitio web.

La pregunta más repetida es, ¿los certificados de seguridad son a día de hoy obligatorios? La respuesta es no para la mayoría de los casos, pero son altamente recomendables. De hecho, existe una tendencia actualmente en la que sí se está solicitando que las webs de venta online tengan instalado un certificado SSL. El ejemplo más claro lo encontramos en Google Adwords, y si queremos contratar este servicio de anuncios para promocionar nuestras webs, nos lo exigirán.

 

Antes de nada, vamos a exponer básicamente qué es un certificado SSL, para qué sirve y el modo de funcionamiento.

Los certificados SSL  (Secure Socket Layer / Capa de puertos seguros, en castellano) se definen como protocolos criptográficos que proporcionan comunicaciones seguras por Internet. Simplificándolo un poco, se trata de una transmisión de datos segura entre el servidor y el usuario que visita una web e interactúa con ella. Los datos que este usuario introduzca en la web protegida con un certificado SSL viajarán encriptados (codificados) por la red y nadie podría leerlos a pesar de que pudieran ser interceptados por un tercero.

Las ventajas de tener un certificado son evidentes, con ello el usuario tendrá la seguridad de cuando se registre en una página web, realice un pedido o un pago, sus datos van a permanecer a salvo en todo momento de la transacción. La confianza del comprador será mayor que si está navegando o comprando en una web no protegida.

Al instalar el certificado en el servidor sobre el dominio designado, el cliente podrá activarlo en su aplicación web y en la barra de navegación aparecerá la url sobre https y, en navegadores como Chrome o Firefox, el símbolo del “candadito verde” seguro en la barra de navegación.

 

Ahora expongamos los casos más comunes en los que un cliente que ha montado su página web se pregunta si debe o no instalar un certificado de seguridad y de qué tipo:

 

  • Tengo un blog, una web estática o una web con catálogo de productos sin venta online (WordPress, Joomla, Drupal, Prestashop en modo catálogo). Para este tipo de webs más sencillas en las que se pueden registrar usuarios o usar formularios web, se puede disponer del certificado SSL más económico. Son los llamados certificados SSL SNI, disponemos de la información de este certificado en esta entrada del blog.

 

  • He desarrollado una tienda online (Prestashop, Magento, Woocommerce, etc.). Estas webs manejan datos más delicados, como registros de clientes donde se solicitan más datos que en un registro normal para un blog o similar: DNI, dirección, número de teléfono, etc. Para esto ya se requiere una IP dedicada y certificado SSL, la IP dedicada sirve para que el dominio quede identificado de forma exclusiva en el servidor. Las pasarelas de pago como Redsys funcionan sobre esta opción.

 

  • Dispongo de una tienda online sobre mi dominio, pero además tengo uno o varios subdominios donde tengo un blog, un foro, un acceso administrativo, etc. Por ejemplo:

* En dominio.es tengo mi tienda de venta online.

* En blog.dominio.es tengo un blog con todas las novedades o noticias de mi sector.

* En administracion.dominio.es dispongo de una extranet para mis cuentas.

Para estos casos también existen certificados, nos funcionarán todas estas webs sobre el protocolo seguro contratando una IP dedicada y un certificado SSL Wildcard. Estos certificados son válidos para un dominio y todos los subdominios que deriven de él.

 

  • He montado un Prestashop, Magento o Woocommerce con multi-tienda o multi-site. Este caso cada vez es más común, estas aplicaciones web se han mejorado y permiten tener varias webs sobre una misma instalación. Es decir, se instala la aplicación sobre un dominio y añadiendo más dominios en el hosting se pueden crear tiendas independientes administradas desde la misma aplicación y todos podrían funcionar con venta online.

Un buen ejemplo sería crear una tienda online y vender los productos en varios países, tendríamos un dominio para cada uno de ellos (dominio.es, dominio.fr, dominio.uk, etc.).

Vamos a necesitar entonces una IP dedicada y un certificado SSL multidominio. Dependiendo del número de dominios que se administraran habría certificados de 5 y 10 dominios, pudiendo sumar a este último dominios adicionales que se necesitaran de más.
 
 

logo-geotrustEn Loading ofrecemos todos estos tipos de opciones y certificados bajo una empresa puntera en este campo como es Geotrust, de la cuál también somos partners. Son certificados adaptados a las nuevas normativas y de 128/256 Bits, con unos precios muy competitivos en el mercado. Cualquier usuario puede contratarlos desde su área de cliente en el apartado Mis servicios. Ahí encontrará de forma resumida para qué sirve cada certificado y el plan desde el cuál puede contratarse.

 

Recuerda que también resolvemos cualquier duda desde nuestro soporte telefónico, chat online y tickets.

Siga todas nuestras ofertas y novedades en Facebook y Twitter.

Activación PageSpeed

pagespeed

Desde loading.es, siguiendo con nuestra política de mejora de rendimiento en todos nuestros servidores os informamos que hemos estado haciendo muchas y diversas pruebas con el módulo PageSpeed desarrollado por Google y ya está listo para habilitar en los dominios siempre que el propio usuario lo deseara.

Mod_pagespeed (o PageSpeed) es un módulo de Apache de código abierto que aplica de forma automática mejoras de rendimiento a las páginas y su contenido (CSS, JavaScript, imágenes) sin que sea necesario modificar nada a nivel de configuración o código de la propia página. En la propia web oficial de esta herramienta indican que existen más de 40 filtros de optimización entre los que destacan:

  • Optimización de imágenes, compresión y reducción de tamaño
  • Concatenación y minificación de procesos en línea de CSS y JavaScript
  • Extensión de la Caché
  • Carga aplazada de JavaScript y de recursos de imágenes

Las pruebas se han realizado sobre las aplicaciones web más populares como Prestashop y WordPress, y los resultados de rendimiento han sido notables, reduciendo la velocidad de carga de la web y obteniendo mejores resultados de cara a los tests de velocidad disponibles en la red*.

En nuestros hostings compartidos, la forma de activación/habilitación de este servicio se realiza desde el panel de control Plesk > Sitios web y dominios > Botón “mod_pagespeed” situado en la parte derecha del menú, tal cual aparece en la imagen:

 

mod_pagespeed

 

Una vez ahí, simplemente habría que pulsar el botón “Activar” y en unos 5 minutos comenzaría a funcionar sobre el dominio.

 

mod_pagespeed2

 

Usando la herramienta de ver el código fuente del navegador que se utilice, se podrá observar cómo este módulo comprime el código de los archivos .js, .css, imágenes, etc.

Para usuarios que disponen de servidores VPS o dedicados administrados podrían solicitarnos la instalación de PageSpeed a través del sistema de tickets. La instalación es relativamente sencilla y quedaría lista en 10 minutos, sin intervención por parte del cliente, sin caída del servicio en ningún momento y sin que que las webs se vieran afectadas en sentido negativo.

* Este sistema no sustituye a la optimización interna de cada web, ya que es una utilidad que ayuda a aumentar el rendimiento de una página, pero no soluciona los problemas de rendimiento de base que puedan arrastrar.

Siga todas nuestras ofertas y novedades en nuestra web loading.esFacebook y Twitter.