<?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/"
	>

<channel>
	<title>Bosque Viejo &#187; servidores</title>
	<atom:link href="http://bosqueviejo.net/tag/servidores/feed/" rel="self" type="application/rss+xml" />
	<link>http://bosqueviejo.net</link>
	<description>Sitio web sobre programación, software libre, redes, servidores, ofimática... y todo lo relacionado con la informática que nos rodea</description>
	<lastBuildDate>Wed, 08 Feb 2012 10:14:54 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Cron: programando tareas</title>
		<link>http://bosqueviejo.net/2011/11/25/cron-programando-tareas/</link>
		<comments>http://bosqueviejo.net/2011/11/25/cron-programando-tareas/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 00:15:48 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[administración de sistemas]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/?p=1080</guid>
		<description><![CDATA[ Una de las cosas que siempre me ha gustado de Unix, es lo que siempre reseña Eric S. Raymond a través de la archiconocida filosofía Unix: la interfaz universal son los flujos de texto; y eso posibilita que los comandos se puedan programar en el tiempo y realizar tareas no atendidas que nos faciliten la vida.
La programación de tareas en Unix (y sistemas similares como BSD, Solaris, HP-UX, AIX, Linux, MacOS X, etc.) se basa en un pequeño programa que permanece como demonio en nuestro sistema y mantiene una tabla de ejecución de comandos basados en tiempo y con una granularidad de un minuto. Es decir, no se puede programar una tarea con una exactitud mayor de un minuto (por ejemplo, no se podría decir que algo se ejecute cada 20 ó 30 segundos).
La tabla de tareas programadas (crontab)
En cualquier sistema, si escribimos como cualquier usuario la orden: crontab -e; entraremos inmediatamente en un editor en el que nos debería de mostrar información de la tabla de tareas programadas, o un fichero con un comentario indicando el formato&#8230; o en el peor de los casos, un fichero vacío.
Rellenar este fichero es tener en cuenta que los datos debe de [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://bosqueviejo.net/wp-content/uploads/reloj-150x150.jpg" alt="" title="reloj" width="150" height="150" class="alignleft size-thumbnail wp-image-1081" /> Una de las cosas que siempre me ha gustado de Unix, es lo que siempre reseña Eric S. Raymond a través de la archiconocida <a href="http://bosqueviejo.net/2008/09/22/filosofia-unix/">filosofía Unix</a>: <em>la interfaz universal son los flujos de texto</em>; y eso posibilita que los comandos se puedan programar en el tiempo y realizar tareas no atendidas que nos faciliten la vida.<span id="more-1080"></span></p>
<p>La programación de tareas en Unix (y sistemas similares como BSD, Solaris, HP-UX, AIX, Linux, MacOS X, etc.) se basa en un pequeño programa que permanece como <em>demonio</em> en nuestro sistema y mantiene una tabla de ejecución de comandos basados en tiempo y con una granularidad de un minuto. Es decir, no se puede programar una tarea con una exactitud mayor de un minuto (por ejemplo, no se podría decir que algo se ejecute cada 20 ó 30 segundos).</p>
<h3>La tabla de tareas programadas (crontab)</h3>
<p>En cualquier sistema, si escribimos como cualquier usuario la orden: <tt>crontab -e</tt>; entraremos inmediatamente en un editor en el que nos debería de mostrar información de la tabla de tareas programadas, o un fichero con un comentario indicando el formato&#8230; o en el peor de los casos, un fichero vacío.</p>
<p>Rellenar este fichero es tener en cuenta que los datos debe de estar separados por uno o más espacios, significando cada campo:</p>
<ul>
<li><strong>minutos</strong>: el minuto en el que se va a ejecutar el cron.</li>
<li><strong>hora</strong>: la hora en la que se va a ejecutar el cron.</li>
<li><strong>día del mes</strong>: día del mes en el que se va a ejecutar el cron.</li>
<li><strong>mes</strong>: mes en el que se va a ejecutar el cron.</li>
<li><strong>día de la semana</strong>: día de la semana en que se ejecutará el cron. Este será en formato numérico de 0-7, siendo domingo tanto el cero como el siete.</li>
<li><strong>comando</strong>: el comando a ejecutar.</li>
</ul>
<p>Si se configura lo siguiente:</p>
<pre>
0    5    *    *    *    /home/yo/mi_comando
*/5  *    *    *    *    /home/yo/mi_otro_comando
0,30 *    *    *    *    /home/yo/otro_comando_mas
0    0    *    *    7    /home/yo/dominguete
</pre>
<p>La primera línea le dice al sistema que se ejecute cuando sean las 5:00h de cada día, y ejecutará <tt>mi_comando</tt>. La segunda línea hace que <tt>mi_otro_comando</tt> se ejecute cada 5 minutos. La tercera línea indica que <tt>otro_comando_mas</tt> debe de ejecutarse en el minuto 00 y 30 de cada hora. Por último, la línea cuatro, hace que la ejecución de <tt>dominguete</tt> se haga solo el domingo y a las 0:00h.</p>
<h3>Cron para administradores</h3>
<p>Si estás programando una tarea para que se ejecute de forma recurrente en el sistema, que además requiere de unos permisos especiales o específicos para que se ejecute, es decir, necesita ser un usuario específico o <em>root</em>, entonces debe de programarse dicha tarea en la tabla de <tt>crontab</tt> del sistema, donde, además de especificar el tiempo, se puede especificar el usuario que la llevará a cabo.</p>
<p>Esto se configura en el fichero <tt>/etc/crontab</tt> (o en los ficheros fraccionados que puedes encontrar en la mayoría de sistemas en <tt>/etc/crontab.d</tt>). El usuario aparece como campo antes del comando. Solo hay que indicar el nombre del usuario y listo.</p>
<h3>Cron para usuarios</h3>
<p>Si tienes un usuario en el sistema y quieres hacer algo como que se ejecute <tt>fetchmail</tt> cada 15 minutos y rescate el correo de tus cuentas de correo en tu propia cuenta del servidor, tan solo tienes que ejecutar el comando de edición de <tt>crontab -e</tt>, y poner en el fichero algo como esto:</p>
<pre>
*/15  *    *    *    *     fetchmail
</pre>
<p>Con esto, tendremos asegurada la ejecución cada 15 minutos del comando (justamente en los minutos 0, 15, 30 y 45 de cada hora).</p>
<h3>Cosas a tener en cuenta</h3>
<p>Algunas preguntas que nos pueden asaltar son:</p>
<ul>
<li><strong>¿Cómo puedo ver los cron que tengo configurados sin editarlos?</strong> estos y otros comandos puedes revisarlos a través de <tt>man crontab</tt>, pero a modo de reseña rápida, sería: <tt>crontab -l</tt></li>
<li><strong>Si pongo */7 en la primera hora se ejecuta el cron en los minutos 0, 7, 14, 21, 28, 35, 42, 49, 56, ¿y en la siguiente hora?</strong> Pues en los mismos minutos. El sistema de cron no asegura que algo se ejecute con una distancia exacta de tiempo, de hecho, la sintaxis lo revela, si el minuto es divisible por 7, se ejecuta, sino no.</li>
</ul>
<p>Si tienes más preguntas del estilo, agrégalas como comentario y las incluiré en este apartado.</p>
<h3>Bonus Track: el comando at</h3>
<p>Antes de dar por finalizado el artículo&#8230; vamos a pensar, ¿qué pasa si quiero programar una tarea para que se ejecute hoy a las 1:30h&#8230; pero solo hoy? &#8230; o incluso, ¿si quiero que se ejecute dentro de 2 horas? Pues para eso empleamos el comando <tt>at</tt>.</p>
<p>Por ejemplo, si queremos que se ejecute a las 18:30h del mismo día por la tarde, basta con decir:</p>
<pre>
$ at 18:30
at> fetchmail
at> <EOT>
job 1 at Fri Nov 25 18:30:00 2011
</pre>
<p>Ten presente que se debe de presionar Ctrl+D para finalizar (&lt;EOT&gt;). Podemos ver el comando en la cola con el comando <tt>atq</tt>, o incluso eliminarlo con el comando <tt>atrm</tt>.</p>
<p>Para programar un comando dentro de 2 horas, sería:</p>
<pre>
$ at now + 2 hours
at> fetchmail
at> <EOT>
job 1 at Fri Nov 25 9:05:00 2011
</pre>
<p>Con lo que el comando se ejecutaría en dos horas, a contar desde que se lanzó el comando.</p>
<p>También se permite programar la tarea lanzando la ejecución de un fichero de comandos (shell script), así como una gran flexibilidad de configuración horaria. Todo está aquí: <tt>man at</tt>.</p>
<h3>Conclusiones</h3>
<p>La programación de tareas es algo trivial en un equipo informático, para los usuarios de GNU/Linux, sobretodo, cuando quieres que el  equipo se apague a una determinada hora, convierta un fichero por la noche cuando ya no usas el equipo y pueda ser <em>saturado</em> sin problemas, o quieras programar limpieza de ficheros de forma periódica, descarga de noticias, etc, etc. es más fácil hacerlo con estos programadores que tener que hacerlo a mano.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2011/11/25/cron-programando-tareas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¡Hacking ético liberado!</title>
		<link>http://bosqueviejo.net/2011/07/12/hacking-etico-liberado/</link>
		<comments>http://bosqueviejo.net/2011/07/12/hacking-etico-liberado/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 09:09:19 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Libros]]></category>
		<category><![CDATA[administración de sistemas]]></category>
		<category><![CDATA[carlos tori]]></category>
		<category><![CDATA[hacker]]></category>
		<category><![CDATA[hacking etico]]></category>
		<category><![CDATA[redes]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/?p=752</guid>
		<description><![CDATA[ Hoy leo, del propio autor, Carlos Tori, una noticia en la lista de NNL Newsletter sobre Seguridad y Redes, en la que dice, literalmente:

Estimados, he decidido liberar la obra para que los interesados puedan disfrutarla de modo libre y distribuirla.
http://www.hackingetico.com
Espero que la disfruten, saludos.

Por lo que, tenemos ya a disposición de todo el mundo este increíble libro sobre seguridad y redes, de la mano de un autor que trabaja día a día en empresas de seguridad y sobre problemas de seguridad reales.
Lo que se trata en el libro, visto por capítulos es Cultura Hacker, Técnicas de búsqueda de información, Ingeniería social, Fuerza Bruta, Aplicaciones Web (XSS, Exploits, &#8230;), Inyección de SQL, Servidores Linux y Servidores Windows.
En esencia, son unas muy buenas lecciones sobre administración de sistemas, de cara a la seguridad y mantenerse alerta de por donde pueden venir los ataques más comunes. También tiene capítulos muy aconsejables para programadores, a nivel de codificación para evitar la creación de códigos maliciosos como exploits, o inyecciones de scripting o código SQL.
Debería de ser el libro de cabecera de todo administrador de redes y técnico en seguridad de todas las empresas TIC.
]]></description>
			<content:encoded><![CDATA[<p><img src="http://bosqueviejo.net/wp-content/uploads/hackingetico-150x150.jpg" alt="" title="hackingetico" width="150" height="150" class="alignleft size-thumbnail wp-image-753" /> Hoy leo, del propio autor, Carlos Tori, una noticia en la lista de <a href="http://www.elistas.net/grupo/nnl">NNL Newsletter</a> sobre Seguridad y Redes, en la que dice, literalmente:</p>
<blockquote><p>
Estimados, he decidido liberar la obra para que los interesados puedan disfrutarla de modo libre y distribuirla.</p>
<p><a href="http://www.hackingetico.com">http://www.hackingetico.com</a></p>
<p>Espero que la disfruten, saludos.
</p></blockquote>
<p>Por lo que, tenemos ya a disposición de todo el mundo este increíble libro sobre seguridad y redes, de la mano de un autor que trabaja día a día en empresas de seguridad y sobre problemas de seguridad reales.</p>
<p>Lo que se trata en el libro, visto por capítulos es Cultura Hacker, Técnicas de búsqueda de información, Ingeniería social, Fuerza Bruta, Aplicaciones Web (XSS, Exploits, &#8230;), Inyección de SQL, Servidores Linux y Servidores Windows.</p>
<p>En esencia, son unas muy buenas lecciones sobre administración de sistemas, de cara a la seguridad y mantenerse alerta de por donde pueden venir los ataques más comunes. También tiene capítulos muy aconsejables para programadores, a nivel de codificación para evitar la creación de códigos maliciosos como exploits, o inyecciones de scripting o código SQL.</p>
<p>Debería de ser el libro de cabecera de todo administrador de redes y técnico en seguridad de todas las empresas TIC.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2011/07/12/hacking-etico-liberado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell in a box: administración remota en HTTP</title>
		<link>http://bosqueviejo.net/2010/10/15/shell-in-a-box-administracion-remota-en-http/</link>
		<comments>http://bosqueviejo.net/2010/10/15/shell-in-a-box-administracion-remota-en-http/#comments</comments>
		<pubDate>Fri, 15 Oct 2010 10:50:00 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[administración de sistemas]]></category>
		<category><![CDATA[acceso remoto]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/?p=518</guid>
		<description><![CDATA[La mayoría de los sitemas de tipo Unix (GNU/Linux, BSD, Darwin, Solaris, &#8230;) tienen sistema de acceso vía consola a través de herramientas como telnet o SSH.
Estos elementos de conexión usan unos puertos específicos para la conexión, pero el primero no es nada seguro (todo se transmite en plano, tal y como se ve en pantalla, a través de la red) y el segundo requiere de la apertura de un puerto, que en muchas redes está filtrado o es inaccesible.
Para esto, Markus Gutschke, ha creado un sistema que se aprovecha de las nuevas ventajas de la web (HTTP, HTML y Javascript puro y duro) para realizar una conexión vía HTTP con el servidor y poder abrir una sesión de consola. El proyecto se llama Shell In A Box.
La principal ventaja es que se puede lanzar tal cual, en un puerto como el 8080, y ya está. Funcionando. Pero lo mejor es usar Apache para configurarlo de modo que se quede detrás, y a través de una conexión SSL, para que no sea interceptable lo que se va escribiendo, ya que sino, sería tan inseguro como usar telnet directamente.
El propio código tiene un fichero INSTALL en el que se detalla la [...]]]></description>
			<content:encoded><![CDATA[<p>La mayoría de los sitemas de tipo Unix (GNU/Linux, BSD, Darwin, Solaris, &#8230;) tienen sistema de acceso vía consola a través de herramientas como telnet o SSH.</p>
<p>Estos elementos de conexión usan unos puertos específicos para la conexión, pero el primero no es nada seguro (todo se transmite en plano, tal y como se ve en pantalla, a través de la red) y el segundo requiere de la apertura de un puerto, que en muchas redes está filtrado o es inaccesible.</p>
<p>Para esto, Markus Gutschke, ha creado un sistema que se aprovecha de las nuevas ventajas de la web (HTTP, HTML y Javascript puro y duro) para realizar una conexión vía HTTP con el servidor y poder abrir una sesión de consola. El proyecto se llama <a href="http://code.google.com/p/shellinabox/">Shell In A Box</a>.</p>
<p>La principal ventaja es que se puede lanzar tal cual, en un puerto como el 8080, y ya está. Funcionando. Pero lo mejor es usar Apache para configurarlo de modo que se quede <em>detrás</em>, y a través de una conexión SSL, para que no sea interceptable lo que se va escribiendo, ya que sino, sería tan inseguro como usar <em>telnet</em> directamente.</p>
<p>El propio código tiene un fichero <a href="http://code.google.com/p/shellinabox/source/browse/trunk/INSTALL">INSTALL</a> en el que se detalla la instalación y configuración, ya sea cual sea la forma en la que se desee.</p>
<p>Una curiosidad, es que, además de disponer del modo <em>LOGIN</em>, que es el que tiene más utilidad, ya que se puede disponer de una consola al equipo servidor a través de conexión HTTP, pero también se puede obtener un SSH a otra máquina (o la propia) y la ejecución de un comando específico:</p>
<pre>
shellinabox --service=/:USER:/:top
</pre>
<p>Esto, por ejemplo, abriría una interfaz para visualizar el <em>top</em> de la máquina.</p>
<p>Es una muy buena herramienta que puede facilitar mucho la gestión de servicios (sobre todo de cara al acceso).</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2010/10/15/shell-in-a-box-administracion-remota-en-http/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La importancia de la actualización</title>
		<link>http://bosqueviejo.net/2010/02/23/la-importancia-de-la-actualizacion/</link>
		<comments>http://bosqueviejo.net/2010/02/23/la-importancia-de-la-actualizacion/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 09:04:07 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[seguridad]]></category>
		<category><![CDATA[administración de sistemas]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/?p=238</guid>
		<description><![CDATA[Desde hace años, me vengo encontrando con sistemas instalados que hay que mantener o sobre los que hay que desarrollar, que son instalaciones de hace 5 ó 7 años. Estas instalaciones suelen ser máquinas con RedHat 9, RedHat EL 2, 3 ó 4, o Fedora Core 2 ó 3. En esos años RedHat estaba muy metido en el entorno empresarial y Fedora Core fue una respuesta libre (totalmente) a la desaparición de RedHat Desktop.
El caso es que la empresa y la comunidad que soportan ambas distribuciones (incluso distros comos OpenSuSE o SuSE, Mandriva y otras similares) les pasa que desarrollan versiones de forma bastante rápida (una o dos al año), con lo que, pasando 5 años, pueden haber salido unas 10 versiones posteriores del producto.
Esto genera problemas, sobre todo para la comunidad y la empresa que las mantiene, que deben de ir cerrando soporte de las antiguas, porque sino sería un caos el mantenimiento de 10 distros con versiones distintas de los códigos que se incluyen. A día de hoy, RedHat no suele mantener nada más que dos versiones, al última y su anterior, y Fedora Core, como mucho, da soporte a las 3 ó 4 últimas, con lo que, [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace años, me vengo encontrando con sistemas instalados que hay que mantener o sobre los que hay que desarrollar, que son instalaciones de hace 5 ó 7 años. Estas instalaciones suelen ser máquinas con RedHat 9, RedHat EL 2, 3 ó 4, o Fedora Core 2 ó 3. En esos años RedHat estaba muy metido en el entorno empresarial y Fedora Core fue una respuesta libre (totalmente) a la desaparición de RedHat Desktop.</p>
<p>El caso es que la empresa y la comunidad que soportan ambas distribuciones (incluso distros comos OpenSuSE o SuSE, Mandriva y otras similares) les pasa que desarrollan versiones de forma bastante rápida (una o dos al año), con lo que, pasando 5 años, pueden haber salido unas 10 versiones posteriores del producto.</p>
<p>Esto genera problemas, sobre todo para la comunidad y la empresa que las mantiene, que deben de ir cerrando soporte de las antiguas, porque sino sería un caos el mantenimiento de 10 distros con versiones distintas de los códigos que se incluyen. A día de hoy, RedHat no suele mantener nada más que dos versiones, al última y su anterior, y Fedora Core, como mucho, da soporte a las 3 ó 4 últimas, con lo que, yendo actualmente por la versión 12, es lógico que el soporte a la versión 2 y 3 ha expirado hace bastante tiempo.</p>
<p>¿Qué pasa si hemos instalado un servidor web con estas distribuciones y queremos mantenerlo para nuestro correo, página web y otros menesteres?, pues que sino actualizamos, llegará el momento en el que haya vulnerabilidades en el código de nuestro servidor de correo, nuestro servidor web, o que queramos simplemente actualizar la versión del CMS que estamos usando y necesite una versión superior de Python, PHP o Ruby, o no tengamos forma de instalarla, a menos que vayamos tirando de compilación.</p>
<p>En Debian también pasa algo parecido. El ritmo de liberación de las distribuciones es más lento, con lo que da un tiempo mayor de permanencia de una distribución a su siguiente liberación. Pero el cambio es mucho mayor en este sentido, puesto que las versiones, cuando se cambian, son saltos bastante grandes y requiere de un mayor esfuerzo de adaptación.</p>
<p>¿Qué hacer?, básicamente, ir actualizando y mantenerse al tanto de cuando sale la siguiente liberación de la distribución que estamos usando y, sobretodo, planificar tiempos cada 5 ó 6 meses, para actualizar las distribuciones a sus versiones superiores, ya que así estaremos más protegidos de posibles vulnerabilidades.</p>
<p>Tener presente que si el cambio no se realiza, puntualmente, antes de que el soporte oficial a la distro que tenemos instalada expire, nos veremos en la situación de tener un sistema con <em>agujeros de seguridad</em>, que es propenso a fallos y sobre el que, cada día que pase, será más complicado instalar software nuevo.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2010/02/23/la-importancia-de-la-actualizacion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La Regla de los Nueves</title>
		<link>http://bosqueviejo.net/2009/11/04/la-regla-de-los-nueves/</link>
		<comments>http://bosqueviejo.net/2009/11/04/la-regla-de-los-nueves/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:15:41 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[redes]]></category>
		<category><![CDATA[administración de sistemas]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=208</guid>
		<description><![CDATA[Esto es algo que aprendí, ahora hace ya unos 5 años, cuando comencé a instalar mi primer servicio de alta disponibilidad.
En un artículo sobre el tema, la alta disponibilidad, se decía que la disponibilidad de un servicio, servido únicamente por una máquina, normalmente es de un 90%, con lo que, a lo largo de un año (365 días) el servicio se ha mantenido en funcionamiento un máximo del 90%, aproximadamente, y ha tenido un tiempo de inactividad del 10% (más o menos unos 36 días).
Con sistemas de alta disponibilidad, es decir, teniendo más de una máquina siriviendo un servicio, la proporción se incrementa, pero siempre a razón de nueves. Es decir, con dos máquinas, tenemos una disponibilidad del 99%, con tres máquinas tenemos un 99,9%, con cuatro un 99,99% y así sucesivamente.
Como nota curiosa, hace poco leí que los sistemas desarrollados sobre Erlang/OTP tienen una alta disponibilidad de nueve nueves (99,9999999%), lo cual me parece algo increíble, pero totalmente cierto, ya que he probado la infraestructura y realmente es muy estable.
]]></description>
			<content:encoded><![CDATA[<p>Esto es algo que aprendí, ahora hace ya unos 5 años, cuando comencé a instalar mi primer servicio de alta disponibilidad.</p>
<p>En un artículo sobre el tema, la alta disponibilidad, se decía que la disponibilidad de un servicio, servido únicamente por una máquina, normalmente es de un 90%, con lo que, a lo largo de un año (365 días) el servicio se ha mantenido en funcionamiento un máximo del 90%, aproximadamente, y ha tenido un tiempo de inactividad del 10% (más o menos unos 36 días).</p>
<p>Con sistemas de alta disponibilidad, es decir, teniendo más de una máquina siriviendo un servicio, la proporción se incrementa, pero siempre a razón de nueves. Es decir, con dos máquinas, tenemos una disponibilidad del 99%, con tres máquinas tenemos un 99,9%, con cuatro un 99,99% y así sucesivamente.</p>
<p>Como nota curiosa, hace poco <a href="http://blog.toolshed.com/2007/09/999999999-uptim.html">leí</a> que los sistemas desarrollados sobre <a href="http://www.erlang.org/">Erlang/OTP</a> tienen una alta disponibilidad de nueve nueves (99,9999999%), lo cual me parece algo increíble, pero totalmente cierto, ya que he probado la infraestructura y realmente es muy estable.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/11/04/la-regla-de-los-nueves/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sistemas de Mensajes Encolados (MQ)</title>
		<link>http://bosqueviejo.net/2009/10/08/sistemas-de-mensajes-encolados-mq/</link>
		<comments>http://bosqueviejo.net/2009/10/08/sistemas-de-mensajes-encolados-mq/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 10:51:23 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Desarrollo de Software]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=206</guid>
		<description><![CDATA[Hace poco me he encontrado con un problema. Tengo un entramado de servidores y comunicaciones entre cada uno de ellos. Cada servidor puede notificar, ya sea vía SOAP, HTTP, XMPP o mediante cualquier otro protocolo, un evento o una información a otro servidor del entramado, con lo que cada servidor se configura de una forma específica, con una serie de nombres de dominio o IPs.
El problema viene al querer aplicar escalabilidad al proyecto. Cuando no solo hay un equipo implicado, sino que existen dos o tres, los cuales hay que configurar bajo ciertas circunstancias.
Lo primero que pensé, es que, si le puedo notificar a la red de que sucede un evento en concreto, ya sea a una sola máquina o conjunto definido de estas (pero para todos los equipos la misma configuración), facilitaría la puesta en producción. Con lo que me puse a buscar y encontré MQ, message queue.
El encolado de mensajes
La comunicación de los equipos informáticos se basa en mensajes, en eventos, que deben de poder transmitirse de unos a otros cuando sucedan (si es que se quiere tener la máxima fiabilidad en la información que se trata).
Una forma es comunicar directamente al implicado, lo cual resulta un poco [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco me he encontrado con un problema. Tengo un entramado de servidores y comunicaciones entre cada uno de ellos. Cada servidor puede notificar, ya sea vía SOAP, HTTP, XMPP o mediante cualquier otro protocolo, un evento o una información a otro servidor del entramado, con lo que cada servidor se configura de una forma específica, con una serie de nombres de dominio o IPs.</p>
<p>El problema viene al querer aplicar escalabilidad al proyecto. Cuando no solo hay un equipo implicado, sino que existen dos o tres, los cuales hay que configurar bajo ciertas circunstancias.</p>
<p>Lo primero que pensé, es que, si le puedo notificar a la red de que sucede un evento en concreto, ya sea a una sola máquina o conjunto definido de estas (pero para todos los equipos la misma configuración), facilitaría la puesta en producción. Con lo que me puse a buscar y encontré MQ, message queue.</p>
<h3>El encolado de mensajes</h3>
<p>La comunicación de los equipos informáticos se basa en mensajes, en eventos, que deben de poder transmitirse de unos a otros cuando sucedan (si es que se quiere tener la máxima fiabilidad en la información que se trata).</p>
<p>Una forma es comunicar directamente al implicado, lo cual resulta un poco tedioso si los implicados son muchos y muy distintos.</p>
<p>Otra forma es mediante un sistema <a href="http://es.wikipedia.org/wiki/Java_Message_Service">JMS</a> o un <a href="http://en.wikipedia.org/wiki/Message_queue">MQ</a>, como <a href="http://www.rabbitmq.com">RabbitMQ</a>.</p>
<p>El encolado de mensajes es un sistema que permite que un elemento perteneciente a un sistema de información, pueda comunicar un estado, evento o mensaje informativo o imperativo a otro conjunto de elementos dentro del sistema, para que interactúe con él.</p>
<p>Por ejemplo, si tenemos un servidor web, una interfaz, que controla un conjunto de máquinas encargadas realizar llamadas salientes, rastrear páginas de la web para almacenar información para un buscador o similar, y la interfaz quiere enviar parámetros nuevos de configuración a estas, puede hacerlo mediante el envío de un mensaje generalizado a ese conjunto de máquinas, y estas máquinas recibirán el mensaje en el momento que lo soliciten.</p>
<p>Esta utilidad es igualmente buena para cuando una interfaz web, por ejemplo de un estudio fotográfico, carga imágenes desde la web, las retoca con algún tipo de efecto, ajuste, etc. y más adelante permite su descarga. El sistema web puede enviar el evento al sistema de retocado de que hay una imagen disponible, y cuando la imagen ya está disponible, el sistema de retocado puede enviar otro mensaje de vuelta diciendo que ya está.</p>
<p>Quizás esto último podría hacerse mejor con una base de datos, pero con el sistema de mensajería, se eliminan los datos en el momento que ya no se necesitan, mientras que con la base de datos, esos datos podrían permanecer ahí de forma indeterminada.</p>
<h3>Conclusiones</h3>
<p>Los sistemas de encolado de mensajes tienen su utilidad, sobre todo, en sistemas formados por varias máquinas, con roles bien definidos y en las que se quiere afinar lo que son las conexiones y comunicaciones entre las máquinas.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/10/08/sistemas-de-mensajes-encolados-mq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Escalado de Ruby on Rails</title>
		<link>http://bosqueviejo.net/2009/05/25/escalado-de-ruby-on-rails/</link>
		<comments>http://bosqueviejo.net/2009/05/25/escalado-de-ruby-on-rails/#comments</comments>
		<pubDate>Mon, 25 May 2009 11:34:41 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[redes]]></category>
		<category><![CDATA[desarrollo web]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=142</guid>
		<description><![CDATA[Después de liberar el primer proyecto escrito en Ruby on Rails, cuando lo pasamos a producción, nos dimos cuenta de que el sistema funcionaba realmente lento. En algunos casos, incluso, no respondía, con lo que buscamos información por internet y vimos:
Mongrel y Thin no son multi-hilo
Fue algo que nos sorprendió mucho, una aplicación servidora secuencial, que atiende las peticiones una a una y, en caso de que una petición se tarde un par de segundos (que las teníamos :-S ), el sistema se queda trabado durante todo ese tiempo.
Las soluciones posibles eran dos:

Phusion Passenger, también conocido como mod_rails, es un módulo para Apache que mantiene tantos hilos como peticiones se vayan gestionando, siempre con unos límites máximos y mínimos, tal y como apache suele hacerlo.
Ngnix + Thin, esta solución fue un poco más artesana, por decirlo de alguna forma, ya que consistía en configurar este servidor web como proxy inverso, para hacer el balanceo de peticiones entre todos los hilos de thin que se quieran cargar en el sistema. Descartamos en este punto a mongrel por comentarios que había leído en otros blogs.

Bien, por correr lo más posible, lanzamos tantos hilos como nos fue posible en la máquina que dedicamos [...]]]></description>
			<content:encoded><![CDATA[<p>Después de liberar el primer proyecto escrito en Ruby on Rails, cuando lo pasamos a producción, nos dimos cuenta de que el sistema funcionaba realmente lento. En algunos casos, incluso, no respondía, con lo que buscamos información por internet y vimos:</p>
<p><strong>Mongrel y Thin no son multi-hilo</strong></p>
<p>Fue algo que nos sorprendió mucho, una aplicación servidora secuencial, que atiende las peticiones una a una y, en caso de que una petición se tarde un par de segundos (que las teníamos :-S ), el sistema se queda trabado durante todo ese tiempo.</p>
<p>Las soluciones posibles eran dos:</p>
<ul>
<li><strong><a href="http://www.modrails.com/">Phusion Passenger</a></strong>, también conocido como <strong>mod_rails</strong>, es un módulo para Apache que mantiene tantos hilos como peticiones se vayan gestionando, siempre con unos límites máximos y mínimos, tal y como apache suele hacerlo.</li>
<li><strong>Ngnix + Thin</strong>, esta solución fue un poco más <em>artesana</em>, por decirlo de alguna forma, ya que consistía en configurar este servidor web como proxy inverso, para hacer el balanceo de peticiones entre todos los hilos de thin que se quieran cargar en el sistema. Descartamos en este punto a mongrel por comentarios que había leído en <a href="http://www.juantomas.net/2009/03/02/si-los-mongrels-te-dan-palo-yo-los-voy-thinear/">otros blogs</a>.</li>
</ul>
<p>Bien, por correr lo más posible, lanzamos tantos hilos como nos fue posible en la máquina que dedicamos al proyecto y, nos complació ver que podía aguantar hasta 40 hilos, sin que sus CPUs lo notasen apenas. Con lo que conseguimos un pool de 40 puertos dedicados a atender peticiones HTTP.</p>
<p>En otra máquina se configuró un proxy inverso. En el escenario de pruebas usamos nginx, aunque el tenerlo en la misma máquina y hacer pruebas masivas, nos dio como resultado que una cantidad importante de peticiones se perdían o transformaban en respuestas de tipo 500 por parte de nginx. Optamos entonces por un balanceador que tiene la compañía vía hardware, muy rápido y, a día de hoy el sistema web tira tan rápido y casi mejor que el que tenemos montado en PHP <img src='http://bosqueviejo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>En el próximo artículo comentaré las configuraciones, arquitecturas y demás seguidas, sobre todo a nivel de nginx y thin, que es lo que realmente interesa.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/05/25/escalado-de-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MVCC: Control de Concurrencia para Múltiples Versiones de PostgreSQL</title>
		<link>http://bosqueviejo.net/2009/03/13/mvcc-control-de-concurrencia-para-multiples-versiones-de-postgresql/</link>
		<comments>http://bosqueviejo.net/2009/03/13/mvcc-control-de-concurrencia-para-multiples-versiones-de-postgresql/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 08:56:08 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=113</guid>
		<description><![CDATA[El sistema de base de datos PostgreSQL integra un sistema de control de concurrencia para múltiples versiones, en principio. Esto no es más que un sistema que se encarga de mantener copias sobre los datos de forma paralela, para acelerar el sistema de escritura de datos a disco duro, haciendo un control de concurrencia entre las distintas versiones que se van escribiendo.
El problema que intenta solucionar este sistema es el siguiente. Imagina que tenemos un sistema que hace múltiples escrituras y lecturas de una base de datos. No es difícil, seguro que conoces cientos de sistemas que lo hacen. Ahora, ten en cuenta que, los accesos a base de datos, depende para qué, realizan ciertos bloqueos, para asegurarse de que la información a modificar o a leer (incluso) no es modificada por nadie, hasta que termine su actividad.
En MySQL, por ejemplo, existen distintos tipos de bloqueos, muchos de ellos automáticos, que hacen el bloqueo de una tabla completa, o de ciertas partes específicas, al hacer una actividad de modificación, o un bloqueo compartido, para hacer actividades de lectura (solo bloquea en este caso a los que intentan escribir).
Pero en tema de índices, hay muchos SGBD que usan sistemas de índices [...]]]></description>
			<content:encoded><![CDATA[<p>El sistema de base de datos PostgreSQL integra un sistema de control de concurrencia para múltiples versiones, en principio. Esto no es más que un sistema que se encarga de mantener copias sobre los datos de forma paralela, para acelerar el sistema de escritura de datos a disco duro, haciendo un control de concurrencia entre las distintas versiones que se van escribiendo.</p>
<p>El problema que intenta solucionar este sistema es el siguiente. Imagina que tenemos un sistema que hace múltiples escrituras y lecturas de una base de datos. No es difícil, seguro que conoces cientos de sistemas que lo hacen. Ahora, ten en cuenta que, los accesos a base de datos, depende para qué, realizan ciertos bloqueos, para asegurarse de que la información a modificar o a leer (incluso) no es modificada por nadie, hasta que termine su actividad.</p>
<p>En MySQL, por ejemplo, existen distintos tipos de bloqueos, muchos de ellos automáticos, que hacen el bloqueo de una tabla completa, o de ciertas partes específicas, al hacer una actividad de modificación, o un bloqueo <em>compartido</em>, para hacer actividades de lectura (solo bloquea en este caso a los que intentan escribir).</p>
<p>Pero en tema de índices, hay muchos SGBD que usan sistemas de índices que al actualizarse, se bloquean completamente, dejando, no solo las escrituras bloqueadas, sino también las lecturas, creando un <em>lag</em> de acceso a los datos.</p>
<p>Interbase fue la primera base de datos que eliminó la contención, los <em>deadlocks</em> y garantizaba transacciones ACID mediante el sistema MVCC. La idea es: <strong>no actualizar ni eliminar nunca una fila del disco</strong>. Si deseas actualizar, se agrega una nueva fila con la misma clave primaria, la cual <em>oculta</em> la antigua fila. Si deseas eliminar, agrega una nueva fila que etiqueta la clave primaria como eliminada, la cual oculta la antigua fila.</p>
<p>Las viejas filas no eran nunca actualizadas, así que no era necesario implementar ningún sistema de bloqueo y la contención (o espera) mágicamente desapareció.</p>
<p>El sistema, no obstante, tiene pequeños defectos: usa más espacio de disco y puede ser algo más lento a la hora de leer datos. La buena noticia es que los datos se pueden respaldar (realizarse un <em>backup</em>) en cualquier momento sin bloquear el sistema.</p>
<p>En MySQL, los tipos de tablas Falcon (a partir de la versión 6.0) e InnoDB (antes de la 6.0), implementan este sistema para las actualizaciones (<em>updates</em>) usando bloqueo a nivel de fila, lo cual puede causar un tiempo de espera para otros procesos (contención).</p>
<p>En PostgreSQL se usa el comando <a href="http://es.tldp.org/Postgresql-es/web/navegable/user/sql-vacuum.html">VACUUM</a> para actualizar las base de datos, es decir, implementar las transacciones agregadas al final en lugar de a las que reemplazan y eliminar las tuplas marcadas para reclamar más espacio en disco. Esta operación demora, pero hace que la base de datos pase de un consumo alto de disco duro, al ajustado que debe de ser, antes de la próxima sesión crítica <img src='http://bosqueviejo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Hay otras bases de datos que también implementan <a href="http://en.wikipedia.org/wiki/Multiversion_concurrency_control">Multiversion concurrency control</a>, tal y como menciona la <a href="http://en.wikipedia.org">wikipedia</a>, tales como:</p>
<ul>
<li><a href="http://www.oracle.com/technology/products/berkeley-db/index.html">Berkeley DB</a>: que es una base de datos a nivel de fichero, como puede ser SQLite, pero sin uso del lenguaje SQL.</li>
<li><a href="http://couchdb.apache.org/">CouchDB</a>: de la cual ya comenté algunas cosas en <a href="http://bosqueviejo.net/wordpress/2009/03/05/couchdb-rest-y-base-de-datos-documental/">otro artículo</a>.</li>
<li><a href="http://www.oracle.com/">Oracle 7</a>: y superiores.</li>
<li><a href="">Microsoft SQL Server 2005</a>: y superiores. El soporte es opcional, se pueden configurar los niveles de <em>aislamiento</em> (isolation) para poder usar MVCC o no.</li>
<li><a href="">MySQL</a>: a través de InnoDB o Falcon, pero se usa nivel de bloqueo por fila, en lugar de <em>snapshot</em>.</li>
</ul>
<p>Más información:</p>
<ul>
<li><a href="http://www.postgresql.org/docs/current/static/mvcc.html">PostgreSQL 8.3: Concurrency Control</a></li>
<li><a href="http://www.epx.com.br/artigos/arqtrans2_en.php">MVCC and snapshot-capable database &#8211; Do It Yourself</a></li>
<li><a href="http://enriqueplace.blogspot.com/2006/02/postgresql-la-base-de-datos-empez.html">PostgreSQL: ¿la base de datos empezó a consumir exageradamente espacio de disco? (actualizado)</a></li>
<li><a href="http://www.oracle.com/technology/oramag/oracle/05-nov/o65asktom.html">On Transaction Isolation Levels</a></li>
<li><a href="http://postgresql-in.blogspot.com/2008/04/postgresql-mvcc-and-vacuum.html">PostgreSQL MVCC and VACUUM</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/03/13/mvcc-control-de-concurrencia-para-multiples-versiones-de-postgresql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Debootstrap: probar sin ensuciar</title>
		<link>http://bosqueviejo.net/2009/03/03/debootstrap-probar-sin-ensuciar/</link>
		<comments>http://bosqueviejo.net/2009/03/03/debootstrap-probar-sin-ensuciar/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 12:21:46 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[seguridad]]></category>
		<category><![CDATA[administración de sistemas]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[jaula]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=103</guid>
		<description><![CDATA[ Desde hace tiempo, llevo usando esta herramienta para generar jaulas de modo que pueda probar nuevos sistemas, servidores y/o configuraciones, sin necesidad de desconfigurar mi sistema actual.
El sistema se basa en tener una copia exacta y nueva de un sistema operativo basado en Debian GNU/Linux, que se instala en un directorio específico de nuestro árbol de directorios. El comando que genera la jaula, que tiene el nombre de debootstrap, se encarga de realizar la instalación del sistema a partir del directorio solicitado y con las fuentes solicitadas, es decir, si queremos instalar un woody, sarge, etch, lenny&#8230; o un gutsy, hardy, ibex&#8230; pues solo tenemos que indicarlo, con la URL de donde conseguir los paquetes y listo.
Por ejemplo, instalar en nuestro directorio /home/usuario/lenny una distribución lenny de Debian, sería hacer lo siguiente:

# debootstrap lenny /home/usuario/lenny http://ftp.rediris.es/debian

Esto tardará unos minutos hasta realizar la instalación completa, ya que se tiene que descargar los paquetes de internet, pero en el momento de finalizar, tendremos un sistema básico de lenny instalado en la ruta indicada.
Para poder usarlo, solo tendremos que hacer lo siguiente:

# mount -t proc proc /home/usuario/lenny/proc
# chroot /home/usuario/lenny

El hecho de montar el directorio proc es para poder tener acceso, desde la [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://bosqueviejo.net/wp-content/uploads/images3-150x150.jpg" alt="" title="images" width="150" height="150" class="alignleft size-thumbnail wp-image-652" /> Desde hace tiempo, llevo usando esta herramienta para generar <em>jaulas</em> de modo que pueda probar nuevos sistemas, servidores y/o configuraciones, sin necesidad de <em>desconfigurar</em> mi sistema actual.</p>
<p>El sistema se basa en tener una copia exacta y nueva de un sistema operativo basado en Debian GNU/Linux, que se instala en un directorio específico de nuestro árbol de directorios. El comando que genera la jaula, que tiene el nombre de <tt>debootstrap</tt>, se encarga de realizar la instalación del sistema a partir del directorio solicitado y con las fuentes solicitadas, es decir, si queremos instalar un woody, sarge, etch, lenny&#8230; o un gutsy, hardy, ibex&#8230; pues solo tenemos que indicarlo, con la URL de donde conseguir los paquetes y listo.</p>
<p>Por ejemplo, instalar en nuestro directorio <tt>/home/usuario/lenny</tt> una distribución lenny de Debian, sería hacer lo siguiente:</p>
<pre>
# debootstrap lenny /home/usuario/lenny http://ftp.rediris.es/debian
</pre>
<p>Esto tardará unos minutos hasta realizar la instalación completa, ya que se tiene que descargar los paquetes de internet, pero en el momento de finalizar, tendremos un sistema básico de lenny instalado en la ruta indicada.</p>
<p>Para poder usarlo, solo tendremos que hacer lo siguiente:</p>
<pre>
# mount -t proc proc /home/usuario/lenny/proc
# chroot /home/usuario/lenny
</pre>
<p>El hecho de montar el directorio <tt>proc</tt> es para poder tener acceso, desde la jaula, al kernel y poder lanzar servidores como apache, proftpd, postfix o similares.</p>
<p>Una vez dentro, podremos realizar las instalaciones y configuraciones que queramos realizar sin miedo de estar estropeando nuestra configuración normal.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/03/03/debootstrap-probar-sin-ensuciar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PostgreSQL: configuración de acceso</title>
		<link>http://bosqueviejo.net/2009/03/03/postgresql-configuracion-de-acceso/</link>
		<comments>http://bosqueviejo.net/2009/03/03/postgresql-configuracion-de-acceso/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 09:30:01 +0000</pubDate>
		<dc:creator>bombadil</dc:creator>
				<category><![CDATA[Base de Datos]]></category>
		<category><![CDATA[administración de sistemas]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[servidores]]></category>

		<guid isPermaLink="false">http://bosqueviejo.net/wordpress/?p=101</guid>
		<description><![CDATA[Esto es algo que siempre me toca buscar en Internet, puesto que es algo que hago una vez cada tantos meses, y siempre se me olvida de cómo empezar, así que, para tener la chuleta a mano, he decidido escribir esta entrada que, además de servirme ahora, seguro que me servirá en el futuro para cuando configure más servidores de este tipo.
Aquí os dejo el enlace: PostgreSQL: Instalación, Configuración y Trucos.
]]></description>
			<content:encoded><![CDATA[<p>Esto es algo que siempre me toca buscar en Internet, puesto que es algo que hago una vez cada tantos meses, y siempre se me olvida de cómo empezar, así que, para tener la <em>chuleta</em> a mano, he decidido escribir esta entrada que, además de servirme ahora, seguro que me servirá en el futuro para cuando configure más servidores de este tipo.</p>
<p>Aquí os dejo el enlace: <a href="http://bosqueviejo.org/?id=postgresql">PostgreSQL: Instalación, Configuración y Trucos</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bosqueviejo.net/2009/03/03/postgresql-configuracion-de-acceso/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

