Debian Lenny Vagrant base box

I was recently working on a project where they’re still using Debian 5.0 as their OS. Since I couldn’t find a Vagrant base box with it, I rolled up my sleeves and created my own, so here it is: felipelavinz/debian-lenny

In case you need to create another rare base box, you might want to check this excellent tutorial on creating a Vagrant base box as an starting point.

Guardar las credenciales MySQL para tu usuario

En lugar de tener que ingresar tus datos de acceso a MySQL cada vez que necesitas conectar a la base de datos, puedes simplemente guardarlos en tu directorio de usuario creando un archivo .my.cnf con los siguientes contenidos:

[client]
user=your_username_here
password=your_user_password_here
socket=/var/run/mysqld/mysqld.sock

Tras haber creado el archivo, asegúrate de darle los permisos correctos con chmod 0600 para evitar que otros usuarios lo puedan leer.

Cargar imágenes de sitio remoto a través de proxy inverso con nginx

Independiente del proyecto, CMS o framework sobre el que estés trabajando, contar con una copia local de desarrollo es fundamental.

Aunque replicar configuraciones y bases de datos es algo relativamente sencillo, para proyectos de mediana o gran envergadura se hace especialmente complejo contar con todas las imágenes y archivos subidos por usuarios, por lo que es necesario recurrir a otras alternativas para lograr una réplica útil.

Por supuesto, una alternativa es simplemente realizar una copia mediante rsync u otro mecanismo, pero la librería de imágenes de un sitio grande puede llegar a pesar varias decenas de gigas; por eso la opción de acceder a estos archivos por un proxy resulta muy conveniente y práctica.

Ejemplos de configuración para WordPress

En primer lugar tienes que verificar que nginx tiene el soporte para el módulo de proxy, lo que puedes chequear ejecutando nginx -V desde la consola. Si estás usando la versión que viene en los repositorios de Ubuntu, deberías tenerlo.

Ahora lo más sencillo, para el caso de un sitio único (sin multisite).

Y algo más complejo, para multisitio con subdominios:

Otro escenario de uso muy útil es para réplicas de sitios que se utilizan como QA.

Vale la pena indicar que lo mismo se puede conseguir con otros servidores web; por ejemplo con Apache. Lighttpd también tiene un módulo de proxy, por lo que también se debería poder.

Herramientas para la optimización de MySQL

En un trabajo de optimización es necesario revisar cientos de factores que pueden estar influyendo en el funcionamiento de un sistema, entre los que la base de datos puede tener un rol clave. Afortunadamente existen múltiples herramientas automatizadas que nos pueden facilitar este trabajo, o al menos darnos un punto de partida para poder ajustar las configuraciones de MySQL de modo de sacar el máximo provecho al hardware que estás utilizando.

  • mysqltuner es una de las alternativas más conocidas y por lo mismo se puede encontrar en los repositorios de varias distribuciones, pero en caso que no sea así la puedes descargar desde su repositorio en GitHub. Dado que se trata de un “simple” script en Perl, basta bajarlo y otorgar permisos de ejecución para obtener una serie de datos críticos y sugerencias de optimización, orientadas tanto a mejorar el performance como la estabilidad.
  • mysql-tuning-primer funciona de modo similar, y lo puedes descargar desde su página de proyecto en Launchpad. En este caso es un script en bash, que a partir de las variables de status de MySQL intenta generar recomendaciones sensatas para optimizar el servidor. Además de las sugerencias de configuración, en varios casos agrega información adicional para comprender de mejor forma el contexto de los ajustes en caso que no tengas un conocimiento muy acabado de las variables en las que indica modificaciones.

Aunque ambas herramientas entregan información muy valiosa para realizar mejoras en el funcionamiento de tu base de datos, es fundamental complementarlas con un conocimiento acabado de cada una de las variables de configuración y el funcionamiento de la aplicación para abordar exitosamente la tarea de optimización.