domingo, 31 de enero de 2010

Nueva etapa




Mañana día 1 de Febrero comienza una nueva etapa profesional en mi vida. Espero no deje ser más que una continuación de la etapa anterior. Estos 2 meses de inactividad entrecomillada me han servido para descansar y organizar mi mente, pensar en todo lo que se puede mejorar y encarar con más ganas que nunca esta nueva senda. !Qué así sea!

martes, 26 de enero de 2010

Instalando lighttpd en Ubuntu/Debian GNU/Linux desde los fuentes




Como he comentado en alguna ocasión, me gusta Apache2. Durante muchos años Apache Software Foundation ha realizado un gran trabajo, añadiendo funcionalidades y módulos, corrigiendo bugs y mejorando en cada versión de Apache2(y Apache 1.x, por supuesto). También he comentado en otras el gran trabajo de Alvaro López, y los excelentes resultados de rendimiento, superando ampliamente los obtenidos con Apache2.Actualmente busco un paquete de software de servidor web ligero y rápido, con soporte PHP5(vía fast-cgi sirve), que corra sin problemas en una máquina con 128MB de RAM(vps). Desde hace un par de semanas he testeado lighttpd y los resultados son más que satisfactorios.

A continuación, y a modo de recordatorio personal,comentaré como instalar lighttpd(version 1.4.25 de Enero de 2010) en una máquina corriendo Ubuntu 9.10, con las siguientes características.

Kernel: Linux polinico 2.6.31-14-generic-pae
Procesador: AMD Athlon(tm) 64 X2 Dual Core Processor 4800+
RAM: 8262708k total
gcc: gcc-4.4 4.4.1-4ubuntu9
make: 3.81-6

Actualizamos las fuentes de los repositorios e instalamos los paquetes necesarios.

