Dagi3d v4

Controlar el número de procesos

Resulta que el otro día no era capaz de acceder al correo ni de poder verlo vía web ya que el apache también parecía caido. Pero lo peor es que ni siquiera podía acceder por ssh para ver que estaba pasando e intentar arreglarlo, así que no me quedó más remedio que ponerme en contacto con el soporte del vps donde tengo instalados todos los servicios.
El problema resultó ser que había sobrepasado el número máximo de procesos/hilos permitidos (lo tienen fijado en 200), así que hice un pequeño script que mande un correo cuando la máquina se acerque al límite para ver que está suciendo:

#!/bin/bash

MAIL_SUBJECT="<subject del correo>" 
MAIL_TO="<direccion del destinatario>" 
MAIL_TEXT="<texto del correo>" 
MAIL_FROM="From: <direccion del remitente>" 

# fichero donde volcar el listado con los procesos
PS_LOG="/var/log/ps_alert.log" 

MAX_PS=170

ps_count=`grep Threads /proc/*/status | gawk '{ SUM+=$NF } END { print SUM }'`

echo ${ps_count}" procesos" 

if [ "$ps_count" -gt "$MAX_PS" ]; then
  # se manda un correo
  MAIL_TEXT=${MAIL_TEXT}${ps_count}" / "${MAX_PS}

  echo $MAIL_TEXT | mail -a "$MAIL_FROM" -s "$MAIL_SUBJECT" "$MAIL_TO" 

  # se vuelca un listado con los procesos a un fichero
  ps aux > ${PS_LOG} && wc -l ${PS_LOG}
  echo `date +"%d/%m/%y %H:%M:%S"` >> ${PS_LOG}
fi

Al principio para comprobar el número de procesos usaba el comando 'ps auxw | wc -l', pero consulté a la gente de RoseHosting cómo lo hacían ellos y usan el comando que puse en el script.
En condiciones normales hay unos 80-85 procesos, así que en caso de que me vuelva a suceder, espero así poder comprobar qué es lo que provocó todo el desaguisado.

(También he de comentar que apenas transcurrieron 10 minutos hasta que obtuve la primera respuesta por parte de los administradores, lo cual es de agradecer)

¡Todos a tocar la guitarra!

Llevo días viciadísimo al Frets On Fire, un clon para PC del Guitar Hero donde hay que utilizar el teclado a modo de guitarra.
Las tres canciones que trae el juego están muy bien para ir practicando, pero es que por si fuera poco, la gente está adaptando nuevas canciones por su cuenta, sacando incluso un pack con los temas originales del Guitar Hero.
Además, los creadores del juego han liberado el código y cuenta con una versión para linux.

Ojo, que engancha.

Ubuntu en el portátil

Recientemente adquirí un portátil para poder avanzar trabajo durante las horas muertas en la universidad. En cuanto lo desempaqueté y arranqué para comprobar que estaba todo en orden, me dispuse a formatearlo para instalar windows de nuevo (de serie el ordenador trae 30 gb de software-morralla cuando una instalación ‘fresca’ tan sólo ocupa unos 2gb) y la versión de linux con la que trabajo habitualmente, ubuntu.

Al arrancar el cd de instalación de ubuntu(es un ‘live cd’) me llevé una grata sorpresa: me había detectado todo el hardware sin problemas. Vamos, que una vez instalado todo el software ya tendría el ordenador listo para usar sin necesidad de tocar nada. Como mucho tendría que instalar los drivers de nvidia si quería tener aceleración 3d, pero eso tan sólo supone ejecutar un simple comando.
De hecho, la instalación de linux resultó mucho más sencilla que la de windows, ya que con esta tuve que pelearme con las actualizaciones y los drivers(sobre todo el del sonido) durante un buen rato para tenerlo todo listo.
A lo que quiero llegar con todo esto, es resaltar que el esfuerzo por parte de la gente de Canonical y el equipo de desarrolladores de Ubuntu en concreto por acercar Linux al ‘escritorio’ y no sólo a los servidores, está dando sus frutos, ya que permite que gente inexperta en este s.o. tenga una primera experencia poco o nada traumática. En definitiva, que vamos por el buen camino face-smile.png

