Blog

Etiqueta: Wordpress

WordPress: mysql y soluciones de cache

Publicado en Desarrollo web Nuestros servicios Sistemas TI en febrero 26, 2010 1:43 pm

Hace algunos días me resultó interesante el debate que se formó en torno a un post en Loogic, en el cual se hablaba de la problemática de tener cuello de botella en el backend de base de datos de una aplicación web.

Desde nuestra experiencia podemos decir que no es tanto culpa de la base de datos el que ocurran estos problemas, sino de la programación en la aplicación web o una mala o desatendida gestión en la base de datos y configuración del servidor.

En muchas ocasiones se suele comentar que un cms tiene una muy mala gestión de consultas sobre la base de datos que utiliza, que abusa de ellas o incluso que hace auténticas chapuzas. En algunos casos puede ser cierto, en otros como en el caso de WordPress mayormente esas afirmaciones radican en un desconocimiento técnico en cómo funcionan realmente esta herramienta y qué cuidados requiere las misma.

WordPress

Si bien es cierto que podemos ahorrarnos muchas consultas a la base de datos desde WordPress evitando el uso de algunas de sus Template Tags (funciones que ayudan a crear themes) o plugins que hacen consultas que wordpress ya hace previamente desde su core, esto puede ser totalmente ineficaz si por ejemplo no tenemos especial cuidado en la gestión de la base de datos.

Deshabilitar el motor innodb o los logs del servidor pueden ahorrarnos mucha carga en el servidor, pero no nos libra de tener que hacer una optimización en los valores de query_cache por ejemplo.

Es importante también prestar especial atención en la actualización del propio cms, ya que puede efectuar cambios en el esquema de base de datos, pero mantener funcionalidad obsoleta por compatibilidad, especialmente con plugins o funciones que se puedan seguir usando.

Plugins como WP SuperCache, basado en WP Cache 2 de Gallir (en el antiguo blog de Gallir encontramos una descripción de cómo funciona y actúa WP-Cache 2), son imprescindibles para reducir los accesos de datos a mysql. Pero en algunos casos hemos encontrado problemas debido a malas actualizaciones de WordPress que se llevaban arrastrando varias versiones atrás.

En un caso concreto nos hemos peleado con algún wordpress que hacía consultas antes de lanzar la acción init, que es la acción que activa plugins como WP SuperCache. Esto hacía ineficaz toda posibilidad de cacheo a través de plugins.

Podríamos evitar esta situación cacheando todo el sitio en archivos estáticos html, en memoria a través de módulos memcached a nivel de servidor web, usando sistemas de proxy caché tipo Squid o infinidad de soluciones más. Personalmente creo que este tipo de cosas hay que hacerlas después de asegurarse que la parte de la aplicación web está optimizada o al menos no abusa demasiado de la base de datos. Más que nada porque este tipo de soluciones conllevan una serie de costes asociados, por ejemplo si optamos por cachear todo a disco necesitaremos, en sitios web con medio o alto tráfico, disco SAS a 10k o 15k revoluciones para evitar los cuellos de botella que tendríamos con discos SATA. Muchos proveedores venden esto como “un servidor más grande”, nosotros preferimos abordarlo de otra forma. Evidentemente tiene más sentido optar por soluciones basadas en memoria, como memcached, pero no disponemos de estas opciones en todos los entornos.

Hay otras situaciones en las que un sólo plugin puede ser el culpable de problemas de rendimiento. Muchas veces se confía demasiado en el buen hacer de los desarrolladores de plugins muy utilizados como el All In One Seo Pack, que resulta no ser tan óptimo como cabría esperar.

Nosotros en Blackslot empezamos por hacer un diagnóstico de la aplicación web, en el caso de basarse en wordpress limpiar el theme y el sitio web de funciones y plugins desactualizados, comprobar el buen estado de la base de datos para el CMS en cuestión, desarrollar plugins o themes que utilicen la última versión de la api y si fuese necesario buscar soluciones a nivel de sistema que mejoren el rendimiento de la aplicación.

Estas soluciones pueden ser desde realizar optimizaciones del servidor web y la base de datos, implantar soluciones de cache en memoria, opcode cache para php, distribuir el contenido estático del blog entre varios servidores o servicios de terceros (cloud o no, dependiendo de los requisitos del cliente) hasta soluciones más avanzadas para sitios web de gran cantidad de datos y tráfico.