[root@polinico ~#]apt-get update && apt-get -y install gcc make build-essential libpcre3-dev libbz2-dev zlib1g-dev

Una vez instalados, necesitamos descargar lighttpd.

[root@polinico tmp#] wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz && md5sum lighttpd-1.4.25.tar.gz

Muchas veces obviamos el paso de la comprobación de la suma md5 del fichero, nunca está de más...

[root@polinico tmp#]wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz && md5sum lighttpd-1.4.25.tar.gz
--2010-01-26 23:20:36-- http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.25.tar.gz
Resolviendo download.lighttpd.net... 64.34.173.165
Conectando a download.lighttpd.net|64.34.173.165|:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 780629 (762K) [application/x-tar-gz]
Guardando: «lighttpd-1.4.25.tar.gz»

100%[======================================>] 780.629 205K/s en 4,5s

2010-01-26 23:20:41 (168 KB/s) - `lighttpd-1.4.25.tar.gz' guardado [780629/780629]

87e936ec272ddaba8a2fdfecd8c6b704 lighttpd-1.4.25.tar.gz

Desempaquetamos el fichero...

[root@polinico tmp#]tar zxvf lighttpd-1.4.25.tar.gz && cd lighttpd-1.4.25

Lo bueno de la compilación desde el código fuente, a parte de la optimización del binario resultante, es la posibilidad de habilitar/deshabilitar el soporte a protocolos/tecnologías/lenguajes...etc. Por defecto,si no indicamos nada al ejecutar configure, tendremos un binario de lighttpd con los siguientes plugins habilitados:

  • mod_access

  • mod_access_log

  • mod_alias

  • mod_auth

  • mod_cgi

  • mod_compress

  • mod_dirlisting

  • mod_evhost

  • mod_extforward

  • mod_flv_streaming

  • mod_fastcgi

  • mod_indexfile

  • mod_proxy

  • mod_redirect

  • mod_rrdtool

  • mod_scgi

  • mod_secdownload

  • mod_setenv

  • mod_simplehost

  • mod_ssi

  • mod_putasgae

  • mod_staticfile

  • mod_status

  • mod_trigger_b4_dk

  • mod_userdir

  • mod_usertrack

  • mod_webdav


Y como características destacadas

  • auth-crypt

  • compress-bzip2

  • compress-deflate

  • regex-conditionals



Si queremos optimizar y personalizar al máximo la compilación:

[root@polinico tmp#] ./configure --help|more

En caso de usar las opciones por defecto:

[root@polinico tmp#] ./configure && make && make install


Ya hemos instalado lighttpd!!! No era para tanto, verdad? Me he encontrado con el que script de arranque/parada de /etc/init.d puede dar problemas al indicar correctamente la localización del binario.Recordemos que por defecto es /usr/local/sbin. No me he parado a localizar el .pid de lighttpd, pero con "ps aux|grep lighttpd|grep etc|awk '{ print $2 }'"(chapuza) solucionamos la papeleta.Podéis descargar el script aquí.

Códigos de estado HTTP

Estoy preparando un post sobre lighttpd, y mientras lo termino, he leído en la wikipedia, un breve resumen sobre los códigos de estado http.

[Códigos de estado protocolo http]
  • 1xx Mensajes
- 100 111 Conexión rechazada
  • 2xx Operación exitosa
Descripción
200 OK
201-203 Información no oficial
204 Sin Contenido
205 Contenido para recargar
206 Contenido parcial
  • 3xx Redirección hacia otro URL
Descripción
300 Múltiples posibilidades
301 Mudado permanentemente
302 Encontrado
303 Vea otros
304 No modificado
305 Utilice un proxy
307 Redirección temporal
  • 4xx Error por parte del cliente
Descripción
400 Solicitud incorrecta
401 No autorizado
402 Pago requerido
403 Prohibido
404 No encontrado
405 Método no permitido
406 No aceptable
407 Proxy requerido
408 Tiempo de espera agotado
409 Conflicto
410 Ya no disponible
411 Requiere longitud
412 Falló precondición
413 Entidad de solicitud demasiado larga
414 URL de solicitud demasiado largo
415 Tipo de medio no soportado
416 Rango solicitado no disponible
417 Falló expectativa
  • 5xx Error por parte del servidor
Descripción
500 Error interno
501 No implementado
502 Pasarela incorrecta
503 Servicio no disponible
504 Tiempo de espera de la pasarela agotado
505 Versión de HTTP no soportada

[ Ver articulo original ]

martes, 12 de enero de 2010

Pánico en la habitación reiser.

Un buen título para una película de terror sería el de este post. Tan pronto como hablo de leer particiones reiserfs desde Windows, no puedo acceder a una de 932GB dónde almaceno contenido multimedia.
El primer síntoma del "problema" es que no se podía acceder desde Gnome. "Ummm...que raro, si en este disco, que por cierto tiene cuatro(4) meses de vida útil en mi máquina, nunca me había dado problemas". El segundo síntoma lo he encontrado en /var/log/syslog y /var/log/messages, dónde se podía apreciar claramente cómo algo no marchaba bien en la unidad /dev/sdb1. Me temía lo peor. Dudaba en este post si reiserfs podía expandir el disco en caliente; ahora puedo afirmar que expandir en caliente sí; lo que no es posible es disminuir el espacio. Al grano. Este post me ha ayudado a recuperar los datos reconstruyendo el árbol. La verdad es que no me paran de llegar buenas impresiones y experiencias sobre EXT4; y teniendo en cuenta que Namesys parece que ya no sigue con el desarrollo de reiserfs, a lo mejor es buen momento para el cambio.
La operación que "copio-pego" ha llevado un buen rato, alrededor de cuatro(4) horas, así que paciencia. Debéis comprobar si tenéis instalado reiserfsprogs, que es el paquete de utilidades para "jugar" con particiones reiser. En Debian GNU/Linux, Ubuntu y derivados es muy sencillo.

apermuy@polinico:~$ dpkg -l|grep reiser
ii reiserfsprogs 1:3.6.21-1 User-level tools for ReiserFS filesystems

Ahora toca comprobar la consistencia del sistema de ficheros. Fácil.

root@polinico apermuy#reiserfsck --check /dev/sdb1

Si tenéis café a mano, o una buena película...ahora es el momento.Ups, me olvidaba comentar que es necesario desmontar la partición.

root@polinico apermuy#reiserfsck --rebuild-tree /dev/sdb1
reiserfsck 3.6.21 (2009 www.namesys.com)

*************************************************************
** Do not run the program with --rebuild-tree unless **
** something is broken and MAKE A BACKUP before using it. **
** If you have bad sectors on a drive it is usually a bad **
** idea to continue using it. Then you probably should get **
** a working hard drive, copy the file system from the bad **
** drive to the good one -- dd_rescue is a good tool for **
** that -- and only then run this program. **
** If you are using the latest reiserfsprogs and it fails **
** please email bug reports to reiserfs-list@namesys.com, **
** providing as much information as possible -- your **
** hardware, kernel, patches, settings, all reiserfsck **
** messages (including version), the reiserfsck logfile, **
** check the syslog file for any related information. **
** If you would like advice on using this program, support **
** is available for $25 at www.namesys.com/support.html. **
*************************************************************

Will rebuild the filesystem (/dev/sdb1) tree
Will put log info to 'stdout'

Do you want to run this program?[N/Yes] (note need to type Yes if you do):Yes
Replaying journal: Done.
Reiserfs journal '/dev/sdb1' in blocks [18..8211]: 0 transactions replayed
###########
reiserfsck --rebuild-tree started at Mon Jan 11 11:13:29 2010
###########

Pass 0:
####### Pass 0 #######
Loading on-disk bitmap .. ok, 229524466 blocks marked used
Skipping 15663 blocks (super block, journal, bitmaps) 229508803 blocks will be read
0%..block 23371164: The number of items (256) is incorrect, should be (1) - corrected
block 23371164: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 23371164, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 23467445: The number of items (256) is incorrect, should be (1) - corrected
block 23467445: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 23467445, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 24152599: The number of items (256) is incorrect, should be (1) - corrected
block 24152599: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 24152599, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
.block 35113524: The number of items (256) is incorrect, should be (1) - corrected
block 35113524: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 35113524, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 35250046: The number of items (256) is incorrect, should be (1) - corrected
block 35250046: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 35250046, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 37513382: The number of items (256) is incorrect, should be (1) - corrected
block 37513382: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 37513382, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
.block 68136197: The number of items (256) is incorrect, should be (1) - corrected
block 68136197: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 68136197, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
block 68192301: The number of items (256) is incorrect, should be (1) - corrected
block 68192301: The free space (0) is incorrect, should be (4048) - corrected
pass0: vpf-10110: block 68192301, item (0): Unknown item type found [0 0 0x1000000 ??? (15)] - deleted
left 0, 24118 /secc
168886 directory entries were hashed with "r5" hash.
"r5" hash is selected
Flushing..finished
Read blocks (but not data blocks) 229508803
Leaves among those 248377
- leaves all contents of which could not be saved and deleted 8
Objectids found 168888

Pass 1 (will try to insert 248369 leaves):
####### Pass 1 #######
Looking for allocable blocks .. finished
0%....20%....40%....60%....80%....100% left 0, 84 /sec
Flushing..finished
248369 leaves read
248234 inserted
- pointers in indirect items pointing to metadata 1 (zeroed)
135 not inserted
non-unique pointers in indirect items (zeroed) 2382
####### Pass 2 #######

Pass 2:
0%....20%....40%....60%....80%...vpf-10260: The file we are inserting the new item (5 8814 0x15eb8001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1a9d4001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1adc8001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1bd98001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1c974001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1d15c001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1d550001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
.vpf-10260: The file we are inserting the new item (5 8814 0x1d944001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
vpf-10260: The file we are inserting the new item (5 8814 0x1dd38001 IND (1), len 4048, location 48 entry count 0, fsck need 0, format new) into has no StatData, insertion was skipped
100% left 0, 11 /sec
Flushing..finished
Leaves inserted item by item 135
Pass 3 (semantic):
####### Pass 3 #########
/curre/ORDENAR/LIVE-CD/martes.tar.bz2vpf-10680: The file [162552 162553] has the wrong block count in the StatData (799872) - corrected to (781480)
Flushing..finished
Files found: 149084
Directories found: 17768
Symlinks found: 2035
Others: 1
Pass 3a (looking for lost dir/files):
####### Pass 3a (lost+found pass) #########
Looking for lost directories:
Flushing..finished55, 43 /sec
Pass 4 - finished done 248222, 36 /sec
Deleted unreachable items 28
Flushing..finished
Syncing..finished
###########
reiserfsck finished at Mon Jan 11 16:35:11 2010
###########


Un reboot(no sería necesario, pero yo lo he echo para evitar sorpresas) y listo!
Saludos.

viernes, 8 de enero de 2010

Leer particiones reiserfs desde Windows

Supongo que esta utilidad no será utilizada por la gran mayoría de Linuxeros, pero a mí, particularmente me ha resultado muy util. YAReG permite explorar en modo sólo-lectura particiones reiserfs desde Microsoft Windows. Lo he probado desde Window$ XP Service Pack 3 y funciona realmente bien. Tomad nota para un futuro.

Saludos.