Migrando voy, migrando vengo, por el hosting yo me entretengo

Parece que ya se terminaron de propagar los nuevos dns y ya está funcionando todo correctamente en el nuevo vps.
La migración ha resultado relativamente sencilla ya que apenas hubo problemas con la parte de la web, a excepción de alguno con las aplicaciones que iba a mantener en el hosting antiguo, aunque gracias al soporte de Dreamhost se solucionó todo.
Lo que sí que dio algún que otro quebradero de cabeza fue la configuración del correo (espero que no se hayan perdido muchos durante el traslado) ya que nunca me había metido en un berenjenal así, pero como ya comenté, sin duda lo mejor para aprender es cacharrear.

La configuración del hosting viene a ser:

Web
  • Apache 2.2 + mod_fcgid
  • Resin
  • Tomcat
  • Php5
  • Ruby
  • Ruby On Rails + RMagick + fcgi
  • MySql

Correo
  • Postfix
  • courier + courier-pop + courier-mysql
  • pop-before-smtp

Dns
  • Bind

La gestión de las cuentas de correos la estoy haciendo con courier-mysql y las cuentas virtuales de postfix también con mysql. De momento tengo que meter todo en la base de datos a mano, así que me he puesto a programar una pequeña interfaz web con ruby on rails para gestionarlas. Si queda algo más o menos presentable ya sacaré el código por si a alguien le resulta útil.

Configurar servidor DNS

Recientemente contraté un vps en Rosehosting utilizando un descuento especial para poder tener disponible una máquina remota sin las limitaciones que tiene un servidor compartido y hacer pruebas.
La ventaja del vps es que hay libertad casi absoluta para instalar lo que uno quiera, y aunque también implica que todo lo tiene que administrar uno mismo, es una estupenda oportunidad para aprender y cacharrear.
Así que una vez ya estaba listo el vps, el primer paso era instalar y configurar en la ‘nueva’ máquina el servidor DNS que se encargase de gestionar todos los dominios y subdominios que se fuesen creando.

El servidor tiene instalado una Debian Sarge y utilicé el dominio dagi3d.com que tenía registrado pero no estaba usando y tras varias pruebas y leer distitnos how-to’s en internet, esta fue la solución a la que llegué:

Instalar Bind

apt-get install bind

Añadir la entrada del dominio a /etc/bind/named.conf.local

zone "dagi3d.com" {
 type master;
 notify no;
 allow-query { any; };
 file "/etc/bind/dagi3d.com.zone";
};

Configurar el fichero para la zona del dominio (/etc/bind/dagi3d.com.zone):

$TTL 3600
@ IN SOA dagi3d.com. info.dagi3d.com. (
            2006061701
            3H
            1H
            14D
            604800)
; DNS
        IN      NS      ns.dagi3d.com.
        IN      NS      ns2.dagi3d.com.
        IN      MX 10   mail.dagi3d.com.
; nombres
        IN      A       206.196.111.109
www     IN      A       206.196.111.109
mail    IN      A       206.196.111.109
ns      IN      A       206.196.111.109
ns2     IN      A       206.196.111.109

Basicamente se está indicando que los servidores de nombres y las peticiones a dagi3d.com, www.dagi3d.com y mail.dagi3d.com(para el correo), apunten a la ip 206.196.111.109
Lo ideal sería tener los distintos servicios en máquinas diferentes, pero en este caso no hay más recursos así que no queda otra face-smile.png

Luego bastaría con reiniciar el servidor dns:
/etc/init.d/bind restart

Y por último habría que indicar donde hayamos registrado el dominio, que éste utilizará los dns’s ns.dagi3d.com y ns2.dagi3d.com pero a su vez, también hay que indicarle de alguna manera la dirección ip de cada uno, ya que en primera instancia todavía no se conoce la dirección ip de los servidores pues todavía no se ha propagado la información por el resto de servidores dns y sería como un circulo vicioso.

Y estos son algunos de los enlace que utilicé y donde explican más detalladamente todo el proceso:

El siguiente paso será instalar Postfix + Courier para el correo y en otro post explicaré como instalar Apache + mod_fcgi + Ruby On Rails