lunes, 1 de julio de 2013
Postfix masquerading
Dejo unas notas sobre cómo modificar el email del remitente de la cuenta root en una máquina corriendo Postfix.
Problema:
El destinatario recibe el email de la cuenta root@nombremáquina en lugar de una FQDN.
La solución es muy sencilla. Antes de ponerse a trastear, recomiendo encarecidamente leer el "Postfix Address Rewriting" . Al grano.
1.- Crear el fichero smtp_generic_maps con el contenido
root@nombredemimaquina info@midominiomolon.org
2.- Hashear el fichero:
postmap hash:/etc/postfix/smtp_generic_maps
3.- Incluir la directiva smtp_generic_maps en el fichero main.cf
smtp_generic_maps = hash:/etc/postfix/smtp_generic_maps
4.- Reiniciar postfix
service postfix restart
Configuración testeada en :
SSOO: Ubuntu Server 12.04.1 64 bits
Postfix: 2.9.6-1~12.04.1
domingo, 30 de junio de 2013
"Sábados libres na Altamar" - Vigo - Junio 2013
- Openmediavault
- Moebius
- Uso de tarjetas SDHC clase 10 y montaje de /var /home /tmp en disco o llave USB para mejorar el rendimiento.
- La temática.
- La calidad de las charlas.
- Los conocimientos de los ponentes.
- Los asistentes.Sin conocernos prácticamente de nada, el compañerismo y el espíritu de enseñar / compartir fue excepcional.
- La conexión a Internet.
- Desde mi punto de vista, y a pesar de que las tres charlas me han parecido muy buenas, pienso que el nivel fue demasiado alto.
domingo, 17 de febrero de 2013
#LAV013 , de nuevo en Vedra!
Como el año pasado usamos Zentyal, y los resultados fueron más que satifactorios. Usamos un PC con procesador Intel Celeron 1,8Ghz y 2GB de RAM para 80 clientes repartidos en dos puntos de acceso( WRT54G y Ovislink 8000 AP). En menos de 1 hora instalamos el SSOO y configuramos la reglas del firewall y proxy transparente, y como por arte de Tux la ya teníamos cobertura wireless en la mayor parte del edificio.
Os recomiendo encarecidamente el uso de Zentyal para este tipo de despliegues. Es una distribución estable, robusta y sobre todo pensada para el usuario y para facilitar su administración.
Por lo demás, qué voy a decir, encantado de coincidir de nuevo con Mon,Xurxo, Fer,Aberlardo y todos los miembros de SenUnPeso. Encantado también de recibir a @probatto en Casa Permu y que ya estoy deseando que llegue el #LAV014.
Ah! Casi lo olvido, el próximo sábado 23 aburriré de nuevo al personal en Vedra con mi charla "Redes libres: internet sen un peso".
Salud!
jueves, 14 de febrero de 2013
Molom Error :Invalid API keys. Error 401: Invalid authentication.
Yo(nosotros) uso Mollom, un software desarrollado para cumplir un único objetivo: evitar spam en tu sitios web. Y lo hace muy bien! Su creador es Dries Buytaert, os suena de algo? Si queréis saber más acerca del proyecto visitad su web, está todo muy claro.
Al grano. El caso es que este módulo para Drupal 6.X cada X tiempo devolvía errores de validación OAuth contra el servicio de autenticación REST de Mollom.com. Y tras muchas vueltas, y bueno, por qué no decirlo, la inestimable ayuda de los fotos de Drupal.org, he encontrado la solución al error:
"Invalid API keys.Error 401: Invalid authentication."
y la he adaptado para un servidor corriendo Debian GNU/Linux y Drupal.
El error es muy simple.¡La zona horaria del servidor está mal configurada!¡Por eso "casca" el proceso de autenticación de Mollom!. La solución, muy sencilla:
1.- ntp. Sincroniza tu servidor/máquina con ntpdate. Puedes añadir una tarea "cron" para el que servidor sincronize el reloj cada día, por ejemplo:
30 * * * * root ntpdate.hora.rediris.es > /dev/null 2>&1
2.- Configura la zona horaria del servidor
dpkg-reconfigure tzdata
Ahora Mollom debería funcionar sin problemas!
martes, 29 de enero de 2013
SASL authentication failure: No worthy mechs found
apt-get install libsasl2-modules && service postfix restart && postqueue -f && postqueue -p
miércoles, 2 de enero de 2013
Snippet: DESCRIBE MySQL & PHP
$res = mysql_query('DESCRIBE dev_wsx');
while($row = mysql_fetch_array($res)) {
echo "{$row['Field']} - {$row['Type']}\n";
}
?>
martes, 27 de noviembre de 2012
drush y drush make Drupal
La instalación de drush en GNU/Linux es super sencilla. Nos aseguramos de que hemos instalado en nuestro sistema el paquete "php-pear".
root@toshiba-sdk:/home/apermuy/wwwroot/test/varios# dpkg-query --status php-pear
Package: php-pear
Status: install ok installed
Priority: optional
Section: php
Installed-Size: 2228
Maintainer: Ubuntu Developers
(...)
PHP5 is a widely-used general-purpose scripting language that is
especially suited for Web development and can be embedded into HTML.
The goal of the language is to allow web developers to write
dynamically generated pages quickly.
Homepage: http://www.php.net/
Original-Maintainer: Debian PHP Maintainers
pear install drush/drush
- prefix: suelo usar prefijos en las tablas para entornos en desarrollo, me permite usar una única base de datos para todas las pruebas.
Mi vida con los ISPs
La primera vez que me conecté a Internet fue en 1997, en un cibercafé de Ferrol. Recuerdo un obsoleto Netscape y un Windows 95 que se conectava vía RDSI. En 1999 accedía casi a diario y a finales de ese mismo año creo recordar ya me conectaba con Eresmas.Los años oscuros de la conexión por módem RTB se prolongaron hasta 2002 o 2003, no recuerdo exactamente.
En 2010 no podía creer que Vodafone lanzase al mercado un "pincho USB 3G" con base wireless sin límite de consumo de datos y sin permanencia, así que, a por él! . Os recuerdo que durante estos años vivía en pisos de estudiantes, o lo que es lo mismo: economía de guerra, piso alquilado por X meses y "oye tío, intenta conectarte a la wifi del vecino." 8 meses en los que en varias ocasiones creí haber quemado el pincho: que si aptitude safe-upgrade, que si Transmission... Vodafone me la jugó. En agosto de 2010 nos mudamos a un piso en Bertamiráns y por fin podía tener mi propia conexión de cable. El proceso de baja en Vodafone no fue ni rápido ni transparente ni nada que se le parezca. Son lo peor, y cuando digo lo peor es lo peor. No voy a contar las peripecias hasta que por fin pude dar de baja el servicio, sólo os cuento que tuve que pasar el "pincho" a prepago y dejar morir la tarjeta.
Desde 2010 soy cliente de R, y aunque he tenido mis historias, estoy bastante satisfecho con el servicio.
jueves, 22 de noviembre de 2012
exfat en Ubuntu 12.04 LTS
jueves, 15 de noviembre de 2012
De 1 usuario a 1 millón
viernes, 14 de septiembre de 2012
Zentyal 3.0 : primeras impresiones [ Update 1]
He probado Zentyal 3.0 en dos máquinas. Todavía no he visitado su base de datos de "bugs" pero me he encontrado el mismo error en dos máquinas distintas y de distinta arquitectura. El "bug"(realmente no sé si es un bug, pero todo apunta a que sí lo es) congela el proceso de instalación de software vía interfaz web. Mi solución ha sido matar el proceso apt y continuar la instalación desde la línea de comandos. Lo curioso del caso es que a posteriori he probado de nuevo Zentyal 3.0 dentro de un VirtualBox y he encontrado el mismo error. Supongo que toca investigar....
¿Actualizar desde la 2.2 a 3.0? Ummmmmmmmm, no me fío. Comentan en los foros de Zentyal:
I am sure the devs will do a great job on getting a decent upgrade path,
but it will take some time (probably some weeks) before it is
available.[Post original]
Tenía ganas(muchas) de probar la nueva versión de Zentyal 3.0. No voy a contar/replicar/copiar/pegar las características de esta nueva versión, pues de gente de Zentyal lo ha hecho fenomenal en este link "Novedades Zentyal 3.0".
Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
*** Zentyal WARNING ***
Entrando ya en temas más concretos, personalmente me interensan los módulos HTTPProxy y VPN
Para el módulo HTTPProxy siguen apostando por Squid. Estos son los "pequeños" cambios que he apreciado a primera vista:
- Pasan de la versión 2.7.STABLE7 a la 3.1.19-1. No tengo experiencia con Squid3(está mis objetivos a corto plazo, así que poco puedo aportar. Y eso? Pues en Debian Lenny siguen con 2.7 y por el momento....
- Han mejorado la gestión de las "Delay pools".
- Desde mi punto de vista han mejorado la gestión de las reglas de acceso. En esta nueva versión, aplicarlas es más intuitivo que la versión anterior.
- Podrían incluír una opción para poder gestionar las políticas de control de caché. [ Más info ]
- Podrían incluír una opción para poder gestionar "cache_peer" [ Más info ]
En resumen: Zentyal 3.0 es una solución estable y robusta para la implantación en PYME. Esta nueva versión, a pesar de no ser "revolucionaría", continúa con la progresión ascendente en cuanto a calidad, usabilidad y estabilidad de sus predecesores. Enhorabuena!
miércoles, 12 de septiembre de 2012
SSH práctico
Problema:Conexión "automática" a servidores corriendo OpenSSH en distintos puertos con diferentes usuarios,configuraciones y llaves.
Consejo: Edita el fichero ~/ssh/config tal y como se indica en este ejemplo:
Host dama
User powerslave
Port 666
Hostname iron.maiden.com
Host blindUser ozzy
Port 1024
Hostname crazy.train.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/ozzy_rsa
En la práctica:
ssh dama
Establecerá una conexión SSH al host iron.maiden. com en el puerto TCP 666
ssh blind
Establecerá una conexión SSH al host crazy.train.com en el puerto TCP 1024 usando la llave almacenada en ~/.ssh/ozzy_rsa
Problema:Ejecutar comandos en un servidor remoto.
Consejo: Recomiendo incluir el host en fichero ~/ssh/config
Ejemplo:
apermuy@vpn:~$ ssh apermuy@vps 'cat /proc/cpuinfo|grep model'
model : 6
model name : QEMU Virtual CPU version 0.9.1
Problema: Al intentar conectarnos a un servidor remoto recibimos el mensaje "WARNING: POSSIBLE DNS SPOOFING DETECTED! " y/o "WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! "
Consejo: Como indica el propio mensaje "Alguien está haciendo algo malo...". Revisa tus llaves RSA/DSA, logs, accesos....
Ejemplo:
ssh-keygen -R vps.algunhost.org
Problema: Backup directorio con tar sobre ssh.
Consejo: No uses la opción verbose( -v). Incluye siempre que sea posible el host en el fichero ~/ssh/config
Ejemplo: Este ejemplo envía el contenido del directorio /tmp al server definido en ~/ssh/config y, lo empaqueta en tar y lo comprime con gzip.
tar zcf - /tmp | ssh apermuy@vps "cat > tmp.tgz"
Problema: No solicitar que se verifique un host desconocido.
root@vpn:/home/apermuy# ssh apermuy@vps
The authenticity of host 'vps.algunhost.org (111.111.222.333)' can't be established.
RSA key fingerprint is 2b:11:13:49:11:f9:72:71:28:67:51:2f:d7:2a:5d:6d.
Are you sure you want to continue connecting (yes/no)?
Ejemplo:
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
Problema: Compactar con tar al vuelo vía ssh hacia un host remoto.
Ejemplo:
tar zcf - /home/apermuy | ssh apermuy@111.222.333.444 "cat > /tmp/test.tar.gz"
miércoles, 29 de agosto de 2012
Putty Gen “Server refused our key”
Por motivos laborales me he visto obligado a utilizar Microsoft Windows Vista como sistema operativo. El caso es que al generar un par de claves RSA e intentar conectarme a un servidor corriendo OpenSSH recibo "siempre" el siguiente error:
“Server refused our key”
La solución es muy sencilla. Una vez hemos copiado la clave pública al servidor en cuestión usamos "ssh-keygen" para limpiarla y "convertirla" a "formato openssh" con el siguiente comando:
apermuy@vpn:~$ ssh-keygen -if id_rsa_vbox_sdk.pub > pub_vbox
El siguiente paso es añadir la "llave limpia" al fichero %h/authorized_keys . Tan sencillo como:
cat pub_vbox >> .ssh/authorized_keys
El problema por el cual el servidor rechaza la llave es el formato de la misma. Resumiendo. El "formato" de la llave que genera "putty-gen" es distinto a que espera el servidor(openssh).Veamos un ejemplo:
Contenido de la llave en formato "putty-gen":
El mismo contenido después de convertirla a formato ssh, tal y como se indica en este post:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAvkO+GR3NqkGdPxn2MesgSiJBoZ7zzIsULb/JzdP48z6LKAT5YbKs0sRdoUv2iK9pgrJXn18y62yVFAf0BPkgJOS6u7sGkwIHLnyhFI0Pb+NEpXALtCYIUKv6Vh8NfaAcy7M4icM8wRMZ14CAe3SCmoby/MZbqfo9GeUXuBAYxDH---------------------VylMVhxRnuUnMjKkjzSEYNZvc0/dq6omuEGw2VbyTjLcYel5kmmvM8OFXFnqg9Kr0ITjZBxvNk56S9jfOqs9qgt9TMFFHUgHGaYpS+S42JG7m5k7HSp57ZrRaP/9l4BqOQLnwTJLFjOCV272uQzbbUQ==
En resumen: el formato "openssh" sólo espera una línea con el contenido de la llave, comenzando la cadena(p.e) por "ssh-rsa".
Saludos!
lunes, 27 de agosto de 2012
Mi visión particular del verano
Estas vacaciones no me apetecía nada ponerme a estudiar C# ni ASP.net, que es con lo que estoy lidiando últimamente, sin embargo si he tocado, aunque fuese por encima:
- Squid : He actualizado el repo de Github.com de la versión 2.X. Si os interesa podéis echarle un vistazo a la configuración básica en : https://github.com/apermuy/squid2
- He colaborado con GALPon redactando un "mini-howto" para la instalación de un Moodle 2.4 en Debian GNU/Linux Squeeze. Podéis echarle un vistazo en http://www.galpon.org/wiki/index.php/Instalando_Moodle_en_%C2%ABlocal%C2%BB_para_pruebas
- He re-escrito el formulario de inscripción del IX Ciberencontro Kernel 2012 de Mugardos, además también me he currado una app en Gambas para la lectura de los datos.
- tune2fs : Un "tune2fs -m 0 /dev/sda4" me "ha devuelto" todo el espacio que non encontraba en una de la particiones de mi PC de sobremesa.
- Drupal: He tocado Drupal 6 + CCK + Views en la web de "Asociación Comunidade O Zulo". Espero que en el Kernel 2012 podamos migrar todo el contenido a Drupal 7.
- Zentyal: He trasteado con la versión 2.2. Nada nuevo, pero igual de interesante.
- Debian GNU/Linux: Encantado con la versión unstable en mi PC de escritorio.
- PHP: Recomiendo visitar http://www.eugeniabahit.com/ , sobre todo la sección PHP POO.
martes, 24 de julio de 2012
Moodle, logs y cómo salvar el culo...
El pasado Viernes día 20 me avisaron de que "para ayer" deberíamos tener listos los accesos y calificaciones de todos los alumnos que han cursado algún plan formativo con nosotros. Lo de todos los años: ir a Moodle, entrar en el curso, generar informe y asunto zanjado. Nada más lejos de la realidad!
Comienza el "marrón" con la operación descrita en el párrafo anterior y bueno, la verdad es que aunque suene raro, hasta parecía divertirme y todo! Que si un informe por aquí, que si lo guardo por allá, hasta que "0 registros" encontrados para el curso XXXYYYZZZ: "No puede ser!" pensaba en voz baja. "Voy a generar de nuevo el informe", pero nada: 0 registros! Llamo a mi compañero y le comento el problema: "Yo genero los informes cuando termina el curso, pues 'el Moodle' está configurado para eliminar los registros después de 100 días de inactividad", responde. El cielo se vuelve negro y yo comienzo a plantearme seriamente abandonar el país de inmediato, dejarlo todo y comenzar una nueva vida en Cuba vendiendo postales en el Malecón. "Keep calm and carry on!".
"Copias de seguridad, eso es" vuelvo a repetir en voz baja. Descargo vía "scp" los últimos backups de los cursos en cuestión y los intento restaurar en mi máquina local. Imposible! Ni aumentando "timeouts" , ni "tuneando MySQL", nada, ni una sola operación de restauración se realizaba correctamente...Las 16:05. 35ºC en el estudio. No sabía qué hacer. Bajo a tomar algo frío, subo de nuevo al estudio y pienso "puedo descargar toda la bbdd e intentar recuperar los logs de acceso, luego los exporto a XLS y asunto arreglado". No fue tan fácil como pensaba, pero sí, lo logré. Es muy probable que a nadie le interese cómo lo he logrado pero voy a dejarlo escrito por aquí, por que es probable que algún día necesite volver a leer este post.
1.- Restaurar la bbdd.
mysql -u root -p bbdddepruebas < copiabbdd.sql
2.- Ni se os ocurra trabajar con PhpMyAdmin o similar. En mi caso he usado MySQLWorkBench y no he tenido ni un problema. Hablamos de 2.100.000 registros en una sóla tabla.....
3.- Crear una "View" sólo con los registros del curso en cuestión. Sabéis que en Moodle todos los cursos tienen un "id" único, pues bien, yo he creado una "View" para cada curso del que había perdido los logs.
CREATE VIEW idcurso AS SELECT * FROM mdl_log WHERE course = 80
4.- Bien, ahora creamos una consulta sobre la vista pero con dos "INNER JOIN" sobre las tablas mdl_user(para obtener el nombre del usuario a partir del userid) y mdl_resource(para obtener el nombre del recurso/actividad a partir del resource_id).
SELECT
FROM_UNIXTIME(x.time),
x.ip,
CONCAT(u.firstname, ' ', u.lastname) AS NombreAlumno,
x.action as Accion,r.name as Informacion
FROM
idcurso x
INNER JOIN mdl_user u ON x.userid = u.id
INNER JOIN mdl_resource r ON x.info = r.id
LIMIT 0 , 100000
Pasteamos directamente la consulta en MySQLWorkbench, esperamos a que finalice la ejecución y listo! Ya podemos pulsar el botón exportar y generar el informe de acceso.
Así es como pasé el Lunes 23 de Julio de 2012, entre Moodle y sentencias SQL. Lo bueno: he entregado el trabajo a tiempo. Lo malo: era mi día libre.
Salud!
jueves, 31 de mayo de 2012
mount.nfs: access denied by server
root@mabu apermuy#mount -a
mount.nfs: access denied by server while mounting 192.168.20.50:/home/apermuy/Música
La solución es muy sencilla, basta con añadir "nfsvers=3" a la cadena correspondiente en el fichero /etc/fstab, en mi caso:
#Polinico BTMS
192.168.20.50:/home/apermuy/Música /home/apermuy/Desktop/nfs/polinico/Musica nfs nfsvers=3,rsize=8192,wsize=8192,nosuid,soft 0 0
Ahora intentamos montar los directorios y comprobar que todo está en orden.
root@mabu apermuy#mount -a && df -hT
Filesystem Type Size Used Avail Use% Mounted on
rootfs rootfs 78G 8.1G 70G 11% /
devtmpfs devtmpfs 976M 0 976M 0% /dev
tmpfs tmpfs 985M 88K 985M 1% /dev/shm
tmpfs tmpfs 985M 1.3M 984M 1% /run
/dev/sda4 ext4 78G 8.1G 70G 11% /
tmpfs tmpfs 985M 0 985M 0% /sys/fs/cgroup
tmpfs tmpfs 985M 0 985M 0% /media
192.168.20.50:/home/apermuy/Música/ nfs 801G 543G 218G 72% /home/apermuy/Desktop/nfs/polinico/Musica
Parece que si... :)
miércoles, 30 de mayo de 2012
Sublime Text Fedora 17
"./sublime_text: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory"
Un simple " ldd sublime_text" devolverá las dependencias de las librerias con las que ha sido compilado el binario. En mi caso:
root@mabu Sublime Text 2#ldd sublime_text
linux-vdso.so.1 => (0x00007fff72dff000)
libgtk-x11-2.0.so.0 => /lib64/libgtk-x11-2.0.so.0 (0x0000003a3b800000)
libgdk-x11-2.0.so.0 => /lib64/libgdk-x11-2.0.so.0 (0x0000003a3c000000)
libatk-1.0.so.0 => /lib64/libatk-1.0.so.0 (0x0000003a3b400000)
libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x0000003a42600000)
libpangoft2-1.0.so.0 => /lib64/libpangoft2-1.0.so.0 (0x0000003a38a00000)
libpangocairo-1.0.so.0 => /lib64/libpangocairo-1.0.so.0 (0x0000003a38e00000)
libgdk_pixbuf-2.0.so.0 => /lib64/libgdk_pixbuf-2.0.so.0 (0x0000003a37a00000)
libcairo.so.2 => /lib64/libcairo.so.2 (0x0000003a39200000)
libpng12.so.0 => not found
No busqueis el paquete "libpng12.so.0" en Fedora 17 por que no lo encontraréis. La librerías compartidas para libpng 1.2.x se encuentran en el paquete libpng-compat, así que ese el paquete que debemos instalar. Así de simple:
yum install libpng-compat
y en medio minuto tendréis "Sublime Text" funcionando.
Mis impresiones sobre Fedora 17
Desde hace unas semanas uso Fedora 16( desde ayer Fedora 17 ) tanto el PC de escritorio como el portátil. El cambio no tiene un por qué concreto, simplemente me apetecía cambiar de distrubución y de entorno de escritorio.
Me ha gustado:
- KDE 4. Mucho no, muchísimo. A mi enteder es mucho más sencillo e intuitivo que GNOME3. No voy a entrar en guerras ni afirmaciones absurdas, actualmente me gusta más KDE. Desactivando los efectos el entorno, Dolphin y demás es rapidísimo, desde mi punto de vista, está años luz por encima de GNOME3.
- Kernel 3.3. Indispensable contar con un Kernel actualizado. En esta versión se incluyen mejoras en el driver Nouveau para Nvidia;mejoras en los sistemas de ficheros Btrfs, FUSE, NFSD; mejoras en Netfilter(iptables)...Si queréis ver todas las novedades del Kernel 3.3 os dejo un enlace a los "features".
- Yum. Rapidísmo. Por el momento no echo de menos apt.
- Software: Versiones actualizadas de la mayoría de apps que uso a diario : Firefox, git, vim, Thundebird, K3B...
- Instalación: Si sabes leer puedes instalar Fedora 16 / 17. Sencillo e intuitivo.
- Fedora Spins: Ya he hablado de los Spins en este blog, y vuelvo a insistir, echadle un ojo si no os convence la versión "out of the box" . http://spins.fedoraproject.org/
- Documentación . Aunque la versión 17 está sin traducir, la documentación de Fedora es muy completa. Incluye apartados para: instalación, mantenimiento de paquetes, guía de seguridad. http://docs.fedoraproject.org/es-ES/index.htmlhttp://docs.fedoraproject.org/es-ES/index.html
martes, 10 de abril de 2012
Blogs que deberías seguir
.- Planet Fedora
.- Planet Debian
.- Planet Gentoo
.- Planet Gnome
.- Planet KDE
.- Android Developers Blog
.- The Chromium Blog
.- Planet Ubuntu
.- Mark Shuttleworth
.- Dropbox blog
.- Twitter Engineering
.- Mozilla Hacks Developers Blog
.- The GitHub Blog
.- The Google Open Source Blog
.- Apache Software Foundation Blogs
.- The Linux Mint Blog
.- Google Webmaster Central Blog
.- MySQL Perfomance Blog
.- OpenVZ Blog
.- Cambrico.net [Drupal]
.- Eríc London's Blog [ Drupal & more ]
Faltan muchos y muy buenos...
lunes, 9 de abril de 2012
Renombrar CTID OpenVZ "on the fly"
Ojo al crear máquinas virtuales con OpenVZ y asignar un 'ctid' menor que 100, pues están reservados para el sistema.He creado dos máquinas en "enjuto" , el servidor que tengo "rulando" en casa con OpenVZ y al realizar un backup con vzdump de una de las máquinas devolvía en siguiente error:
root@enjuto:/backups# vzdump --suspend --dumpdir /backups --snapshot 2
ERROR: got reserved VM ID '2'
Supongo que en la actualidad OpenVZ tendrá un modo más rápido(en realidad lo es) que teclear 5 líneas para cambiar ctid's, pero lo que he leído en este foro ha funcionado al 100% .
enjuto# vzctl chkpnt 1 --dumpfile /tmp/Dump.1
enjuto# mv /etc/vz/conf/1.conf /etc/vz/conf/100.conf
enjuto# mv /vz/private/1 /vz/private/100
enjuto# mv /vz/root/1 /vz/root/100
enjuto# vzctl restore 100 --dumpfile /tmp/Dump.1
Ahora sí funciona el comando vzdump sin problemas:
root@enjuto:/backups# vzdump --dumpdir /backups --snapshot 100
unable to find command 'lvcreate'
root@enjuto:/backups# vzdump 100
INFO: starting new backup job: vzdump 100
INFO: Starting Backup of VM 100 (openvz)
INFO: CTID 100 exist mounted running
INFO: status = CTID 100 exist mounted running
INFO: mode failure - unable to detect lvm volume group
INFO: trying 'suspend' mode instead
INFO: backup mode: suspend
INFO: bandwidth limit: 10240 KB/s
INFO: starting first sync /var/lib/vz/private/100/ to /var/lib/vz/dump/vzdump-openvz-100-2012_04_09-11_38_50.tmp
INFO: Number of files: 24892
INFO: Number of files transferred: 19140
INFO: Total file size: 456167369 bytes
INFO: Total transferred file size: 455391436 bytes
INFO: Literal data: 455391436 bytes
INFO: Matched data: 0 bytes
INFO: File list size: 573708
INFO: File list generation time: 0.001 seconds
INFO: File list transfer time: 0.000 seconds
INFO: Total bytes sent: 456866413
INFO: Total bytes received: 398372
INFO: sent 456866413 bytes received 398372 bytes 4595625.98 bytes/sec
INFO: total size is 456167369 speedup is 1.00
INFO: first sync finished (99 seconds)
INFO: suspend vm
INFO: Setting up checkpoint...
INFO: suspend...
INFO: get context...
INFO: Checkpointing completed succesfully
INFO: starting final sync /var/lib/vz/private/100/ to /var/lib/vz/dump/vzdump-openvz-100-2012_04_09-11_38_50.tmp
INFO: Number of files: 24892
INFO: Number of files transferred: 0
INFO: Total file size: 456167369 bytes
INFO: Total transferred file size: 0 bytes
INFO: Literal data: 0 bytes
INFO: Matched data: 0 bytes
INFO: File list size: 573708
INFO: File list generation time: 0.001 seconds
INFO: File list transfer time: 0.000 seconds
INFO: Total bytes sent: 575625
INFO: Total bytes received: 1916
INFO: sent 575625 bytes received 1916 bytes 231016.40 bytes/sec
INFO: total size is 456167369 speedup is 789.84
INFO: final sync finished (2 seconds)
INFO: resume vm
INFO: Resuming...
INFO: vm is online again after 5 seconds
INFO: Total bytes written: 473118720 (452MiB, 9.3MiB/s)
INFO: tar: Exiting with failure status due to previous errors
INFO: archive file size: 451MB
INFO: Finished Backup of VM 100 (00:02:40)
INFO: Backup job finished successfuly
sábado, 7 de abril de 2012
How Linux is built
viernes, 6 de abril de 2012
debootstrap con Ubuntu UCK de una imagen ISO
aptitude install uck
export BASEDIR=/home/apermuy/debootstraps/oneiric_64/
Descomprimir la imagen ISO. Este proceso puede durar unos minutos.
uck-remaster-unpack-iso /home/apermuy/software/ubuntu-11.10-desktop-amd64.iso "$BASEDIR" && sudo uck-remaster-unpack-rootfs "$BASEDIR" && sudo uck-remaster-unpack-initrd "$BASEDIR"
uck-remaster-chroot-rootfs /home/apermuy/debootstraps/oneiric_64/
Mounting /proc
Mounting /sys
Mounting /dev/pts
Mounting /var/run
Mounting /tmp
Mounting /home/apermuy/debootstraps/oneiric_64//remaster-root-home
Mounting /home/apermuy/debootstraps/oneiric_64//remaster-apt-cache
Copying resolv.conf...
Copying fstab/mtab...
Creating DBUS uuid...
Deactivating initctl...
Deactivating update-grub...
Remembering kernel update state...
Comprobamos si realmente estamos "dentro" de Ubuntu 11.10:
root@mabu:/# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 11.10
Release: 11.10
Codename: oneiric
En otro post comentaré como crear subinterfaces, algo esencial,a mi entender después de instalar el sistema "enjaulado"
lunes, 26 de marzo de 2012
Sobre logs y rendimiento
Al grano. Cada vez que un servidor web recibe una petición HTTP "suceden un montón de cosas" pero en lo que a "logs" se refiere, a menos que "alguien" se encargue del tema, estamos ante una carnicería de llamadas al sistema. Cuando una aplicación "necesita hablar con el sistema operativo" lo suele hacer vía "system calls", siendo estas diferentes para cada sistema operativo.Debemos ser conscientes de que un syscall es "caro": necesita "comunicarle" al ssoo que tomará el control de la CPU, el ssoo tendrá que "guardar y comunicar su estado"; en definitiva : consumo de recursos. Podéis consultar el listado de syscalls para sistemas operativos Linux en este enlace: syscall(2) - Linux man page.
¿Evitando el uso de operaciones I/O en un webserver podemos incrementar su rendimiento? Por supuesto.
Para Apache2.
Módulo: setenvif
Testeado en : Apache 2.2.21
Doc del módulo: http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html
Ejemplo de uso: Queremos evitar que cada vez que un VirtualHost sirva .css|.jgeg|.png no escriba en el fichero log.
Definimos una "variable de entorno" basura del tipo "Request URI" e incluímos las extensiones de los ficheros que no queremos incluír en el "log".
SetEnvIf Request_URI "(\.png|\.jpeg|\.css|\.js)$" basura
Indicamos en el fichero "log" que no incluya las peticiones http que coincidan con el patrón definido para la variable basura.
CustomLog /var/log/apache2/access-sitio-org-log common env=!basura
También para Apache2 me ha gustado mucho el ejemplo de este sitio web en el que redirecciona a otros sitios web peticiones típicas de exploits. Por cierto, leer algo sobre mod_rewrite es más que recomendable para entender cómo funciona el módulo setenvif. Otro enlace interesante y directo al grano.
Para Nginx
Módulo: HttpCoreModulo
Testeado en : Nginx 1.0.14
Doc del módulo: http://wiki.nginx.org/HttpCoreModule
Incluir en el fichero de configuración del virtual host:
location ~* ^.+\.(?:css|js|jpe?g|png)$ { access_log off;
}
Poco más voy a añadir sobre Nginx. Os recomiendo revisar el espacio github de Antonio Almeida ,@perusio , una eminencia en Nginx y High Perfomance.
miércoles, 21 de marzo de 2012
Consejos para asistir a la IV Noite Drupal & GNU/Linux en A Coruña
- Descansa. Duerme bien por que la jornada promete. En esta edición comenzaremos a las 11:00 de la mañana, así que imagínate....No te acuestes "a las tantas" sobre todo si tienes que desplazarte el mismo día del evento.
- Contactos. Email , Twitter o incluso el teléfono de alguno de los organizadores puede ser de gran ayuda si tienes dificultades para llegar, buscar aparcamiento...En drupal_gl(@)googlegroups.com puedes incluso preguntar si alguno de los asistentes viajará en coche.
- Más contactos. No tengas reparo en pedir "email", "twitter" o "perfil en Drupal.org". La #noitedl es un evento para promocionar Drupal, GNU/Linux y software libre, pero también para conocer a gente "nueva" y proyectos más que interesantes en los que poder participar o aportar. Visitar los sitios web de los organizadores también puede ayudarte: Ociorum, GALPon, Inestable e Comunidade O Zulo .
- "Be social". ¿Tienes identi.ca?¿Twitter? ¿Facebook?¿Web?¿Flickr?Promociona el evento en las redes sociales! El hashtag "oficial" será #noitedl .
- ¿Portátil?. Sí, es recomendable traer portátil, sobre todo si estás interesado en aplicar los conocimientos, módulos y "hacks" que se comenten/aporten durante toda la jornada. Mi consejo particular es que NO te pares demasiado en la instalación. Céntrate en lo que es Drupal(siempre desde mi punto de vista) los conceptos básicos : core, módulos y theming.
- ¡No uso GNU/Linux! . Nadie se ha muerto por no usar GNU/Linux. Estarás rodeado de fauna GNU/Linuxera, así que si decides dejar el lado oscuro, es un buen momento. En caso contrario, saber qué es un "stack" puede facilitar tu aterrizaje en la #noitedl.
- Colabora. Si tienes tiempo colabora con la organización. ¿Cómo? En ocasiones ayudar a montar una mesa o configurar un punto de acceso wireless es más importante que "un nuevo módulo que lo flipas". Ayúda a la organización!
- Únete.Hemos creado un grupo de "usuarios galegos" de Drupal en http://groups.google.com/group/drupal_gl . ¿Tienes dudas?¿Alguna consulta? ¿Recomendaciones? Únete, te estamos esperando.
Nos vemos este sábado en A Coruña!
miércoles, 8 de febrero de 2012
#lav012 primeras impresiones
#lav012 es un evento organizado por la "Asociación Sen un peso"(sin un duro), creada en 2009 con el objetivo principal de organizar el Laboratorio Audiovisual de Vedra.
¿Qué pinta @apermuy en este fregado?
@quenerapu me planteó la posibilidad de colaborar vía @ozulo con la gente de @senunpeso, y claro, como me ofreció todo tipo de sustancias psicotrópicas, pues...acepté.
¿Qué necesitaban, tecnologícamente hablando, de tí y de @ozulo?
El principal problema es que no tenía ni sabían como montar un red wireless usando las famosas redes educativas de edu.xunta.es. Nosotros(@ozulo) tenemos experiencia acumulada tras ocho(8) ediciones del CiberEncontro Kernel, así que nos lanzamos.
¿Mucho software libre en #lav012?
La red que montamos corre sobre Zentyal, así que por parte de @ozulo, como suele ser habitual, siempre libres. @quenerapu en su "master class" también usaba GNU/Linux, pero por lo demás no he visto mucho swlibre.
Y entonces..qué?
Para @ozulo es muy importante la asistencia a #lav012, pues la filosofía del evento y de la asociación Senunpeso.org es muy similar a "nuestra" forma de pensar. En lo personal, qué os voy a comentar. Conocer a Mon, a Xurxo y a @tuitfer a sido un verdadero placer, y bueno, coincidir de nuevo con @quenerapu , ni te cuento. Lo mejor: que aún queda otro fin de semana!
Salud!
Curso #cdiets Vimianzo, primeras impresiones.
Ayer Martes impartí la primera sesión de un curso presencial de 12 horas en Vimianzo. Drupal, como casi siempre desde los últimos dos años, es el "culpable" de que yo sea el docente de este curso.
Llegar a Vimianzo desde Santiago de Compostela es una pequeña odisea, sobre todo si te dejas aconsejar por un GPS. En varias ocasiones durante el viaje de ida pensaba que no llegaría a tiempo a la primera jordana.
Vaya si llegué. La primera sorpresa fue el aula. Un aula limpia y ordenada, con unos 20 pcs para los alumnos y alumnas y un pc para el docente con conexión a Internet y un cañon de vídeo. Me sorprendió gratamente la proporción masculino/femenina: 1 a 17 para las "chicas". La verdad es que no suele ser habitual encontrarse con estas proporciones, sobre todo en el mundo de la tecnología. Espero dentro de un tiempo no volver a hacer este tipo de comentarios.
Mis alumnas/os llegaban a la jornada Drupal con carencias palpables para citar un navegador que no fuese Internet Explorer. Después de una charla de "evangelización" , descripción del entorno y una pequeña dosis de confianza, todos, incluídos el que suscribe,nos fuimos soltando. Tanto que al final de la clase ya podían distinguir funcionalidades del "core" y otras aportadas por "módulos contribuídos". Nunca tuve dudas sobre la enseñanza pública en el estado español, si bien es cierto que en ocasiones he criticado el sistema educativo, y puede que incluso que también lo haya echo duramente contra los docentes. No es el caso. En la primera sesión(y esperemos que sea así en las tres restantes) han demostrado una capacidad de asimilación y de aprendizaje que ya les gustaría a muchos "engineering" y "project manager" con los que coincido en el algún que otro proyecto. (Creo) que han vencido el miedo a enfrentarse a una tecnología nueva. Estoy contento. Y lo estoy por que no es mérito mio, yo sólo recito lo que he aprendido estos 12 años, es suyo.
Salud!
martes, 31 de enero de 2012
Pesadillas...
El pasado fin de semana "compramos" un libro en formato Adobe Digital Editions, por supuesto con su flamante DRM. El caso que sólo puedes imprimir 20 páginas. ¿Sólo 20? Si señoras y señores, sólo 20, así que si necesitas imprimir 300, como es el caso(el libro tiene 1091 páginas) pues te compras la versión "física" y te buscas la vida. Pero, si el libro es mio?. Lo sé, pero el DRM también lo sabe...Buscando información sobre cómo eliminar la restricción encontré este post "Desproteger documentos de Adobe Digital Editions con Calibre" de Álvaro Matiz , que con un par de scripts escritos en Python soluciona la papeleta al 100%. ¿Python en Windows? Sí, en Windows. Echo de menos ejecutar una aplicación .py con un simple ./ , pero con el maligno es imposible. A descargar Python 2.7 para Windows. Como aquí no tenemos apt ni yum ni zipper pues tocar navegar y buscar. Instalo Python, ejecuto el script y "fail", dependencia de la librería pycrypto, otra vez la misma historia: busca, instala, prueba...Después de 30 minutos terminé la operación con éxito. Una operación en GNU/Linux podría llevarme a lo sumo 5 minutos....Por cierto, si no conocéis Calibre, ya estáis tardando...
El segundo ejemplo es más de lo mismo. Actualmente estoy trabajando, en mi tiempo libre en un proyecto con Drupal 6 y webservices. Al instalar el módulo simpletest es necesario patchear el core de Drupal, y claro, con Microsoft Windows, es una pesadilla. En la documentación de Drupal, entre otros, recomiendan Eclipse para solucionar la "papeleta", pero ¿cómo? ¿Eclipse? Yo no uso Eclipse, y ni por asomo lo pienso instalar para aplicar un patch. El caso es que navegando encontré "UnxUtils" , port de las "GNU utils", nativas para Win32, que sólo dependen la librería msvcrt.dll: Microsoft C-Runtime y no una emulación vía Cygwin, como indican en la web del proyecto.
Un consejo: piensa un poco antes de encender tu ordenador y arrancar un sistema operativo Microsoft Windows.
Salud!
P.D: Utilizo Microsoft Windows por imposición laboral. ;)
martes, 3 de enero de 2012
CodePlex
La verdad es que necesito un reformateo de cerebro y conceptos.Trabajar con swlibre los últimos 6 años me ha ayudado a ser más productivo y, en definitiva, a trabajar mejor. Hace unos años recibí un consejo de un buen amigo, cuando comentamos que ya no dedicaría el 100% de mi jornada laboral a administrar sistemas. Con acierto apuntó : "¿Tienes buen horario?¿Estás cómodo con tus compañeros de trabajo?¿Aprendes con tu trabajo?" Si la respuesta es sí, piensa que tienes el resto del día para dedicarte a "tus rayadas". Así ha sido, y me alegro. No intento justificarme, ni mucho menos, pero sin esa conversación en 2008 y sin el cambio drástico de mentalidad no hubiese conocido: Drupal, Moodle, Nginx y un sin fin de tecnologías interesantes, y lo mejor, la cantidad de gente maja con la que he coincidido en multitud de eventos...
El caso es, y haciendo referencia al título de este post, he estado de paseo por "CodePlex", el repositorio de software "Open Source" de Microsoft(un día de estos escribiré un post detallando este atropello) y me he encontrado con algún proyecto interesante:
- PCap.net: A .NET wrapper for WinPcap written in C++/CLI and C#.
- CosmOS: C# Open Source Managed Operating Systemis a complete operating system built from the ground up in C#.Cosmos currently only runs on x86 and x64 processors, but we are investigating many other platforms, including ARM processors, Apple's iPhone, and the Nintendo Wii.
- Indihiang Web Log Analyzer: Analizador de logs para Apache e IIS.
Salud!
jueves, 29 de diciembre de 2011
Nginx y CDNs
Desde que tuve el placer de conocer a un crack( @perusio) en la matería me han quedado claro un par de conceptos relacionados con NGINX :
- En entornos LAMP(por favor, no entremos en que sí Apache o Cherokee, o Linux vs BSD, este tema aburre), el cuello de botella, a menudo está en el propio PHP,aunque con una configuración adecuada de PHP5-FPM se puede minimizar el "desastre".
- NGINX "tira" con casi todo. Y con lo que no tira es por que aún nadie lo ha documentado. Queréis un ejemplo, visitad el espacio en github.com del Señor Perusio.
- Sysadmins: si pensáis que Drupal es un simple CMS, y que las Drupaldas y Camps(no, no me refiero al de los trajes), son simples reuniones de maquetadores web, estáis completamente equivocados. [ Toma 1 ] [ Toma 2 ] .
Estoy jugando con CDNs. Si no sabéis qué es una CDN tenéis más información aquí y aquí. El clásico de los clásicos en la materia desde hace un tiempo es Amazon CloudFront, así que también he caído. Pero como suelo hacer, antes de meterme de lleno con algo, procuro documentarme. Conclusiones.
Listado de CDNs, sin orden ni prioridad, pero entiendo, tras las pesquisas realizadas que son las mejores tanto en calidad como en precio. También estoy seguro que se han escapado alguna, así que ya sabéis, enviad un comentario.
En Drupal sólo he buscado módulos relacionados con CDN para Amazon. He visto bastante cosas, aunque el que más me interesa, Amazon S3, está aún en versión alpha; y le he pillado un bug(no sé si es un bug en realidad) interesante. Sí instalas el módulo e introduces unas claves erróneas para validarte contra el REST de Amazon: adiós! Ni desinstalando el módulo he podido reconfigurar las opciones. Supongo tendré que pelearme con el módulo, cuestión de tiempo.
He leído un artículo interesante en Etnassoft sobre "Cargar JQuery desde un CDN". Muchas veces, al trabajar con un CMS pasamos por alto concepto básicos como los del post anterior.
Me ha llamado la atención un plugin para Firefox: S3Fox, que permite loggearte en el S3 de Amazon, revisar logs, transferencias....interesante.
De momento esto es todo, sigo vivo, que no es poco!
Salud!