No siempre una solución puede ser la cura a todas las enfermedades. Se suele escuchar por ejemplo que un tipo de motor de almacenamiento en mysql frente a otro, como el caso de myisam frente a innodb, es más rápido en lectura pero esto no siempre es así. También se pueden ver casos como que una solución memcached de menos rendimiento que algún otro tipo de servidor de base de datos, o frecuentemente que cachear en disco penalice mucho más que almacenar en la base de datos. No se pueden tratar todos los casos por igual en problemas de rendimiento web.

Por lo general hemos tenido alguna experiencia con clientes que teniendo un servidor dedicado saturado con prestaciones no precisamente moderadas, hemos podido migrarles a uno de nuestros servidores HyperV R2 con Linux ahorrándose, con sólo algunos cambios en su cms y últimas versiones en tecnologías de servidor, bastante dinero en hardware al mes.

Internacionalizar wordpress con wpml

Publicado en Desarrollo web en enero 29, 2010 3:01 am

La i18n o internacionalización es algo crítico hoy en día para los medios de comunicación online, que se basan mayormente en aplicaciones web.

La plataforma cms más usada en internet es sin duda WordPress, aplicación web que desde hace años cuenta con soporte i18n para sus themes y funciones internas. El problema siempre ha estado en la i18n del contenido.

Aunque muchos nos básabamos en filtrar por un tag determinado que representase la cultura del post o página que el usuario solicitase, las cosas han evolucionado y gracias a la dedicación e innovación de algunos profesionales en el sector de las traducciones online contamos con herramientas como wpml.

Esta herramienta nos permite no sólo traducir el theme del sitio web, sino que podemos además separar y asociar el contenido en base a su idioma o cultura de una forma muy sencilla. Esta separación tiene en cuenta las urls del sitio web, que pueden ser mediante subdirectorios o subdominios dinámicos.

Wpml es además,  un servicio online que a través de este plugin nos permite solicitar una traducción del contenido que queremos publicar a un idioma específico, hecho por un traductor nativo en ese idioma.

En su sitio web disponen de themes de ejemplo para poder estudiar cómo el plugin hace su trabajo, aunque basta con respetar el motor de i18n de wordpress a la hora de desarrollar el theme.

No hay nada como una herramienta hecha por y para profesionales de su sector.

Instalar WordPress desde nuestro panel de control

Publicado en Nuestros servicios Sistemas TI en diciembre 22, 2009 7:46 pm

1) En  el panel de control de nuestro dominio, seleccionamos la opción Aplicaciones web.

image

2) Seleccionamos Instalar aplicación web.

image

3) Localizamos la aplicación WordPress y pinchamos en Instalar.

image

4) En este punto se revisarán los requisitos de WordPress y si falta algo, el asistente nos avisará de ello. Tendremos que resolver el problema para poder continuar.

image

Nota: Para resolver este problema de Safe Mode, visita este artículo.

5) Aceptamos el texto legal.

Hosting WordPress en Blackslot 1

6) Ahora vamos a la parte más importante del proceso de instalación.

  1. Botón personalizado para acceder a la aplicación: Creará un botón de acceso a la aplicación en el panel de control.
  2. Directorio de destino: Si queremos que el blog aparezca como página principal de nuestro dominio, entonces hay que elegir la opción Carpeta raíz (/). Esto instalará WordPress directamente en el directorio /httpdocs de nuestro alojamiento.
    Si por el contrario queremos meterlo en un subdirectorio, como http://midominio.com/wordpress le indicamos en la opción otros el lugar deseado.
  3. Servidor de la base de datos: Lo normal es dejar el que viene por defecto.
  4. Nombre de la base de datos: Autogenera un nombre bastante difícil de recordar. Se puede sustituir por algo más sencillo, lo mismo para el usuario.
  5. Contraseña: Será la del usuario que se crea para la base de datos.
  6. Administrator´s login: Será el usuario administrador de WordPress (wp-admin), es importante recordarlo, así como la contraseña que le pongamos.
  7. Weblog title: Finalemnte ponemos el título de nuestro blog y ya podemos pinchar en instalar.

Hosting WordPress en Blackslot 2

7) Una vez tenemos la aplicación instalada, podemos verla desde el panel y acceder a la misma.

Hosting WordPress en Blackslot 3

Hosting WordPress en Blackslot 4