Aunque normalmente seguimos las guías de howtoforge.com, para que un servidor Web (LAMP) funcione correctamente debe tener instalados y configurados como mínimo los siguientes elementos:

Módulos:

  • mod_expires
  • mod_cached
  • mod_deflate
  • mod_headers
  • mod_mem_cache
  • mod_disk_cache
  • mod_pagespeed

Cachés:

  • OPcache
  • Memcache
  • Redis

Además de instalar todo esto, recomendamos configurar el módulo de PageSpeed para que utilice Memcache. Esto se consigue poniendo esta línea en el archivo de configuración del módulo de PageSpeed:

Por supuesto, estamos hablando de servidores Web con Apache 2.4, HTTP2, PHP 7.x, etc

8 de junio de 2018.
Empiezo escribiendo este artículo con la fecha de hoy porque voy a explicar qué ha ocurrido con los dominios .es que los gestiona la entidad publica Red.es, del Ministerio de Energía, Turismo y Agenda Digital, y cómo podemos evitar en gran medida un desastre como el que han vivido hoy muchas webs y muchos usuarios con un correo con dominio .es. (Información sobre el incidente en este artículo)

¿Qué es lo que ha ocurrido? Sencillamente que la gestión de las zonas de dominios se les ha caído. Por ahora no se sabe mucho más de por qué ha sido, y las webs de red.es y dominios.es que serían las encargadas de informar, aún no muestran nada. Dominios.es a través de su Twitter ha informado escuetamente del problema:

Por otra parte, era de esperar, ya que la gestión de los dominios .es es mucho peor que la de un .info o un .com, por poner ejemplos.

Pero, ¿cómo podríamos evitar estos problemas, o por lo menos, paliarlos? Realmente hay muchas soluciones, por ejemplo, no depender sólo de un dominio .es únicamente. Personalmente suelo recomendar a un cliente cuando compra el dominio .es, que compre el homólogo .com y que redirija el .es al .com. Y que gestione el correo desde el dominio .com. ¿Por qué dar prioridad el .com? Pues porque la gestión de los .com recae sobre una organización más grande y fiable que la de .es. También está la idea de trabajar con varios dominios, y que el principal de todos ellos no sea un .es, sino un .net, .com, .info.

Pero aparte del problema que puede ocasionarnos el que una entidad de gestión de dominios se caiga o de problemas, podemos tener otros tipos de errores y contratiempos, por ejemplo, que nuestro servidor tenga que gestionar mucho contenido (archivos, imágenes) y servirlo internacionalmente. Entonces lo mejor es contar con un servicio CDN que sea el encargado de servir nuestros contenidos, descargando a los servidores web de ese trabajo.

Otro problema que podemos tener es un ataque de denegación de servicio por DNS. Si tenemos un problema como este, aparte de tener los servidores preparados para ello, y realizar las medidas consecuentes para paliarlo, nos vendría bien tener la web gestionado por distintos DNS, ya que el denegación de servicio se hace contra uno o varios servidores normalmente de la misma raíz de NS, por lo que si tenemos DNS en distintos países o distintos hostings, el ataque se verá disminuido.

Y estas son algunas de las reglas que solemos recomendar a los clientes para tener garantizado más del 90% de disponibilidad tanto de servicio web como de mail.

El 3 de junio saltaron las alarmas entre los clientes de PcComponentes: se estaban realizando compras fraudulentas con sus tarjetas. Por lo que se cuenta en esta noticia (ver noticia), parece ser que PcComponentes ha tenido un problema de seguridad y las cuentas de usuarios se han visto comprometidas, aunque más tarde la empresa ha querido desmentirlo. Lo que llama la atención es que se hayan visto implicados clientes de PcComponentes.

Este supuesto robo de información no debería haber supuesto un problema más allá de haber hecho público los datos de los usuarios, si no fuera porque al parecer, PcComponentes guardaba sus números de tarjetas en sus propias bases de datos, lo que ha llevado a los clientes a pensar que ha habido alguna filtración.

