<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Hack Urbano</title>
	<atom:link href="http://hackurbano.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hackurbano.wordpress.com</link>
	<description>Computación, Vida, Muerte</description>
	<lastBuildDate>Tue, 24 Jan 2012 14:52:12 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hackurbano.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/6e752940e46b55913d3976a6305ea163?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Hack Urbano</title>
		<link>http://hackurbano.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hackurbano.wordpress.com/osd.xml" title="Hack Urbano" />
	<atom:link rel='hub' href='http://hackurbano.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Configurar un guru server plus como router</title>
		<link>http://hackurbano.wordpress.com/2011/10/23/configurar-un-guru-server-plus-como-router/</link>
		<comments>http://hackurbano.wordpress.com/2011/10/23/configurar-un-guru-server-plus-como-router/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 21:26:14 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[debain]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ninjitsu]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[zen]]></category>
		<category><![CDATA[guruplug]]></category>
		<category><![CDATA[lenny]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=1117</guid>
		<description><![CDATA[Configuración de un guruplug server para funcionar como router inalámbrico<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=1117&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Se explica como configurar un <em>guru server plus</em> (con <em>Debian Lenny</em>) para que funcione como <em>router inalámbrico</em>. La interfaz usada para la red interna es la <em>uap0</em> (inalámbrica) y la que se usa para Internet es la <em>eth0</em>.</p>
<p>Conectamos el <em>guru plug</em> a la red cableada usando la interfaz <em>eth0</em>.</p>
<p>Accedemos a la consola del <em>plug</em> ya sea uniéndonos a la red inalámbrica que de manera predeterminada el <em>guru plus</em> levanta (cuyo nombre es <em />Plug2-uap-####</em> en dónde los 4 últimos números son los últimos números de la dirección <em>mac</em>) y usando luego <em>ssh</em> o usamos el <em>jtag</em> para accederlo a través de <em>minicom</em>.</p>
<p>Una vez adentro revisamos que la configuración de las interfaces de red (el archivo con la ruta <em>/etc/network/interfaces</em>) contenga las siguientes líneas:</p>
<pre>auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp</pre>
<p>Le indicamos al <em>kernel</em> que vamos a hacer uso del <a href="http://en.wikipedia.org/wiki/IP_forwarding">ip forwarding</a>, para ello editamos el archivo <em>/proc/sys/net/ipv4/ip_forward</em>, lo único que debe haber en dicho archivo es un <strong>1</strong></p>
<p>Configuramos que el tamaño del <em>MTU</em> sea de 1500 (este es un requisito para mi <em>ISP</em>, para que el cambio sea permanente agregar la línea <em>/sbin/ifconfig eth1 mtu 1500 up</em> al final del archivo <em>/etc/rc.local</em>):</p>
<pre>/sbin/ifconfig  eth0 mtu 1500</pre>
<p>Para cambiar el nombre de la red sustituimos en el archivo <em>/root/init_setup.sh</em> la línea que dice
<pre>SSID=Plug2-uAP-`ifconfig eth0 | awk -F ":" '/HWaddr/ {print $6$7}'`</pre>
<p> por la línea:            </p>
<pre>SSID=nombre_red</pre>
</p>
<p>Ahora vamos a habilitar la seguridad inálambrica con <em>WPA2</em>, para ello agregamos al archivo <em>/root/init_setup.sh</em> las siguientes líneas justo antes de la instrucción <em>/usr/bin/uaputl bss_start</em></p>
<pre>/usr/bin/uaputl sys_cfg_protocol 32
/usr/bin/uaputl sys_cfg_wpa_passphrase "miPass"
/usr/bin/uaputl sys_cfg_cipher 8 8</pre>
<p>Nos unimos a la red inálambrica creada por el <em>guru plug</em>.</p>
<p>Notas</p>
<ul>
<li>Tuve que actualizar el archivo <em>/etc/apt/sources.list</em> para cambiar la línea:
<pre>deb http://www.backports.org/debian lenny-backports main contrib non-free
</pre>
<p>por:</p>
<pre>deb http://backports.debian.org/debian-backports lenny-backports main contrib non-free</pre>
<p>Y ejecutar el comando:</p>
<pre>apt-get install debian-archive-keyring</pre>
</ul>
<p>También desactivé los servicios que no voy a usar:</p>
<pre>
update-rc.d -f mysql remove
update-rc.d -f lighttpd remove
update-rc.d -f exim4 remove
</pre>
<p>Listo listo.</p>
<p><a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/1117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/1117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/1117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=1117&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2011/10/23/configurar-un-guru-server-plus-como-router/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
		<item>
		<title>Script de instalación para systemRescueCd en unidad usb</title>
		<link>http://hackurbano.wordpress.com/2010/10/11/script-de-instalacion-para-systemrescuecd-en-unidad-usb/</link>
		<comments>http://hackurbano.wordpress.com/2010/10/11/script-de-instalacion-para-systemrescuecd-en-unidad-usb/#comments</comments>
		<pubDate>Mon, 11 Oct 2010 15:33:51 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[bash scripting]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[sysresccd]]></category>
		<category><![CDATA[auto sysresccd]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=1030</guid>
		<description><![CDATA[Script que divide una unidad usb en dos particiones, una fat32 para datos, otra ext3, instala el systemRescueCd en esta última e instala el grub en la unidad usb para que sea booteable. <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=1030&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>He aquí un script para instalar automáticamente un <a href="http://www.sysresccd.org/">systemRescueCd</a> en una unidad usb, está aún verde pero funciona.</p>
<p>Algunas consideraciones a tomar en cuenta: </p>
<ul>
<li>La unidad usb usada en este ejemplo tiene un tamaño de 7.35G.</li>
<li>Dentro de dicha unidad se crean dos particiones, la primera es una unidad fat32 para poder ser vista desde cualquier sistema (por ejemplo windows) , la segunda partición es de tipo ext3 (puede usarse ext4 si se desea) y es booteable, es allí dónde residirá el <strong>systemRescueCd</strong>.</li>
<li>El tamaño de las particiones que se le pasan al comando <a href="http://linux.die.net/man/8/sfdisk">sfdisk</a> están en cilindros, esto debe ajustarse manualmente para su caso particular.</li>
</ul>
<p><code><br />
#!/bin/bash<br />
#Copyright (c) 2010 Victor Castro Mattei<br />
#All rights reserved.</p>
<p>#Redistribution and use in source and binary forms, with or without<br />
#modification, are permitted provided that the following conditions<br />
#are met:<br />
#1. Redistributions of source code must retain the above copyright<br />
#   notice, this list of conditions and the following disclaimer.<br />
#2. Redistributions in binary form must reproduce the above copyright<br />
#   notice, this list of conditions and the following disclaimer in the<br />
#   documentation and/or other materials provided with the distribution.<br />
#3. Neither the name of copyright holders nor the names of its<br />
#   contributors may be used to endorse or promote products derived<br />
#   from this software without specific prior written permission.</p>
<p>#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS<br />
#``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED<br />
#TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR<br />
#PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS<br />
#BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR<br />
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF<br />
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS<br />
#INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN<br />
#CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)<br />
#ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE<br />
#POSSIBILITY OF SUCH DAMAGE.</p>
<p># Script para crear un System Rescue CD en una unidad usb<br />
# utilizando el sistema de archivos FS_TYPE</p>
<p># Variables<br />
# Número de dispotivo para la unidad usb<br />
DEVNUM_USB="/dev/sdb"</p>
<p># Primera partición<br />
DEVNUM_PART1="/dev/sdb1"<br />
# Segunda partición<br />
DEVNUM_PART2="/dev/sdb2"</p>
<p># Punto de montaje para $DEVNUM_PART2<br />
MOUNT_POINT="/media/usb"</p>
<p># Etiqueta de la primera partición<br />
LABEL1="amanita"<br />
# Etiqueta de la segunda partición<br />
LABEL2="ghost"</p>
<p># Tipo de sistema de archivos a utilizar<br />
FS_TYPE="ext3"</p>
<p># Se asegura que el dispositivo no está montado<br />
echo "Desmontando el dispositivo $DEVNUM_USB"<br />
fuser -ck $DEVNUM_USB<br />
umount -f $DEVNUM_USB<br />
</code><br />
<code><br />
# Llenar la unidad usb de ceros<br />
# MUY lento<br />
echo "Borrando el dispositivo $DEVNUM_USB"<br />
tr '00' '\377'&lt; /dev/zero | dd bs=4096 | pv -s 8G |dd bs=4096 of=$DEVNUM_USB</p>
<p># Crear una nueva tabla de particiones<br />
# con dos particiones, la primera de tamaño cercano a los 7G (6.84G)<br />
# y la segunda con un tamaño de unos 670M<br />
# MUY lento<br />
echo &quot;Creando una nueva tabla de particiones&quot;<br />
sfdisk --no-reread $DEVNUM_USB -uC &lt;&lt; EOF<br />
0,929,77<br />
929,,69,*<br />
;<br />
EOF<br />
</code><br />
<code><br />
# Crear los sistemas de archivos<br />
echo "Creando las particiones"<br />
echo "Creando el sistema vfat en $DEVNUM_PART1"<br />
mkfs.vfat -n $LABEL1 $DEVNUM_PART1</p>
<p>echo "Desmontando el dispositivo $DEVNUM_PART2"<br />
fuser -ck $DEVNUM_PART2<br />
umount -f $DEVNUM_PART2</p>
<p># Crear la partición en dónde residirá el systemRescueCd de tipo $FS_TYPE<br />
echo "Creando el sistema $FS_TYPE sin journaling en $DEVNUM_PART2"<br />
mkfs.$FS_TYPE -L $LABEL2 -O ^has_journal $DEVNUM_PART2</p>
<p># Copiar archivos del cd de systemRescueCd a la unidad usb<br />
umount /media/cdrom<br />
mount -t $FS_TYPE $DEVNUM_PART2 $MOUNT_POINT<br />
mount -o loop,exec ./systemrescuecd-x86-1.6.1.iso /media/cdrom<br />
cp -a /media/cdrom/* $MOUNT_POINT<br />
umount /media/cdrom<br />
</code><br />
<code><br />
# Crear la carpeta para el grub en $MOUNT_POINT<br />
echo "Copiando el grub"<br />
mkdir -p $MOUNT_POINT/boot/grub</p>
<p># Copiar todo el contenido del grub existente (del host OS)<br />
# a la carpeta recién creada<br />
#cp -a /boot/grub/* $MOUNT_POINT/boot/grub</p>
<p># Instalar el grub<br />
#echo "Instalando el grub"<br />
#grub-install --root-directory=$MOUNT_POINT $DEVNUM_USB </p>
<p># Crear el menu.lst dentro del directorio grub en la unidad usb<br />
#echo "Creando el menu.lst"<br />
#echo "timeout 10</p>
<p>#title SystemRescueCD 32bit<br />
#kernel (hd0,1)/isolinux/rescuecd<br />
#initrd (hd0,1)/isolinux/initram.igz</p>
<p>#title SystemRescueCD 64bit<br />
#kernel (hd0,1)/isolinux/rescue64<br />
#initrd (hd0,1)/isolinux/initram.igz" &gt; /media/usb/boot/grub/menu.lst</p>
<p>exit 0<br />
</code></p>
<p>La última parte del script que es la que se instala el gestor de arranque GRUB en la unidad usb está comentada porque no me funcionó de esa manera, lo que hice fue instalar el GRUB 1 (actualmente se usa GRUB 2) en la unidad usb desde un lenny virtualizado con qemu, para ello levanto el lenny con soporte para dispositivos usb y luego realizo las siguientes operaciones en consola:</p>
<p><code><br />
grub<br />
grub&gt; find /boot/grub/menu.lst  (verifica la ubicación correcta)<br />
grub&gt; root (hd0,1)    (especificar adónde reside la partición)<br />
grub&gt; setup (hd0,1) (instalar el GRUB en la memoria usb)<br />
grub&gt; quit<br />
</code></p>
<p>Listo listo</p>
<p><a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjoy!</p>
<p>Referencias:</p>
<ul>
<li><a href="http://sysresccd.org/Sysresccd-manual-en_How_to_install_SystemRescueCd_on_an_USB-stick">Guía de instalación usb del System Rescue Cd</a></li>
<li><a href="http://blog.realcomputerguy.com/2010/08/add-systemrescuecd-capability-to-your.html">El blog de Darkphader</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/1030/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/1030/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/1030/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/1030/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/1030/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/1030/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/1030/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/1030/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/1030/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/1030/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/1030/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/1030/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/1030/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/1030/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=1030&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2010/10/11/script-de-instalacion-para-systemrescuecd-en-unidad-usb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
		<item>
		<title>Debian squeeze netinstall usando preseed desde una unidad usb</title>
		<link>http://hackurbano.wordpress.com/2010/09/05/debian-squeeze-netinstall-usando-preseed-desde-una-unidad-usb/</link>
		<comments>http://hackurbano.wordpress.com/2010/09/05/debian-squeeze-netinstall-usando-preseed-desde-una-unidad-usb/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 21:56:43 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[debain]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[zen]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian preseed]]></category>
		<category><![CDATA[instalación desatendida]]></category>
		<category><![CDATA[preseed]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=917</guid>
		<description><![CDATA[Se expica la creación de una instalación netinstall desatendida de Debian squeeze arrancando desde un dispositivo usb.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=917&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>La computadora utilizada para esta guía es una dell studio xps portátil, la arquitectura es AMD64, se utiliza un disco con una capacidad de 300GB, una receta del partman es usada para particionar automáticamente el disco.</p>
<h2>Preparación de los archivos</h2>
<ul>
<li>
<p>Con la unidad usb <strong>desmontada</strong> se crea una partición <em>fat16</em> en el dispositivo. En mi caso utilizo <em>cfdisk</em> y el volumen de mi dispositivo usb es el <em>/dev/sdb</em>:
<pre># cfdisk /dev/sdb</pre>
<p>Algo importante a anotar es que las particiones de tipo <em>fat16</em> no pueden tener un tamaño mayor a los 2GB, dado esto se creó la partición con un tamaño <strong>seguro</strong> de 1024MB (1GB), además debemos marcar la partición como <em>booteable</em>, es decir agregamos el <em>flag boot</em> a la partición, el volumen de unidad resultante es el <em>/dev/sdb1</em></p>
</li>
<li>
<p>Si no está instalado el paquete <em>dosfstools</em> lo instalamos:</p>
<pre># aptitude install dosfstools</pre>
<p>luego ejecutamos el comando:
<pre># mkdosfs /dev/sdb1</pre>
</p>
</li>
<li>
<p>Si no están instalados los paquetes <em>syslinux</em> y <em>mtools</em> se instalan:</p>
<pre># aptitude install syslinux mtools</pre>
<p>después instalamos el gestor de arranque (<em>syslinux</em>) en la unidad usb:
<pre># syslinux /dev/sdb1</pre>
</p>
</li>
<li>
<p>De la <a href="http://ftp.es.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/hd-media/">imagen de instalación hd-media de squeeze</a> que es la utilizada para dispositivos usb, obtenemos los archivos <strong>initrd.gz</strong> y <strong>vmlinuz</strong>:</p>
<pre>
$ wget http://ftp.es.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/hd-media/initrd.gz
$ wget http://ftp.es.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/hd-media/vmlinuz</pre>
<p>
<font color="red">Nota</font>: para ver otras imágenes de instalación o si ha cambiado el enlace anterior ver: <a href="http://www.debian.org/releases/">debian.org/releases/</a>.</p>
</li>
<li>
<p>Creamos el directorio <strong>initrd</strong> y descomprimimos dentro el archivo <strong>initrd.gz</strong> recién descargado (se supone estamos en el directorio que contiene el archivo <strong>initrd.gz</strong>):</p>
<pre>$ mkdir initrd
$ cd initrd
$ zcat ../initrd.gz | cpio -i -d</pre>
</p>
</li>
<li>
<p>Dentro del directorio <strong>initrd</strong> creado en el paso anterior, creamos el archivo <strong>preseed.cfg</strong> que es utilizado para que el instalador de Debian obtenga las respuestas a las preguntas de la instalación (es decir una instalación desatendida):</p>
<pre>$ nano preseed.cfg</pre>
</p>
</li>
<li>
<p>Ahora se debe agregar el contenido al archivo <strong>preseed.cfg</strong>, a continuación se detalla dicho contenido junto con su explicación en los comentarios:</p>
<pre># Seleccionar lenguaje y país: en mi caso Costa Rica:
d-i debian-installer/locale string es_CR

# Seleccionar el mapa del teclado: español
d-i console-keymaps-at/keymap select es

# NO quiero configurar la red porque estoy conectado
# inálambricamente y agregaré el driver manualmente después.
# Aunque en teoría existen respuestas de preseed para del
# todo no configurar la red, esto no funcionó en la práctica
# y por ello permito que se detecte la red con DHCP para
# posteriormente indicar que no se va a configurar la red

# Si hay más de una interfaz de red (eth0, eth1)
# seleccionar automáticamente una
d-i netcfg/choose_interface select auto

# Cuando falla la detección por red indicar que no se va a
# configurar la red
d-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Do not configure the network at this time

# Establecer el nombre de la computadora (hostname)
d-i netcfg/get_hostname string mad-clown 

# Seleccionar la lista de repositorios
# Costa Rica en mi caso
d-i mirror/country string manual
d-i mirror/http/hostname string ftp://mirrors.ucr.ac.cr
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

# Utilizar el reloj con utc
d-i clock-setup/utc boolean true

# Establecer la zona horaria
d-i time/zone string America/Costa_Rica

# Indicar al partman (creador de particiones) el volumen del disco a
# utilizar para crear las particiones
d-i partman-auto/disk string /dev/sda

# Indicar al partman que vamos a particionar de manera regular
# otras opciones son lvm y crypto (para particionar encriptado)
d-i partman-auto/method string regular

# Dar al partman la receta para crear las particiones
# en este caso se crearán tres particiones:
# una partición de unos 200GB para el /home
# una partición de unos 80GB para /
# una partición de intercambio (swap) de 2GB
# puede encontrar información sobre la receta
# más adelante en este documento
d-i partman-auto/expert_recipe string                         \
      boot-root ::                                            \
              215040 200000 1000000000 ext3                                  \
                      $primary{ } $bootable{ }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext3 }    \
                      mountpoint{ /home }                     \
              .                                               \
              88181 10000 88181 ext3                       \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext3 }    \
                      mountpoint{ / }                         \
              .                                               \
              2048 2048 200% linux-swap                          \
                      method{ swap } format{ }                \
              .

# Indicamos al partman que no nos pregunte más nada
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true

# Permitimos que se instale el grub como gestor de arranque
# como yo sólo uso debian se lo indico al instalador
# si tuviera otro sistema operativo (window$ por ejemplo) tendría
# que cambiar la instrucción
d-i grub-installer/only_debian boolean true

# Saltarse el mensaje de: "instalación finalizada"
d-i finish-install/reboot_in_progress note

# Poner la prioridad del
# debconf (que es la herramienta para crear configuraciones)
# que use el nivel crítico para que
# no haga preguntas innecesarias
d-i debconf/priority select critical
debconf debconf/priority select critical

# Crear la contraseña del usuario root
passwd passwd/root-password password t7_7d.4RyTr5g98.
passwd passwd/root-password-again password t7_7d.4RyTr5g98.

# Crear un usuario con su contraseña
# en este ejemplo el usuario con username "pedrito"
# y contraseña "aguacatico"
passwd passwd/user-fullname string Pedro
passwd passwd/username string pedrito
# And their password, but use caution!
passwd passwd/user-password password aguacatico
passwd passwd/user-password-again password aguacatico
</pre>
<p>Guardamos el archivo.
</p>
</li>
<li>
<p>Recomprimimos de nuevo el archivo <strong>initrd.gz</strong> para incluir el archivo <strong>preseed.cfg</strong>:</p>
<pre>$ cd initrd
$ find . | cpio -o -H newc | gzip -9 &gt; ../initrd.gz</pre>
</p>
</li>
<li>
<p>Montamos la unidad usb y le copiamos el archivo <strong>initrd.gz</strong> modificado y el <strong>vmlinuz</strong> anteriormente descargado.
</p>
</li>
<li>
<p>En la unidad usb creamos el archivo <strong>syslinux.cfg</strong> con el siguiente contenido:</p>
<pre>default vmlinuz
append initrd=initrd.gz
</pre>
</p>
</li>
<li>
<p>Obtenemos una imagen <em>iso netinstall</em> de <em>Debian squeeze</em> y la copiamos a la unidad usb: <a href="http://www.debian.org/devel/debian-installer/">squeeze netinstall</a>.</p>
</li>
<li>
<p>Iniciamos la computadora desde el dispositivo usb y listo listo podemos ir a tomar café. }:)</p>
</li>
</ul>
<h2>Sobre la receta del partman</h2>
<p><a href="http://d-i.alioth.debian.org/svn/debian-installer/installer/doc/devel/partman-auto-recipe.txt">Esta es la guía de recetas de partman</a>. A continuación una breve explicación sobre su formato: </p>
<ul>
<li>
<p>Cada partición tiene 3 números asociados, el primero es el tamaño mínimo en MB que puede tener la partición, el segundo es el nivel de prioridad y el tercero es el tamaño máximo que puede tener la partición.</p>
</li>
<li>
<p>El nivel de prioridad debe ser un número entre el tamaño mínimo de la partición y el tamaño máximo de la misma.</p>
</li>
<li>
<p>Al menos una de las particiones creadas debe tener como tamaño máximo el número 1000000000 para que tome el espacio vacío sobrante si es que hay alguno, de no utilizarse ese número el partman da errores.</p>
</li>
<li>
<p>El tercer número para la partición <em>linux-swap</em> está en porcentaje, esto indica que dicha partición puede crecer hasta un tamaño de máximo el 200% de la memoria <strong>RAM</strong> del sistema.</p>
</li>
<li>
<p>Los tamaños de las particiones son redeondeados a cilindros automáticamente de ser necesario.</p>
</li>
<li>No deben haber espacios entre el texto y el operador <strong>{</strong>.</li>
</ul>
<p>Existe un script escrito en python para probar recetas del partman: <a href="http://wiki.debian.org/DebianInstaller/PartmanPrc">http://wiki.debian.org/DebianInstaller/PartmanPrc</a>, para utilizarlo:</p>
<ul>
<li>
<p>Descargamos el script desde <a href="http://wiki.debian.org/DebianInstaller/PartmanPrc">http://wiki.debian.org/DebianInstaller/PartmanPrc</a> y lo guardamos con el nombre <strong>partmanprc.py</strong></p>
</li>
<li>
<p>Creamos un archivo con extensión <strong>.rec</strong> con contenido similar a este:</p>
<pre>boot-root ::
215040 200000 215040 ext3 $primary{ } $bootable{ } method{ format } format{ } use_filesystem{ } filesystem{ ext3 } mountpoint{ /home } .
88181 10000 88181 ext3 method{ format } format{ } use_filesystem{ } filesystem{ ext3 } mountpoint{ / } .
2048 2048 200% linux-swap method{ swap } format{ }
.</pre>
</p>
</li>
<li>
<p>Llamamos al script dándole como parámetros de entrada el archivo <strong>.rec</strong>, el tamaño del disco duro a utilizar (305245 MB)  y la cantidad de memoria <strong>RAM</strong> (2048 MB) del sistema:</p>
<pre># ./partam_ghost.py zen.rec 305245:2048</pre>
</p>
</li>
</ul>
<p>Este script generará una imagen con un gráfico circular de la distribución de las particiones y una página html con información adicional:</p>
<p><img src="http://hackurbano.files.wordpress.com/2010/09/distribucion_partmanprc.png?w=455" alt="Distribución particiones" />
</p>
<p><a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/917/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/917/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/917/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=917&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2010/09/05/debian-squeeze-netinstall-usando-preseed-desde-una-unidad-usb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2010/09/distribucion_partmanprc.png" medium="image">
			<media:title type="html">Distribución particiones</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
		<item>
		<title>Como deshabilitar la campana de la terminal desde la consola</title>
		<link>http://hackurbano.wordpress.com/2010/08/29/como-deshabilitar-la-campana-de-la-terminal-desde-la-consola/</link>
		<comments>http://hackurbano.wordpress.com/2010/08/29/como-deshabilitar-la-campana-de-la-terminal-desde-la-consola/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 01:19:11 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[inputrc]]></category>
		<category><![CDATA[sound]]></category>
		<category><![CDATA[system bell]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=895</guid>
		<description><![CDATA[Proceso para deshabilitar esa molesta campana de la terminal<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=895&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Probado en Debian</p>
<h2>Deshabilitar la campana de la terminal</h2>
<p>En un Debian ejecutándose en modo texto la campana de la terminal viene preconfigurada para que suene, algo que puede resultarle molesto a algunas personas (como a mí). Para deshabilitarla editamos el archivo <em>/etc/inputrc</em> (en mí caso uso el editor <a href="http://es.wikipedia.org/wiki/Vi">vi</a>):</p>
<pre>sudo vi /etc/inputrc</pre>
<p>Luego buscamos una sección de texto como esta:</p>
<pre># set bell-style none
# set bell-style visible</pre>
<p>Y lo modificamos para eliminar el comentario de la primera línea:</p>
<pre>set bell-style none
# set bell-style visible</pre>
<p>Luego reiniciamos el sistema y listo listo, no más pitidos molestos</p>
<h2>Deshabilitar la campana de vi</h2>
<p>Como uso vim (vi) como editor de texto, entonces voy a deshabilitarle la campana también, para ello creo si no existe el archivo .vimrc en el directorio <strong>home</strong> de mí usuario:</p>
<pre>vi .vimrc</pre>
<p>Luego le añado la opción para deshabilitar la molesta campana:</p>
<pre>set vb t_vb=</pre>
<p>De una vez aprovecho y le agrego unas cuantas configuraciones más:</p>
<pre>set tabstop=4
set ai
set magic
set nu
</pre>
</p>
<p><a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/895/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/895/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/895/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/895/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/895/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/895/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/895/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/895/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/895/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/895/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/895/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/895/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/895/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/895/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=895&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2010/08/29/como-deshabilitar-la-campana-de-la-terminal-desde-la-consola/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
		<item>
		<title>Sincronizar un usb pendrive en Ubuntu con GNU usbsync</title>
		<link>http://hackurbano.wordpress.com/2009/09/13/sincronizar-un-usb-pendrive-en-ubuntu-con-gnu-usbsync/</link>
		<comments>http://hackurbano.wordpress.com/2009/09/13/sincronizar-un-usb-pendrive-en-ubuntu-con-gnu-usbsync/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 04:42:18 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[sincronización]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[usbsync]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=840</guid>
		<description><![CDATA[Se explica como usar el comando GNU usbsync en linux para sincronizar directorios entre el disco duro y una unidad usb<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=840&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Cuando se utilizan difentes computadores para trabajar y se administra la información de manera manual el clásico copiar y pegar a veces se vuelve tedioso, además puede ocurrir que se nos escape algún archivo o cambio que hicimos.</p>
<p>Una alternativa para resolver este problema es usar el <a href="http://www.getdropbox.com/">Dropbox</a> que es un servicio en línea, sin embargo en mi caso para el manejo de información sensitiva prefiero que mi información me pertenezca a mí.</p>
<p>Lo que vamos a hacer es utilizar el <a href="http://klingspor-thueringen.de/usbsync/">GNU usbsync</a> que es una herramienta por consola para sincronizar directorios, para ello:</p>
<ol>
<li>Descargamos el <a href="http://klingspor-thueringen.de/usbsync/">GNU usbsync de aquí</a>, en el caso de Ubuntu descargamos el paquete: <em>usbsync_0.2-1_i386.deb</em></li>
<li>Instalamos el programa, en consola:
<pre>sudo dpkg -i usbsync_0.2-1_i386.deb</pre>
</li>
<li>Ahora vamos a nuestra unidad usb externa (pendrive) y en la raíz creamos el archivo <strong>.usbsync</strong> (el nombre de archivo con punto al inicio)</li>
<li>Abrimos el archivo creado en el paso anterior con un editor de texto.</li>
<li>Suponiendo que estoy autenticado en Ubuntu como <strong>nombre_usuario</strong> y que mi host (computadora) se llama <strong>nombre_host</strong> y que existe la carpeta <strong>/home/nombre_usuario/mi_directorio</strong> y además quiero que se sincronize con la carpeta llamada <strong>mi_directorio_usb</strong> que se encuentra en la raíz del pendrive, agrego la siguiente línea al archivo .usbsync:
<pre>
#Esto es un comentario:
mi_directorio_usb
nombre_usuario@nombre_host:~/mi_directorio
</pre>
</li>
<li>Desde la consola accedemos a la unidad usb:
<pre>cd /media/nombre_unidad_usb</pre>
</li>
<li>Y ejecutamos el usbsync diciéndole que deseamos sincronizar todo lo que esté en la unidad usb (esto con el uso del <strong>.</strong> en el comando):
<pre>usbsync .</pre>
<p>Deberíamos ver mensajes indicando que las transferencias se están llevando a cabo.</li>
</ol>
<p>Listo listo</p>
<p><a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/840/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/840/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/840/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=840&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2009/09/13/sincronizar-un-usb-pendrive-en-ubuntu-con-gnu-usbsync/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
		<item>
		<title>Habilitar los logs de  Tomcat6 en Ubuntu</title>
		<link>http://hackurbano.wordpress.com/2009/09/05/habilitar-los-logs-de-tomcat6-en-ubuntu/</link>
		<comments>http://hackurbano.wordpress.com/2009/09/05/habilitar-los-logs-de-tomcat6-en-ubuntu/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 23:26:46 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=828</guid>
		<description><![CDATA[Se explica como en ubuntu habilitar las bitácoras (logs) para el servidor Tomcat 6<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=828&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Por omisión el Tomcat 6 no crea archivos de bitácoras (logs), en este documento se explica como habilitar esos logs.</p>
<ol>
<li>Vamos a /usr/share/tomcat6/lib y creamos el archivo <strong>log4j.properties</strong> y le añadimos lo siguiente:
<pre>
log4j.rootLogger=debug, R
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/tomcat.log
log4j.appender.R.MaxFileSize=10MB
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.logger.org.apache.catalina=DEBUG, R
</pre>
</li>
<li>Descargue el archivo log4j-[version] desde <a href="http://logging.apache.org/log4j/">aquí</a>.</li>
<li>Descomprima el archivo descargado.</li>
<li>De la carpeta creada en el paso 3, copie el archivo log4-[version].jar a /usr/share/tomcat6/lib</li>
<li>Ir a la página de <a href="http://tomcat.apache.org/download-60.cgi">descargas del Tomcat</a></li>
<li>Adónde dice <strong>Quick Navigation</strong> le damos click a <strong>Browse</strong> y en la página que se abre vamos a la carpeta <strong>bin &gt; extras</strong> y descargamos los archivos: <strong>catalina-ws.jar, tomcat-juli-adapters.jar y tomcat-juli.jar </strong>.</li>
<li>Creamos la carpeta /usr/share/tomcat6/lib/output/extras</li>
<li>Copiamos los archivos  <strong>catalina-ws.jar, tomcat-juli-adapters.jar y tomcat-juli.jar</strong> a la carpeta creada en el paso anterior.</li>
<li>Vamos a la carpeta /usr/share/tomcat6/bin y borrarmos el archivo <strong>tomcat-juli.jar</strong></li>
<li>Creamos un enlace simbólico (acceso directo) al archivo <strong>tomcat-juli.jar</strong> que habíamos descargado, en consola:
<pre>sudo ln -s /usr/share/tomcat6/lib/output/extras/tomcat-juli.jar /usr/share/tomcat6/bin/tomcat-juli.jar</pre>
</li>
</ol>
<p>Reiniciamos tomcat y listo listo ya se puede hacer:</p>
<pre>sudo tail -f /var/log/tomcat6/catalina.[fecha].log</pre>
</p>
<p><a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjo</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/828/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/828/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/828/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/828/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/828/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/828/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/828/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/828/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/828/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/828/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/828/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/828/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/828/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/828/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=828&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2009/09/05/habilitar-los-logs-de-tomcat6-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
		<item>
		<title>Controladores creados con Spring, usando Anotaciones y que son depurables (debugeables) en Netbeans</title>
		<link>http://hackurbano.wordpress.com/2009/08/30/controladores-creados-con-spring-usando-anotaciones-y-que-son-depurables-debugeables-en-netbeans/</link>
		<comments>http://hackurbano.wordpress.com/2009/08/30/controladores-creados-con-spring-usando-anotaciones-y-que-son-depurables-debugeables-en-netbeans/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 05:09:50 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[portlet]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache tomcat]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mvc]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[spring framework]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=748</guid>
		<description><![CDATA[Se explica cómo escribir Controladores con Spring de tal manera que usen anotaciones y se puedan depurar desde el entorno de desarrollo Netbeans.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=748&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Probado en Ubuntu.</p>
<p>A partir de la versión <a href="http://www.springsource.org/download">2.5 del framework spring</a>, es posible utilizar <a href="http://es.wikipedia.org/wiki/Anotaci%C3%B3n_Java">anotaciones java</a> para configurar las aplicaciones y de esta manera reducir la cantidad de <strong>XML</strong> utilizado (es decir, lo que antes había que escribir como configuración xml pasa a ser configuración expresada a través de anotaciones escritas directamente en las clases Java, <font color="green">cool</font> <font color="orange">trick</font> <font color="red">ah?</font>).</p>
<p>Vamos a crear una aplicación sencilla (<font color="blue">Un Portlet</font>) con Spring (usando modelo-vista-controlador de Spring), que conste de una vista y un controlador, partiendo del supuesto que no hemos instalado ninguno de los componentes necesarios para lograrlo: el IDE netbeans, los plugins de netbeans para el desarrollo web, las librerías spring y el servidor de aplicaciones apache-tomcat.</p>
<p><strong>Sí</strong> se asume que tenemos el <a href="http://java.sun.com/javase/downloads/index.jsp">jdk de java</a> instalado (versión 6 al momento de escribir este documento).</p>
<ol>
<li>
<p>Primero descargamos el netbeans (versión 6.7.1 al momento de escribir este documento), accedemos al <a href="http://www.netbeans.org/downloads/">sitio de descargas de Netbeans</a> y escogemos la tercera opción que incluye soporte para aplicaciones web en Java y que incluye servidores de aplicaciones.</p>
</li>
<li>
<p>Abrimos una consola y navegamos hasta la carpeta dónde se descargó el archivo, por ejemplo si se descargó en <em>/home/usuario/descargas</em>:
<pre>cd /home/usuario/descargas</pre>
</p>
</li>
<li>
<p>Ahora vamos a darle permisos de ejecución al archivo, para ello digitamos en consola:
<pre>chmod a+rwx netbeans-[número versión]-ml-java-linux.sh</pre>
<p>y ejecutamos el instalador:</p>
<pre>./netbeans-[número versión]-ml-java-linux.sh</pre>
<p>esto iniciará un instalador gráfico:<br />
<a href="http://hackurbano.files.wordpress.com/2009/08/netbeans-ide-installer.png"><img src="http://hackurbano.files.wordpress.com/2009/08/netbeans-ide-installer.png?w=300&#038;h=215" alt="instalador netbeans" title="NetBeans IDE Installer" width="300" height="215" class="size-medium wp-image-775" /></a></p>
</li>
<li>
<p>Damos click en el botón personalizar (<em>customize</em>) y a continuación seleccionamos sólamente las opciones que nos interesan, estas son: <strong>Base IDE, Java SE, JavaScript Debugger, Java Web and EE,  Features on Demand y el Apache Tomcat </strong>(versión 6 al momento de escribir):<br />
<a href="http://hackurbano.files.wordpress.com/2009/08/customize-installation.png"><img src="http://hackurbano.files.wordpress.com/2009/08/customize-installation.png?w=300&#038;h=224" alt="Customizar instalación de Netbeans" title="Customize Installation" width="300" height="224" class="size-medium wp-image-778" /></a><br />
 Damos click en <strong>ok</strong> y luego en <strong>next</strong>, aceptamos el contrato de licencia y escogemos el lugar dónde se instalará el netbeans y el servidor apache tomcat, por último damos click en <strong>Install</strong>.</p>
</li>
<li>
<p>Seguidamente, necesitamos agregar al Netbeans los plugins para el desarrollo de Servlets y Portlets con el uso del framework Spring, para ello descargamos el <a href="http://portalpack.netbeans.org/">netbeans portal pack de aquí</a>, actualmente de <a href="http://portalpack.netbeans.org/pp30/download302.html">aquí</a>.<br />
Elegimos la tercera opción (el paquete <strong>all</strong>).<br />
Una vez descargado, lo descomprimimos.</p>
</li>
<li>
<p>Abrimos el netbeans y vamos al menú <strong>Tools &gt; Plugins</strong>, esto abre una ventana, de ella seleccionamos la pestaña que dice <strong>Downloaded</strong> (descargados), damos click al botón <strong>Add Plugins&#8230;</strong> y navegamos hasta la carpeta que se creó en el paso anterior:<br />
<a href="http://hackurbano.files.wordpress.com/2009/08/pantallazo-plugins.png"><img src="http://hackurbano.files.wordpress.com/2009/08/pantallazo-plugins.png?w=300&#038;h=184" alt="añadir plugins" title="Pantallazo-Plugins" width="300" height="184" class="size-medium wp-image-784" /></a><br />
<br />
Seleccionamos todos los plugins (archivos con extension <strong>.nbm</strong>, damos click en Aceptar y luego en <strong>Install</strong> (si nos dice que algún plugin no está firmado, simplemente elegimos Continuar).<br />
Ya están instalados los <strong>plugins</strong> necesarios.
</p>
</li>
<li>
<p>Creamos desde Netbeans un proyecto nuevo y lo elegimos como <strong>Java Web &gt; Web Application</strong>, le ponemos un nombre y elegimos el lugar dónde se va a guardar, seleccionamos el servidor web como <strong>Apache Tomcat</strong> y marcamos las opciones <strong>Portlet Support</strong> y <strong>Spring Web MVC 2.5</strong>:<br />
<a href="http://hackurbano.files.wordpress.com/2009/08/pantallazo-new-web-application.png"><img src="http://hackurbano.files.wordpress.com/2009/08/pantallazo-new-web-application.png?w=300&#038;h=177" alt="Opciones aplicación web" title="Pantallazo-New Web Application" width="300" height="177" class="size-medium wp-image-791" /></a><br />
damos click en <strong>Finish</strong>.</p>
</li>
<li>
<p>Aunque el netbeans agregó automáticamente las librerías del <strong>Spring</strong> al proyecto recién creado, algunas de ellas dan problemas a la hora de realizar un <a href="http://en.wikipedia.org/wiki/Software_deployment">deploy</a> al servidor, vamos a reemplazar las que den problema, primero descargamos las librerías del Spring desde: <a href="http://www.springsource.org/download">la página del spring</a>, debemos descargar la <a href="http://s3.amazonaws.com/dist.springframework.org/release/SPR/spring-framework-2.5.6.SEC01-with-dependencies.zip">versión que trae dependecias</a>. Una vez descargadas, las descomprimimos.</p>
</li>
<li>
<p>Las librerías que generan problemas son:</p>
<ul>
<li><strong>Portlet 2.0(JSR 286) Library &#8211; portlet-api-2.0.jar</strong></li>
<li><strong>Spring Framework 2.5 &#8211; spring-2.5.jar</strong></li>
<li><strong>Spring Web MVC 2.5 &#8211; spring-webmvc-2.5.jar</strong></li>
</ul>
<p>Debemos reemplazarlas por las siguientes librerías que se encuentran en la carpeta generada en el paso anterior (con las rutas relativas a la carpeta):</p>
<ul>
<li><strong>portlet-api-2.0.jar</strong> : /spring-framework-2.5.6.SEC01/lib/portlet</li>
<li><strong>spring.jar</strong> : /spring-framework-2.5.6.SEC01/dist</li>
<li><strong>spring-webmvc.jar</strong> : /spring-framework-2.5.6.SEC01/dist/modules</li>
</ul>
<p>Además debemos de agregar la librería:<br />
<strong>spring-webmvc-portlet.jar</strong> : /spring-framework-2.5.6.SEC01/dist/modules<br />
<br />
<a href="http://hackurbano.files.wordpress.com/2009/08/libs_spring.png"><img src="http://hackurbano.files.wordpress.com/2009/08/libs_spring.png?w=197&#038;h=300" alt="librerías spring netbeans" title="libs_spring" width="197" height="300" class="size-medium wp-image-803" /></a>
</li>
</p>
<li>
<p>Ahora agregamos el controlador, para ello agregamos el paquete <strong>mipaquete.web</strong> y dentro de él creamos la clase <strong>MiController</strong>:<br />
<a href="http://hackurbano.files.wordpress.com/2009/08/agregandocontroller.png"><img src="http://hackurbano.files.wordpress.com/2009/08/agregandocontroller.png?w=455" alt="agregar el controlador" title="agregandoController"   class="size-full wp-image-806" /></a></p>
<p>La clase MiController contendrá lo siguiente (copiar-pegar):</p>
<p><code><br />
package mipaquete.web;</p>
<p>import org.springframework.beans.factory.annotation.Autowired;<br />
import org.springframework.stereotype.Controller;<br />
import org.springframework.ui.ModelMap;<br />
import org.springframework.web.bind.annotation.RequestMapping;</p>
<p>@Controller<br />
@RequestMapping("VIEW")<br />
public class MiController {</p>
<p>    @Autowired<br />
    public MiController() {<br />
    }</p>
<p>    @RequestMapping // acción por omisión, renderizado (action=mostrarFormulario)<br />
    public String mostrarFormulario(ModelMap model) {<br />
        return "miIndex";<br />
    }<br />
}</code>
</p>
</li>
<li>
<p>Abrimos el archivo <strong>dispatcher-servlet.xml</strong> y sustituimos su contenido por lo siguiente (copiar-pegar):</p>
<pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"&gt;

    &lt;bean class="org.springframework.web.portlet.mvc.annotation.DefaultAnnotationHandlerMapping"&gt;
        &lt;property name="interceptors"&gt;
            &lt;!-- Este interceptor envía el parámetro del request desde un ActionRequest para ser usado como un parámetro del renderizado. --&gt;
            &lt;bean class="org.springframework.web.portlet.handler.ParameterMappingInterceptor" /&gt;
        &lt;/property&gt;
    &lt;/bean&gt;

    &lt;bean id="indexController" class="mipaquete.web.MiController"/&gt;

    &lt;bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"&gt;
        &lt;property name="mappings"&gt;
            &lt;props&gt;
                &lt;prop key="index.htm"&gt;indexController&lt;/prop&gt;
            &lt;/props&gt;
        &lt;/property&gt;
    &lt;/bean&gt;

    &lt;bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" /&gt;

&lt;/beans&gt;
</pre>
</p>
</li>
<li>
<p>Agregamos en la carpeta que contiene los <a href="http://es.wikipedia.org/wiki/JavaServer_Pages">Jsps</a> del proyecto (/WEB-INF/jsp) un jsp nuevo al que llamamos <strong>miIndex</strong>(que es el nombre de vista que se devuelve desde el controlador). Netbeans lo agregará con un <strong>Hello World</strong> de contenido.</p>
<p>Para probar damos click en el nombre del proyecto y elegimos la opción <strong>Run</strong> (ejecutar), debe verse una página html con el <strong>Hello World</strong>.</p>
</li>
</ol>
<p>Por último, si se coloca un <strong>breakpoint</strong> en el código y debbugeamos la aplicación, esta se va a detener al llegar a él, es decir, es posible debuggear.</p>
<p>Listo listo <br />
<a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/748/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/748/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/748/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=748&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2009/08/30/controladores-creados-con-spring-usando-anotaciones-y-que-son-depurables-debugeables-en-netbeans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2009/08/netbeans-ide-installer.png?w=300" medium="image">
			<media:title type="html">NetBeans IDE Installer</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2009/08/customize-installation.png?w=300" medium="image">
			<media:title type="html">Customize Installation</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2009/08/pantallazo-plugins.png?w=300" medium="image">
			<media:title type="html">Pantallazo-Plugins</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2009/08/pantallazo-new-web-application.png?w=300" medium="image">
			<media:title type="html">Pantallazo-New Web Application</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2009/08/libs_spring.png?w=197" medium="image">
			<media:title type="html">libs_spring</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2009/08/agregandocontroller.png" medium="image">
			<media:title type="html">agregandoController</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
		<item>
		<title>Respaldo Autómatico Remoto de Bases de Datos (mysql) con secure copy (scp) y Cron</title>
		<link>http://hackurbano.wordpress.com/2009/08/04/respaldo-automatico-remoto-de-bases-de-datos-mysql-con-secure-copy-scp-y-cron/</link>
		<comments>http://hackurbano.wordpress.com/2009/08/04/respaldo-automatico-remoto-de-bases-de-datos-mysql-con-secure-copy-scp-y-cron/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 17:35:01 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[bases de datos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[red]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqldump]]></category>
		<category><![CDATA[respaldo remoto]]></category>
		<category><![CDATA[scp]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=286</guid>
		<description><![CDATA[Se explica cómo hacer un respaldo remoto de una base mysql usando scp y cron<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=286&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En este documento se explica c&oacute;mo desde <strong>Linux</strong> generar un respaldo para una base de datos  <a href="http://www.mysql.com/">mysql</a> y copiarlo a una computadora remota que tambi&eacute;n corre <strong>Linux</strong>. (probado en Ubuntu)</p>
<p>Tener respaldos de una base de datos siempre es importante, y estos respaldos deberían ser almacenados en un lugar remoto, como otro servidor por ejemplo.</p>
<p>Para llevar a cabo esta tarea nos valeremos del comando  <a href="http://es.wikipedia.org/wiki/SCP">scp</a> de Linux para copiar archivos de manera segura y remota y del administrador de tareas <a href="http://es.wikipedia.org/wiki/Cron_(unix)">Cron</a> de Unix (disponible en Linux).</p>
<p>Lo primero que necesitamos es que el <strong>scp</strong> nos deje conectarnos desde el <em>cliente</em> al <em>servidor</em>&nbsp;<strong> sin</strong> solicitarnos contrase&ntilde;a ya que en caso contrario no podemos automatizar la copia de archivos en un <a href="http://es.wikipedia.org/wiki/Script">script</a>.</p>
<p>Lo que vamos a hacer es sustituir el uso de una contrase&ntilde;a por el m&eacute;todo de <a href="http://es.wikipedia.org/wiki/Criptograf%C3%ADa_asim%C3%A9trica">criptografía asimétrica</a> en el que se utilizan un par de llaves: una p&uacute;blica y una privada.</p>
<p>Para llevar a cabo lo anterior se deben seguir estos pasos:</p>
<ul>
<li>
<p>Desde la <strong>M&aacute;quina Cliente</strong> (que es d&oacute;nde se va a generar el respaldo de la base)  verificamos que el archivo <strong>/etc/ssh/sshd_config</strong> tenga las siguientes l&iacute;neas (que de manera predeterminada ya est&aacute;n):</p>
<pre>
RSAAuthentication yes
PubkeyAuthentication yes
</pre>
</li>
<li>Luego escribimos en consola el siguiente comando para generar las llaves:
<pre>
# sudo ssh-keygen -t rsa
</pre>
<p>Se mostrar&aacute; el siguiente texto preguntando ad&oacute;nde se quiere guardar el archivo que contiene las llaves, de manera predeterminada en <em>/root/.ssh/id_rsa:</em></p>
<pre>
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
</pre>
<p>Damos enter y ahora se preguntara por una clave, en este caso la dejamos en blanco por lo que damos enter dos veces, se mostrar&aacute; informaci&oacute;n referente a los lugares d&oacute;nde se almacenaron las claves p&uacute;blicas y privadas.</p>
</li>
<li>
<p>Ahora debemos transferir la clave <strong>pública</strong> recién generada al servidor remoto, para ello utilizamos el comando <strong>ssh-copy-id</strong>:</p>
<pre>ssh-copy-id -i /root/.ssh/id_rsa.pub usuario@ip_servidor</pre>
<p>Se nos pedirá la contraseña, la escribimos y damos enter, a partir de este momento ya no se nos solicitará contraseña al conectarnos a esta computadora, por lo tanto el comando <strong>scp</strong> ahora puede utilizarse libremente en un script que copie archivos.</p>
<p>Lo siguiente es un apunte, probablemente no necesite realizar lo siguiente: <strong>el servidor</strong> al que me conecto vía ssh utiliza otro puerto que no es el predeterminado <strong>22</strong> por lo tanto el procedimiento anterior debe hacerse de la siguiente manera, desde consola: </p>
<pre>sudo vim /root/.ssh/config</pre>
<p>Y añadimos:</p>
<pre>Host miServidor
Hostname ip.del.servidor.deseado
User usuario
Port puerto
</pre>
<p>Luego:</p>
<pre>sudo ssh-copy-id -i /root/.ssh/id_rsa.pub miServidor</pre>
</li>
<li>
<p>Ahora creamos un script para bash que haga un dump de la base de datos a respaldar, la comprima y la transfiera a otra máquina, para ello creamos un nuevo archivo y agregamos lo siguiente:</p>
<pre>#!/bin/bash
fecha=$(date +%Y%m%d)
mysqldump -u[usuario] -p[contraseña] [nombre_base] &gt; /home/usuario/bd_$fecha.sql
bzip2 /home/usuario/bd_$fecha.sql
scp /home/vas/bd_$fecha.sql.bz2 [miUsuario]@[ip_servidor]:/home/usuario</pre>
<p>Se deben sustituir los campos <strong>[usuario]</strong> y <strong>[contraseña]</strong> por el nombre de usuario y contraseña utilizados para conectarse al gestor de base de datos <strong>mysql</strong> y el campo <strong>[nombre_base]</strong> por el nombre de la base de datos a respaldar, así mismo <strong>[miUsuario]</strong> y <strong>[ip_servidor]</strong> por el nombre de usuario e ip del servidor utilizados anteriormente en el comando <strong>sh-copy-id</strong> e ignorando los <strong>[ ]</strong>.</p>
<p>Guardamos el archivo con el nombre <strong>backup_bases.sh</strong> en la ruta <strong>/home/usuario/Documentos</strong></p>
</li>
<li>
<p>Ahora vamos a agregar el script como una rutina del sistema con el <strong>cron</strong>, para ello digitamos en consola:</p>
<pre>sudo crontab -e</pre>
<p>Y añadimos lo siguiente para que los respaldos se hagan martes a las 10 am:</p>
<pre># m h  dom mon dow   command
  0 10 * *  2        /home/usuario/Documentos/backup_bases.sh
</pre>
</li>
</ul>
<p>Listo listo <br />
<a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/286/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=286&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2009/08/04/respaldo-automatico-remoto-de-bases-de-datos-mysql-con-secure-copy-scp-y-cron/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
		<item>
		<title>Cómo usar Subversion</title>
		<link>http://hackurbano.wordpress.com/2009/08/04/como-usar-subversion/</link>
		<comments>http://hackurbano.wordpress.com/2009/08/04/como-usar-subversion/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 15:00:30 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[control versiones]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svnserve]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=634</guid>
		<description><![CDATA[Se explica como usar el Subversion con el servidor svnserve o el servidor Apache<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=634&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Probado en Ubuntu.</p>
<p><em>Una versión, revisión o edición de un producto de software, es el estado en el que éste se encuentra en un momento dado en su desarrollo o modificación. Se llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo.</em> [fuente: <a href="http://es.wikipedia.org/wiki/Control_de_versiones">wikipedia</a>].</p>
<p><a href="www.subversion.tigris.org">Subversion</a> es un Sistema de Control de Versiones, muy útil en ambientes de desarrollo en equipos en dónde los archivos fuente son modificados por distintas personas en períodos de tiempo variables.</p>
<p>De manera simple, puede decirse que el Subversión se utiliza para proteger el código fuente, que es muy valioso para los programadores y para la empresa.</p>
<p>Subversion es de código abierto y  soporta los métodos de bloqueo por candados, y de copia de archivos (algo un poco parecido a los googleDocs).</p>
<h2>Subversion</h2>
<p>Lo primero es instalar Subversion, para ello desde una consola digitamos:</p>
<pre>sudo aptitude install subversion</pre>
<p>Ahora vamos a crear un repositorio, que es un directorio en el cuál residirán los archivos de una aplicación particular que estarán sujetos al control de versiones, para ello desde consola digitamos:</p>
<pre>svnadmin create /home/usuario/miRepositorio</pre>
<p>
(debe cambiar la ruta por una que sea válida en su computador)
</p>
<p>Lo anterior creará la carpeta si no existe, un detalle es que el Subversion es silencioso, es decir, ningún mensaje significa que tuvo éxito.</p>
<h2>RapidSVN</h2>
<p>Ya creamos la raíz del repositorio pero no se ha agregado ningún archivo, supondremos que localmente poseemos archivos que queremos subir al servidor, para ello nos valdremos de un cliente gráfico, el <a href="rapidsvn.tigris.org">RapidSVN</a>, para ello desde consola digitamos:</p>
<pre>sudo aptitude install rapidsvn</pre>
<p>Iniciamos la aplicación desde el submenú <strong>Programación &gt; RapidSVN</strong>, se mostrará la siguiente pantalla:<br />
<a href="http://hackurbano.files.wordpress.com/2009/07/rapidsvn.png"><img src="http://hackurbano.files.wordpress.com/2009/07/rapidsvn.png?w=300&#038;h=210" alt="cliente rapidsvn" title="rapidsvn" width="300" height="210" class="size-medium wp-image-659" /></a>
</p>
<h2>Creando una aplicación nueva bajo control de Subversion</h2>
<p>Ahora vamos a tomar un directorio en nuestro disco duro y  lo vamos a copiar (importar) al repositorio, esta es una manera de agregar un proyecto nuevo para ser controlado por el Subversion <font color="gray">(otra manera de hacer esto y que requiere acceso físico al servidor dónde se ejecuta Subversion, es ir al directorio que contiene los repositorios y crear <em>a mano</em> las carpetas y archivos iniciales)</font>.</p>
<p>A manera de ejemplo supongo que tengo el directorio <strong>miDir</strong> en la ruta <strong>/home/usuario/miDir</strong> y que dentro de dicho directorio existe el archivo con nombre <strong>miArchivo</strong>.</p>
<p>Para importar <strong>miDir</strong> al repositorio recién creado nos valemos del cliente RapidSVN, para ello damos click en el menú <em>Repository &gt; Import</em>, aparece la pantalla siguiente:</p>
<a href="http://hackurbano.files.wordpress.com/2009/07/pantallazo-import.png"><img src="http://hackurbano.files.wordpress.com/2009/07/pantallazo-import.png?w=300&#038;h=175" alt="Importar un nuevo proyecto al repositorio" title="repository import" width="300" height="175" class="size-medium wp-image-669" /></a>
<p>En el campo <em>Repository URL</em> y ya que los estamos probando localmente escribimos la ruta al repositorio usando el protocolo <em>file:///</em> que denota el uso de archivos locales. De esta manera la ruta sería: <strong>file:///home/usuario/miRepositorio/miProyecto</strong> donde <strong>miProyecto</strong> es cualquier nombre que se le quiera poner a la nueva aplicación, y el resto de la dirección es la ruta al repositorio que creamos al inicio.</p>
<p>En el campo <em>Path</em> se encuentra la ruta al directorio miDir mencionado.</p>
<p>Por último, en el campo <em>Enter log message</em> se especifica un mensaje para la bitácora de cambios (No es obligatorio pero debería serlo).</p>
<p>Damos click en Aceptar y saldrá un mensaje como:</p>
<pre>Execute: Import
Added: /home/usuario/miDir/miArchivo
Updating...
Ready</pre>
<p>Listo ya creamos una aplicación que está bajo control de versiones.</p>
<h2>Obteniendo archivos desde el repositorio</h2>
<p>Ahora vamos a agregar los archivos que están en el servidor (local) a una nueva carpeta, dicha carpeta se llama <strong>miResultado</strong> y una vez que los descarguemos, contendrá los archivos que se importaron anteriormente <font color="gray">(tal vez parezca un poco tonto si ya existe la carpeta <strong>miDir</strong> con estos archivos, pero esto tendría más sentido si fuera en un ambiente de red y la aplicación <strong>miRepositorio/miProyecto</strong> hubiera sido creada por alguien más)</font>.</p>
<p>Ahora usando el RapidSVN damos click en el menú <em>Repository &gt; Checkout</em>, se abrirá la siguiente pantalla:
</p>
<div id="attachment_676" class="wp-caption aligncenter" style="width: 310px"><a href="http://hackurbano.files.wordpress.com/2009/07/pantallazo-checkout.png"><img src="http://hackurbano.files.wordpress.com/2009/07/pantallazo-checkout.png?w=300&#038;h=294" alt="svn checkout " title="Checkout" width="300" height="294" class="size-medium wp-image-676" /></a><p class="wp-caption-text"> </p></div>
<p>En el campo <em>URL</em> debe ir la ruta a la aplicación (en este caso <strong>miProyecto</strong>) que reside en el repositorio.</p>
<p>En el campo <em>Destination Directory</em> puede ser cualquier ruta dónde tengamos permisos de escritura, en mi caso en <strong>/home/usuario/miResultado</strong></p>
<p>Damos click en Aceptar y se mostrará un mensaje como:</p>
<pre>Execute: Checkout
Added: /home/usuario/miResultado/miArchivo
Updated: /home/usuario/miResultado
Updating...
Ready</pre>
<p>Si no existe la carpeta miResultado, esta se creará junto con los directorios y archivos que contenga, ya podemos ver desde el RapidSVN los archivos recién descargados.</p>
<p>Para añadir archivos o directorios basta con añadirlos dentro de la carpeta <strong>miResultado</strong> y luego ir al RapidSVN y dar click derecho sobre el archivo &gt; <strong>add</strong> y luego click derecho de nuevo &gt; <strong>commit</strong>.</p>
<p>Para borrar un archivo es similar, desde el RapidSVN click derecho sobre el archivo &gt; <strong>delete</strong>, click derecho sobre el archivo &gt; <strong>commit</strong></p>
<h2>svnserve</h2>
<p>Ahora vamos a ejecutar un servidor para que los archivos no sólo sean legibles de manera local a través del protocolo <strong>file:///</strong>, sino que vamos a usar el <em>svnserve</em> que es un servidor que trae el Subversion, el <em>svnserve</em> es adecuado para equipos de trabajo pequeños y en ambientes de <strong>LAN</strong>, más tarde usaremos Apache.</p>
<p>Para ejecutar svnserve desde consola digitamos:</p>
<pre>svnserve -d</pre>
<p>El comando anterior, ejecuta el subversion como un demonio (que es la manera más sencilla de ejecutarlo), también puede ejecutarse con inetd, sobre un túnel ssh y como un servicio de Windows (para mayor información ver el manual).</p>
<h2>Configurar svnserve</h2>
<p>Ahora vamos a probar el svnserve, para ello vamos a autorizar la lectura de archivos por parte de cualquier persona (acceso anónimo), para ello vamos al archivo de configuración del svnserve, el <strong>svnserve.conf</strong> que de manera predeterminada se encuentra en la ruta: /var/www/rep/conf/svnserve.conf</p>
<p>Desde consola digitamos:</p>
<pre>sudo vim /var/www/rep/conf/svnserve.conf</pre>
<p>Habilitamos el acceso anónimo como sólo lectura, para ello descomentamos la siguiente línea:</p>
<pre>anon-access = read</pre>
<p>Ahora vamos a descargar los datos del repositorio a través del protocolo <strong>svn://</strong> </p>
<p>Igual que antes vamos a menú <em>Repository &gt; Checkout</em> pero esta vez en el campo <strong>URL</strong>, cambiamos el protocolo de file:/// a svn:// para indicar que vamos a acceder a través del svnserve, y en el campo <strong>Destination Directory</strong> digitamos la ruta <strong>/home/usuario/miResultado_svnserve</strong>, damos aceptar y listo.</p>
<p>Si ahora añadimos un archivo a la carpeta miResultado_svnserve y le damos commit desde el RapidSVN no nos va a dejar ya que no tenemos permiso, para ello modificamos de nuevo el svnserve.conf, descomentamos las siguientes líneas que indican el derecho de escritura para usuario autenticados y el archivo en que se encuentra la lista de usuarios y contraseñas para el svnserve:</p>
<pre>
auth-access = write

password-db = passwd
</pre>
<p>Ahora editamos el archivo <strong>passwd</strong> que se encuentra en <strong>/var/www/rep/conf</strong> (justo al lado del svnserve.conf) y creamos el usuario <strong>guest</strong> con contraseña <strong>guest</strong> (de ejemplo ya vienen dos: Harry y Sally):</p>
<pre></pre>
<h2>Apache</h2>
<p>El svnserve es adecuado para equipos de desarrollo pequeños y que accesan desde una LAN o un VPN, si se necesita acceso desde Internet y/o se quiere más seguridad y flexibilidad, es mejor usar Apache para acceder a los repositorios del Subversion.</p>
<p>Apache utiliza el protocolo <strong>web-dav</strong> que es una extensión del http y permite usar el puerto 80 para acceder.</p>
<p>Primero instalamos apache, desde consola digitamos:</p>
<pre>sudo aptitude install apache2</pre>
<p>Seguidamente vamos a configurarlo, es necesario tener instalado el módulo <strong>mod_dav</strong> del apache (que por lo general viene incluido en el apache), podemos verificar que lo tenemos, usamos el siguiente comando:</p>
<pre>locate mod_dav.so</pre>
<p>También necesitamos el backend del módulo anterior, el <strong>mod_dav_svn</strong>,para ello instalamos el paquete <strong>libapache2-svn</strong>:</p>
<pre>sudo aptitude install libapache2-svn</pre>
<p>Pensando en que la estructura del repositorio que se usará es una carpeta padre dónde residen carpetas hijas, dónde cada una de ellas contendrá (ó representa) el repositorio de una aplicación, creamos dicha carpeta padre, en mi caso en <strong>/var/svn</strong></p>
<pre>sudo mkdir /var/svn</pre>
<p>Ahora vamos a configurar el apache, para ello editamos el archivo de configuración <strong>httpd.conf</strong>:</p>
<pre>sudo vim /etc/apache2/httpd.conf</pre>
<p>Agregamos lo siguiente:</p>
<pre>
&lt;Location /svn&gt;
DAV svn
SVNParentPath /var/svn
&lt;/Location&gt;
</pre>
<p>Con lo anterior estamos diciéndolo al Apache que las peticiones a una dirección como <strong>http://ip_servidor/svn/miRepositorio1</strong> ó <strong>http://ip_servidor/svn/miRepositorio2</strong> son repositorios bajo el control de versiones.</p>
<p>Ahora vamos a agregar autenticación, existen varias maneras de hacerlo, vamos a usar el modo básico que consiste en un archivo con nombre de usuarios y contraseña, primero modificamos lo agregado anteriormente al <strong>httpd.conf</strong> para indicar que vamos a usar autenticación básica, indicar la dirección del archivo de usuarios y contraseñas, en este caso es la ruta <strong>/etc/svn-auth-file</strong>, y solicitar un usuario válido, de manera que quedaría así: </p>
<pre>
&lt;Location /svn&gt;
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Repositorios de Subversion"
AuthUserFile /etc/svn-auth-file
Require valid-user
&lt;/Location&gt;
</pre>
<p>Ahora vamos a crear el archivo de usuarios y contraseñas conteniendo un usuario inicial, en este caso <strong>harry</strong> para ello en consola digitamos:</p>
<pre>htpasswd -cm /etc/svn-auth-file harry</pre>
<p>A continuación se nos solicitará la contraseña de harry (dos veces por la verificación).</p>
<p>Para agregar un nuevo usuario digitamos: (ojo que es sin la opción -c usuada anteriormente)</p>
<pre>htpasswd -m /etc/svn-auth-file nuevo_usuario</pre>
<p>Ahora reiniciamos el apache y listo listo, ya podemos acceder el server usando direcciones como <strong>http://ip_servidor/svn/miRepositorio</strong>, claro siempre hay que usar el comando <strong>svnadmin create</strong> para crear repositorios dentro de la carpeta <strong>/var/svn</strong></p>
<p>Un detalle es que la carpeta debe tener permisos de escritura sino no podremos escribir archivos en el repositorio.</p>
<p><a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/634/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/634/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/634/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=634&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2009/08/04/como-usar-subversion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2009/07/rapidsvn.png?w=300" medium="image">
			<media:title type="html">rapidsvn</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2009/07/pantallazo-import.png?w=300" medium="image">
			<media:title type="html">repository import</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2009/07/pantallazo-checkout.png?w=300" medium="image">
			<media:title type="html">Checkout</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
		<item>
		<title>Redirigir peticiones de Apache a Tomcat</title>
		<link>http://hackurbano.wordpress.com/2009/07/15/redirigir-peticiones-de-apache-a-tomcat/</link>
		<comments>http://hackurbano.wordpress.com/2009/07/15/redirigir-peticiones-de-apache-a-tomcat/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 16:54:50 +0000</pubDate>
		<dc:creator>constrict0r</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[sistemas operativos]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[redirect request]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[web server]]></category>

		<guid isPermaLink="false">http://hackurbano.wordpress.com/?p=608</guid>
		<description><![CDATA[Describe como pasar peticiones de Apache hacia Tomcat<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=608&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Probado en Ubuntu</p>
<p>Cuando tenemos un servidor de aplicaciones Java como Tomcat, por omisión las urls de las peticiones hacia él deben contener el puerto 8080 o 8180  como parte de la misma, por ejemplo: <strong>http://localhost:8080/<font color="green">miAplicacion</font></strong></p>
<p>Una solución sencilla a lo anterior es tener únicamente Tomcat como servidor web (sin usar Apache) y configurarlo (en el archivo <em>server.xml</em>) para que el conector escuche en el puerto 80 en vez del 8080 o del 8081, esto no es adecuado ya que Tomcat no es tan robusto como Apache (en particular para páginas estáticas) y en mi caso, necesito el Apache para ejecutar la aplicación web <a href="http://www.phpmyadmin.net">phpmyadmin</a> para administrar bases de datos mysql.</p>
<p>Lo que se hará es configurar el Apache para que delegue peticiones a aplicaciones particulares hacia el Tomcat (y que van dirigidas a este). </p>
<p>Es necesario tener instalado los siguientes requisitos:</p>
<ul>
<li>El JDK de java (en mi caso el paquete sun-java6-jdk)</li>
<li>apache2</li>
<li>El módulo a2enmod de apache (que por lo general viene incluido con la instalación)</li>
<li>El módulo mod_jk de apache (el paquete: <strong>libapache2-mod-jk</strong>)</li>
</ul>
<p>Primero y si no existe creamos el archivo <strong>/etc/apache2/mods-available/jk.load</strong>, este debe contener la siguiente línea:
</p>
<pre>LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
</pre>
<p>Ahora creamos el archivo <strong>/etc/apache2/mods-available/jk.conf</strong> que contiene la siguiente información:</p>
<pre>
&lt;IfModule mod_jk.c&gt;
  JkWorkersFile       "/etc/apache2/workers.properties"
  JkLogFile           "/var/log/apache2/mod_jk.log"
  JkLogLevel          info
  JkLogStampFormat    "[%a %b %d %H:%M:%S %Y] "
  JkOptions           +ForwardKeySize +ForwardURICompat -ForwardDirectories
  JkRequestLogFormat  "%w %V %T"
&lt;/IfModule&gt;
</pre>
<p>Desde consola vamos a habilitar el módulo <em>mod_jk</em>, nos dará un error que dice que no se encuentra el archivo workers.properties, pronto arreglaremos eso:</p>
<pre>
sudo a2enmod jk
sudo /etc/init.d/apache2 force-reload
</pre>
</p>
<p>Ahora vamos a editar el archivo <strong>/etc/apache2/sites-available/default</strong> y añadimos dentro de las etiquetas &lt;VirtualHost *:80&gt;&nbsp;&lt;VirtualHost&gt; lo siguiente:</p>
<pre>
ServerAdmin webmaster@localhost
ServerName localhost

JkMount /* <strong><font color="green">miAplicacion</font></strong>
</pre>
<p>Ahora le decimos al Apache en qué puerto está escuchando el Tomcat, para ello creamos el archivo <strong>/etc/apache2/workers.properties</strong> y le añadimos lo siguiente:</p>
<pre>
worker.list=<strong><font color="green">miAplicacion</font></strong>

# Set properties for miAplicacion
worker.miAplicacion.type=ajp13
worker.miAplicacion.host=localhost
worker.miAplicacion.port=8009
</pre>
<p>Ahora verificamos que en el archivo <strong>/usr/share/tomcat6/server.xml</strong> se<br />
encuentre descomentada la siguiente línea:</p>
<pre>
    &lt;!-- Define an AJP 1.3 Connector on port 8009 --&gt;
    &lt;Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /&gt;
</pre>
</p>
<p>Ahora reiniciamos Tomcat y Apache y listo listo }:)  (podemos probarlo con http://localhost/<strong><font color="green">miAplicacion</font></strong>)</p>
<p><a href="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg"><img src="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg?w=455" alt="setas" title="setas"   class="size-full wp-image-134" /></a><br />
Enjoy!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hackurbano.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hackurbano.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hackurbano.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hackurbano.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hackurbano.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hackurbano.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hackurbano.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hackurbano.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hackurbano.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hackurbano.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hackurbano.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hackurbano.wordpress.com/608/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hackurbano.wordpress.com/608/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hackurbano.wordpress.com/608/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hackurbano.wordpress.com&amp;blog=5230401&amp;post=608&amp;subd=hackurbano&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hackurbano.wordpress.com/2009/07/15/redirigir-peticiones-de-apache-a-tomcat/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/ba5e106bf175eef84bc54825efa412a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">constrict0r</media:title>
		</media:content>

		<media:content url="http://hackurbano.files.wordpress.com/2008/10/setas_100.jpg" medium="image">
			<media:title type="html">setas</media:title>
		</media:content>
	</item>
	</channel>
</rss>