Llevamos años insistiendo en contra de guardar los datos bancarios de los usuarios a los clientes que nos piden guardar ellos mismos los números de tarjetas y de CCC con el objeto de hacer más cómoda la compra para sus clientes cuando éste repite. Y nuestra respuesta siempre ha sido la misma: hace falta tener una seguridad muy alta en los sistemas que custodian esos datos (no sólo implican una encriptación de datos, también una seguridad perimetral mayor, un técnico dedicado a los servidores, backups y la seguridad de la plataforma, etc), y esa seguridad es una inversión demasiado cara, por lo menos para un comercio electrónico medio, ya que hoy día no genera tanto margen de beneficio como para costear ese incremento en la seguridad. Un cliente no va dejar de comprar en un comercio electrónico simplemente porque tenga que meter su tarjeta cada vez, sobretodo si se le escribe una nota aclarando que es una medida de seguridad pasiva muy efectiva “¿Por qué no guardamos tu tarjeta bancaria? Porque en caso de hackeo, tus datos bancarios no se verán comprometidos”. Al contrario, si se le explica, el comprador se sentirá más seguro en un comercio electrónico que no guarda la tarjeta frente al que sí lo guarda.

Hace poco hemos tenido un error al actualizar un conocido plugin de WordPress. El error se mostraba en lugar del Slider que se había preparado:
Revolution Slider Error: You have some jquery.js library include that comes after the revolution files js include. This includes make eliminates the revolution slider libraries, and make it not work.

To fix it you can:
1. In the Slider Settings -> Troubleshooting set option: Put JS Includes To Body option to true.
2. Find the double jquery.js include and remove it.

Realmente el problema era otro, pero al dar este mensaje, comprobamos que se cargara todo correctamente. La solución que dan en foros a este problema, y la propia empresa recomienda, es la de actualizar WordPress, desactivar todos los plugins, todos los temas, asignar uno de los que vienen en WordPress por defecto y empezar a probar activando de uno en uno todos los plugins y el tema. Como esta solución no nos convencía mucho, ya que el plugin había funcionado bien hasta su actualización y por otra parte iba a llevarnos horas hacer la comprobación, exploramos otra vía, que resultó ser la solución correcta y que sólo nos llevó 20 minutos:
Abrimos la ventana de Inspeccionar de Chrome y nos fuimos a Console. Allí vimos que el problema real era que no podía cargar las librerías que traía el plugin en su carpeta de revslider/public/… por lo que le asignamos permisos 775 a esas carpetas. A continuación limpiamos todas las cachés, abrimos la web con una sesión de incógnito para cerciorarnos de que el error no se iba a reproducir por un problema de nuestro navegador y todo solucionado.

Esperamos que os ayude!!!

Cuando la función on_sent_ok os de el error de ajuste obsoleto (o is Deprecated), habrá que cambiar la función que tenemos por código JavaScript.

En nuestro caso, el cliente tenía una redirección a una URL, con lo que cambiamos el código a

[crayon-5ba287277e770388528481/]

 

 

En este artículo veremos qué componentes tiene Docker.

  • El motor de Docker, compuesto por el cliente y el servidor Docker.
  • Las imágenes de Docker
  • Los registros
  • Los contenedores

El motor de Docker

Básicamente, Docker es una aplicación cliente-servidor, y pueden trabajar ambos en la misma máquina, o en distintos servidores. Además, también existe una API REST para comunicarse con la parte servidor de Docker, aparte de la aplicación cliente, con lo que no tendremos problema alguno para trabajar con Docker.

Imágenes

Las imágenes de Docker es el código fuente de nuestros contenedores, es una colección ordenada de comandos y parámetros para ejecutarlos en el momento de arrancar el contenedor, para, por ejemplo, abrir con puerto, o ejecutar un comando.

Registros

Las imágenes que se crean, se guardan en registros, y existen dos tipos: públicos y privados, como podeis ver en la misma web de Docker.

Contenedores

Es el proceso o conjunto de procesos que se lanzan desde una imagen. Un contenedor puede ser creado, inicializado, parado, vuelto a ejecutar y destruido, a diferencia del resto de componentes de Docker.

containersLos contenedores reciben este nombre porque recuerdan a los contenedores que se utilizan en el transporte (todos hemos visto los contenedores de transporte marítimo, ¿verdad?). Así, podemos hacer un contenedor con una base de datos, una web, o cualquier otro servicio que pensemos, y podemos llevarlo de un sitio (servidor) a otro, sin problemas. De esta manera, el desarrollador enviará su imagen al departamento de testeo, o de puesta en producción desde su máquina local, sin que se pierda nada por el camino, a la par que todos los actores implicados en un desarrollo se aseguran de tener el mismo entorno en cada momento.

A veces sucede que cuando se instala un plugin en MAgento, o lo desinstalamos, o actualizamos la plataforma de alguna forma, la parte del front se ve perfectamente y funciona todo, pero al intentar entrar en el backend, no podemos acceder al mismo.

Nos ponemos un poco nerviosos, porque aunque no es la pantalla de mantenimiento, no podemos acceder al backend de nuestro comercio electrónico. Si después de hacer lo que te recomiendan en foros y webs, que suele ser “borrar el contenido del directorio de var/cache de Magento”, “borrar el contenido del directorio var/sessions de Magento” y ver que sigue igual, y después de poner el código correspondiente al modo desarrollador:

[crayon-5ba287277eeea220883520/]

y comprobar que seguimos sin ver nada, ni en los archivos de log propios de Apache ni en los de var/log y var/reports de Magento, y tampoco has conseguido ver qué ocurre al desactivar la compilación, es que ha llegado el momento de utilizar este código, que devolverá qué clase es la que da el error, y por lo tanto, nos dará pistas de qué está ocurriendo (por ejemplo, que no se ha instalado / desintalado el plugin correctamente, o que la instalación ha encontrado algún problema a la hora de volcar todos los archivos de la actualización, y alguno no lo ha hecho, o se ha corrompido algún archivo, etc).

[crayon-5ba287277eef5708559421/]

Logo-DockerEn desarrollo, estamos acostumbrados a que el despliegue de una aplicación en producción sea un dolor de muelas, y no nos gusta llegar al momento “paso a producción”, por la de posibles errores de última hora que nos encontramos. ¿Cuántas veces nos hemos encontrado que el desarrollo realizado en un servidor y entorno determinado, no funciona en otro? ¿Cuántas veces hemos dicho la temida frase “en mi local (o servidor) funciona”?. Solucionar este tipo de problemas siempre ha sido un añadido en todo proyecto que nunca se sabe calcular, hasta ahora, ya que gracias a herramientas como Docker, podemos realizar despliegues de desarrollos independientemente del entorno en el que se despliegan. ¿Cómo logramos hacerlo? ¿Realmente interesa trabajar con una herramienta como Docker? Para explicarlo, vamos a publicar unas entradas, en las que iremos viendo qué es y para qué sirve, y cómo funciona Docker. ¡Esperamos que os gusten!

Cuando realizamos una web, es conveniente no tener las imágenes en servidores de terceros, sino en nuestros propios servidores, o en un CDN. ¿Cómo descargamos las imágenes de otro servidor?

Podemos hacerlo de varias formas:

[crayon-5ba287277f28f763535498/]

O:

[crayon-5ba287277f298147667172/]

Y la más eficiente de todas, si tenemos que descargar muchas imágenes, es hacerlo con cURL:

[crayon-5ba287277f29b323070771/]

 

En Moodle, cambiar el tamaño máximo del archivo subido en el sitio o en los cursos no es complicado, pues la propia plataforma nos indica los ajustes que hay que modificar en el php.ini y en Apache.

tamano_maximo_sitioPero a veces ocurre que, a pesar de haberse propagado el cambio por toda la plataforma Moodle, el tamaño máximo del archivo subido en las tareas sigue siendo el antiguo (1 MB, 2 MB, etc.). Esto se debe a que en el caso de las tareas este ajuste hay que realizarlo a ese nivel, y para ello hay que acceder a otra parte de Moodle. El menú desplegable tiene un aspecto similar, pero se encuentra en Administración del sitio > Extensiones > Extensiones de tarea > Extensiones de entrega > Archivos enviados. Una vez allí, modificaremos el valor del tamaño máximo de las entregas en el menú desplegable pertinente.

tamano_maximo_tarea