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

<channel>
	<title>el blog de txurdi</title>
	<atom:link href="http://blog.txurdi.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.txurdi.net</link>
	<description>Explicar de que se trata este blog es dificil, un poco de todo lo que se me ocurra...</description>
	<pubDate>Fri, 15 Aug 2008 21:10:01 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>¿Se puede comprar el tiempo?</title>
		<link>http://blog.txurdi.net/2008/08/15/%c2%bfse-puede-comprar-el-tiempo/</link>
		<comments>http://blog.txurdi.net/2008/08/15/%c2%bfse-puede-comprar-el-tiempo/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 21:09:14 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[tiempo]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/?p=62</guid>
		<description><![CDATA[Muchas veces he querido hacerlo. Si se pudiera comprar y vender el tiempo&#8230; Cuantas veces nos sentimos que nos falta tiempo&#8230; y por otro lado, otras veces querríamos que el tiempo pase más rápido&#8230;
Si pudiera me compraría tiempo a mi mismo, tiempo que he perdido y que estoy seguro que perderé tontamente en el futuro [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces he querido hacerlo. Si se pudiera comprar y vender el tiempo&#8230; Cuantas veces nos sentimos que nos falta tiempo&#8230; y por otro lado, otras veces querríamos que el tiempo pase más rápido&#8230;</p>
<p>Si pudiera me compraría tiempo a mi mismo, tiempo que he perdido y que estoy seguro que perderé tontamente en el futuro me gustaría tenerlo en otros momentos en los que no lo tengo. Alguno dirá &#8220;pues no pierdas ese tiempo y aprovechalo&#8221;, pero a veces no es posible, puesto que nos tenemos que adaptar a unas fechas y unos horarios, tanto nuestros como de los que nos rodean.</p>
<p>¿Y todo esto a que viene? Pues viene a que quiero acabar 2 proyectos antes de Septiembre y ando muy justo de tiempo. Si pudiera retrasar esa fecha comprando tiempo de despues de Septiembre, podría estar más relajado y no tendría que quedarme en casa trabajando todo el día, que mis amigos van a pensar que no quiero quedar con ellos&#8230;</p>
<p>La gente cercana conoce mi situación y me están apoyando, regalándome todo el tiempo que pueden. Me facilitan muchas tareas para que yo no tenga que hacerlas, de manera que yo dispongo de más tiempo para intentar sacar los proyectos adelante. A partir de Septiembre, voy a tener que regalarles mucho tiempo a ellos en compensación&#8230;</p>
<p>Un abrazo a todos los que me están ayudando a que mi tiempo se alargue más, muchas gracias por todo.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/08/15/%c2%bfse-puede-comprar-el-tiempo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Copia de seguridad de TODOS tus calendarios de google.</title>
		<link>http://blog.txurdi.net/2008/07/14/copia-de-seguridad-de-todos-tus-calendarios-de-google/</link>
		<comments>http://blog.txurdi.net/2008/07/14/copia-de-seguridad-de-todos-tus-calendarios-de-google/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 16:46:29 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category><![CDATA[google calendar]]></category>

		<category><![CDATA[iCal]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/?p=61</guid>
		<description><![CDATA[Hoy me he encontrado con una utilidad muy interesante y un poco escondida de Google calendar. Si tienes varios calendarios, y quieres guardarlos en el ordenador, no tienes mas que loguearte en google calendar usando tu usuario-pass, y seguido ir a esta dirección:
https://www.google.com/calendar/exporticalzip
Y listo, te crea un archivo comprimido en ZIP con todos tus calendarios.
]]></description>
			<content:encoded><![CDATA[<p>Hoy me he encontrado con una utilidad muy interesante y un poco escondida de Google calendar. Si tienes varios calendarios, y quieres guardarlos en el ordenador, no tienes mas que loguearte en google calendar usando tu usuario-pass, y seguido ir a esta dirección:<br />
https://www.google.com/calendar/exporticalzip<br />
Y listo, te crea un archivo comprimido en ZIP con todos tus calendarios.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/07/14/copia-de-seguridad-de-todos-tus-calendarios-de-google/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Capitulo VIII: Resumen y listado de artículos de ayuda</title>
		<link>http://blog.txurdi.net/2008/06/17/capitulo-viii-resumen-y-listado-de-articulos-de-ayuda/</link>
		<comments>http://blog.txurdi.net/2008/06/17/capitulo-viii-resumen-y-listado-de-articulos-de-ayuda/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 18:25:05 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RoR]]></category>

		<category><![CDATA[Servidor-web]]></category>

		<category><![CDATA[desarrollo-web]]></category>

		<category><![CDATA[Apache]]></category>

		<category><![CDATA[ayuda]]></category>

		<category><![CDATA[Capistrano]]></category>

		<category><![CDATA[links]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/2008/06/17/capitulo-viii-resumen-y-listado-de-articulos-de-ayuda/</guid>
		<description><![CDATA[Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.
Artículos seguidos para realizar este articulo:

http://articles.slicehost.com/2008/4/25/ubuntu-hardy-setup-page-1
http://articles.slicehost.com/2008/4/25/ubuntu-hardy-setup-page-2
http://articles.slicehost.com/2008/4/30/ubuntu-hardy-ruby-on-rails
http://articles.slicehost.com/2008/5/9/ubuntu-hardy-mongrel-and-mongrel-clusters
http://articles.slicehost.com/2008/4/25/ubuntu-hardy-installing-apache-and-php5
http://articles.slicehost.com/2008/5/9/ubuntu-hardy-apache-rails-and-mongrels
http://articles.slicehost.com/2007/9/5/introduction-to-svnserve
http://articles.slicehost.com/2007/9/5/using-ssh-with-svnserve
http://articles.slicehost.com/2007/9/6/multiple-projects-and-subversion
http://articles.slicehost.com/2007/9/6/multiple-repositories-and-subversion

Otros Artículos de ayuda:

Para aprender la configuración de Apache2 (a2dissite, a2ensite, a2dismod, a2enmod):

http://articles.slicehost.com/2008/4/28/ubuntu-hardy-apache-config-layout

Para configurar Apache2 de manera más optima:

http://articles.slicehost.com/2008/4/28/ubuntu-hardy-apache-configuration-1
http://articles.slicehost.com/2008/4/28/ubuntu-hardy-apache-configuration-2

Virtual Hosts en Apache:

http://articles.slicehost.com/2008/4/29/ubuntu-hardy-apache-virtual-hosts-1
http://articles.slicehost.com/2008/4/29/ubuntu-hardy-apache-virtual-hosts-2

Conceptos sobre como funcionan las llamadas cliente [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Este es un artículo que forma parte de un <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">grupo de artículos para aprender a configurar un servidor web</a> que te pueden interesar.</p></blockquote>
<p><strong>Artículos seguidos para realizar este articulo:</strong></p>
<ul>
<li>http://articles.slicehost.com/2008/4/25/ubuntu-hardy-setup-page-1</li>
<li>http://articles.slicehost.com/2008/4/25/ubuntu-hardy-setup-page-2</li>
<li>http://articles.slicehost.com/2008/4/30/ubuntu-hardy-ruby-on-rails</li>
<li>http://articles.slicehost.com/2008/5/9/ubuntu-hardy-mongrel-and-mongrel-clusters</li>
<li>http://articles.slicehost.com/2008/4/25/ubuntu-hardy-installing-apache-and-php5</li>
<li>http://articles.slicehost.com/2008/5/9/ubuntu-hardy-apache-rails-and-mongrels</li>
<li>http://articles.slicehost.com/2007/9/5/introduction-to-svnserve</li>
<li>http://articles.slicehost.com/2007/9/5/using-ssh-with-svnserve</li>
<li>http://articles.slicehost.com/2007/9/6/multiple-projects-and-subversion</li>
<li>http://articles.slicehost.com/2007/9/6/multiple-repositories-and-subversion</li>
</ul>
<p><strong>Otros Artículos de ayuda:</strong><br />
<span id="more-59"></span><br />
Para aprender la configuración de Apache2 (a2dissite, a2ensite, a2dismod, a2enmod):</p>
<ul>
<li>http://articles.slicehost.com/2008/4/28/ubuntu-hardy-apache-config-layout</li>
</ul>
<p>Para configurar Apache2 de manera más optima:</p>
<ul>
<li>http://articles.slicehost.com/2008/4/28/ubuntu-hardy-apache-configuration-1</li>
<li>http://articles.slicehost.com/2008/4/28/ubuntu-hardy-apache-configuration-2</li>
</ul>
<p>Virtual Hosts en Apache:</p>
<ul>
<li>http://articles.slicehost.com/2008/4/29/ubuntu-hardy-apache-virtual-hosts-1</li>
<li>http://articles.slicehost.com/2008/4/29/ubuntu-hardy-apache-virtual-hosts-2</li>
</ul>
<p>Conceptos sobre como funcionan las llamadas cliente servidor, y como tener multiples dominios (vhosts):</p>
<ul>
<li>http://articles.slicehost.com/2008/5/28/how-to-serve-multiple-domains</li>
</ul>
<p>Copias de seguridad:</p>
<ul>
<li>http://articles.slicehost.com/2007/10/11/automating-a-daily-rsync-backup</li>
<li>http://articles.slicehost.com/2007/10/10/rsync-exclude-files-and-folders</li>
<li>http://articles.slicehost.com/2007/10/9/backing-up-your-files-with-rsync</li>
</ul>
<p>Subversion:</p>
<ul>
<li>http://articles.slicehost.com/subversion</li>
</ul>
<p>Capistrano:</p>
<ul>
<li>http://articles.slicehost.com/2008/1/17/capistrano-series-local-setup-and-capistrano</li>
</ul>
<p>Capítulo anterior: <a href="http://blog.txurdi.net/2008/06/17/capitulo-vii-capistrano-el-%e2%80%9cdeployador%e2%80%9d/">Capitulo VII: Capistrano el “deployador”</a><br />
Resumen: <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">Configurar un servidor web</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-viii-resumen-y-listado-de-articulos-de-ayuda/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Capitulo VII: Capistrano el “deployador”</title>
		<link>http://blog.txurdi.net/2008/06/17/capitulo-vii-capistrano-el-%e2%80%9cdeployador%e2%80%9d/</link>
		<comments>http://blog.txurdi.net/2008/06/17/capitulo-vii-capistrano-el-%e2%80%9cdeployador%e2%80%9d/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 18:24:53 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RoR]]></category>

		<category><![CDATA[Servidor-web]]></category>

		<category><![CDATA[desarrollo-web]]></category>

		<category><![CDATA[cap deploy]]></category>

		<category><![CDATA[Capistrano]]></category>

		<category><![CDATA[svn+cap]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/2008/06/17/capitulo-vii-capistrano-el-%e2%80%9cdeployador%e2%80%9d/</guid>
		<description><![CDATA[Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.
Vamos a por el siguiente paso, el que nos ayuda a &#8220;deployar&#8221;: Capistrano
Antes de nada, creamos la app Rails en nuestro proyecto:

rails project1 -c

La opción &#8220;-c&#8221;, añade todos los ficheros a subversion (pero [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Este es un artículo que forma parte de un <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">grupo de artículos para aprender a configurar un servidor web</a> que te pueden interesar.</p></blockquote>
<p>Vamos a por el siguiente paso, el que nos ayuda a &#8220;deployar&#8221;: Capistrano<br />
Antes de nada, creamos la app Rails en nuestro proyecto:</p>
<pre lang="bash">
rails project1 -c
</pre>
<blockquote><p>La opción &#8220;-c&#8221;, añade todos los ficheros a subversion (pero sin hacer commit)</p></blockquote>
<p>Ok, ahora, vamos a decirle a Subversion que ignore algunos ficheros que no queremos que gestione en las versiones:<br />
<span id="more-58"></span></p>
<pre lang="bash">
cd project1
svn commit -m "Initial commit of project"
svn propset svn:ignore "*" log/
svn propset svn:ignore "*" tmp/
svn commit -m "added ignore to tmp and log"
</pre>
<p>Vale, tenemos el Proyecto preparado, ahora, instala Capistrano:</p>
<pre lang="bash">
sudo gem install capistrano
</pre>
<p>Para ver la versión de Capistrano instalada:</p>
<pre lang="bash">
cap -V

Capistrano v2.1.0
</pre>
<p>Lo primero que hay que hacer es decirle al proyecto que use Capistrano, ¿o a Capistrano que gestione el proyecto?, es lo mismo, &#8220;capifiar&#8221; el proyecto: (desde el root de tu aplicación)</p>
<pre lang="bash">
capify .
</pre>
<p>Esto genera dos archivos en nuestro proyecto, que tenemos que añadir a Subversion:</p>
<pre lang="bash">
svn status

?      Capfile
?      config/deploy.rb

svn add Capfile
A         Capfile

svn add config/deploy.rb
A         config/deploy.rb

svn commit -m "yay, I capified it..."
</pre>
<p>Vamos a preparar el archivo de configuración de capistrano &#8220;config/deploy.rb&#8221;<br />
Por defecto es más o menos así:</p>
<pre lang="bash">
set :application, "set your application name here"
set :repository,  "set your repository location here"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
# set :deploy_to, "/var/www/#{application}"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, "your app-server here"
role :web, "your web-server here"
role :db,  "your db-server here", :primary => true
</pre>
<p>Tenemos que rellenarlo con nuestros datos de servidor:</p>
<pre lang="bash">
set :application, "domain.com"
set :user, "demo"
set :repository,  "svn+project1ssh://123.45.67.890/home/demo/repository/project1"
set :port, 30000
set :deploy_to, "/home/demo/public_html/#{application}"
set :location, "domain2.com"
role :app, location
role :web, location
role :db,  location, :primary => true
</pre>
<p>Suficiente, vamos a probarlo, cruza los dedos y escribe:</p>
<pre lang="bash">
cap deploy:setup
</pre>
<p>Si todo ha ido bien, tendremos una carpeta nueva en nuestro public_html del servidor, preparada para servir. Dentro de esa carpeta hay dos subcarpetas; &#8220;releases&#8221; donde se guardara la versión de producción (y las copias de seguridad de cada deploy) y &#8220;shared&#8221; donde se guardan los ficheros que no cambian (logs, pids y informaciones de systema).<br />
Ya que nuestro repositorio está en el mismo servidor que el Apache, vamos a poner las cosas un poco más simples: (cambia esto en el deploy.rb)</p>
<pre lang="bash">
set :deploy_via, :copy
</pre>
<p>Y si quieres que el usuario encargado de parar y reiniciar los Mongrels sea diferente:</p>
<pre lang="bash">
set :runner, user
</pre>
<p>Pero todavía nos queda explicarle como iniciar los Mongrel: (desde nuestro PC)</p>
<pre lang="bash">
touch script/spin
svn propset svn:executable on script/spin
</pre>
<p>En el fichero creado ay que escribir lo siguiente:</p>
<pre lang="bash">
/home/demo/public_html/domain.com/current/script/process/spawner -p 8000 -i 2 -e production
</pre>
<p>Y subirlo:</p>
<pre lang="bash">
svn add script/spin
svn commit -m "added script/spin"
</pre>
<p>Todo preparado para el primer deploy:</p>
<pre lang="bash">
cap deploy:cold
</pre>
<p>Jur jur&#8230; Si todo va bien, este comando ha hecho lo siguiente:</p>
<ul>
<li>Descarga la última versión del repositorio</li>
<li>La comprime en un archivo temporal</li>
<li>La sube al servidor</li>
<li>La descomprime</li>
<li>Copia el código donde debe y crea algunos enlaces simbólicos y demás. (lo prepara)</li>
<li>Inicia los Mongrels definidos en &#8220;script/spin&#8221;</li>
</ul>
<p>Recuerda hacer un vhost, que tenga las siguientes URLs:</p>
<pre lang="bash">
access_log --> /home/demo/public_html/domain.com/shared/log/access.log;
error_log --> /home/demo/public_html/domain.com/shared/log/error.log;
root --> /home/demo/public_html/domain.com/current/public/
</pre>
<p>Capítulo anterior: <a href="http://blog.txurdi.net/2008/06/17/capitulo-vi-gestion-de-versiones-con-subversion/">Capitulo VI: Gestión de versiones con Subversion</a><br />
Siguiente capítulo: <a href="http://blog.txurdi.net/2008/06/17/capitulo-viii-resumen-y-listado-de-articulos-de-ayuda/">Capitulo VIII: Resumen y listado de artículos de ayuda</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-vii-capistrano-el-%e2%80%9cdeployador%e2%80%9d/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Capitulo VI: Gestión de versiones con Subversion</title>
		<link>http://blog.txurdi.net/2008/06/17/capitulo-vi-gestion-de-versiones-con-subversion/</link>
		<comments>http://blog.txurdi.net/2008/06/17/capitulo-vi-gestion-de-versiones-con-subversion/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 18:22:32 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RoR]]></category>

		<category><![CDATA[Servidor-web]]></category>

		<category><![CDATA[desarrollo-web]]></category>

		<category><![CDATA[subversion]]></category>

		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/2008/06/17/capitulo-vi-gestion-de-versiones-con-subversion/</guid>
		<description><![CDATA[Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.
Empecemos con el gestor de versiones: Subversion:

sudo aptitude install subversion

vamos a poner el repositorio en el mismo servidor:

mkdir /home/txurdi/repositorio
svnadmin create /home/txurdi/repositorio/project1


Esto ya lo expliqué en otro POST, por ahora lo enlazo, y cuando [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Este es un artículo que forma parte de un <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">grupo de artículos para aprender a configurar un servidor web</a> que te pueden interesar.</p></blockquote>
<p>Empecemos con el gestor de versiones: Subversion:</p>
<pre lang="bash">
sudo aptitude install subversion
</pre>
<p>vamos a poner el repositorio en el mismo servidor:</p>
<pre lang="bash">
mkdir /home/txurdi/repositorio
svnadmin create /home/txurdi/repositorio/project1
</pre>
<p><span id="more-57"></span><br />
Esto ya lo expliqué en otro POST, por ahora lo enlazo, y cuando tenga tiempo lo edito y lo personalizo más:<br />
<a href="http://blog.txurdi.net/2008/05/05/que-es-eso-de-los-repositorsios-svn/">Que es eso de los repositorsios SVN?</a><br />
<a href="http://blog.txurdi.net/2008/05/05/usar-svn-en-una-aplicacion-web-ror/">Usar SVN en una aplicación web (RoR)</a></p>
<p>Ahora, desde tu PC, puedes descargarte el código y empezar a trabajar:</p>
<pre lang="bash">
svn co svn+project1ssh://123.45.67.890/home/txurdi/repository/project1
</pre>
<p>Capítulo anterior: <a href="http://blog.txurdi.net/2008/06/17/capitulo-v-apache-y-php-y-ror/">Capitulo V: Apache y PHP</a><br />
Siguiente capítulo: <a href="http://blog.txurdi.net/2008/06/17/capitulo-vii-capistrano-el-%e2%80%9cdeployador%e2%80%9d/">Capitulo VII: Capistrano el “deployador”</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-vi-gestion-de-versiones-con-subversion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Capitulo V: Apache y PHP y RoR</title>
		<link>http://blog.txurdi.net/2008/06/17/capitulo-v-apache-y-php-y-ror/</link>
		<comments>http://blog.txurdi.net/2008/06/17/capitulo-v-apache-y-php-y-ror/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 13:43:44 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RoR]]></category>

		<category><![CDATA[Servidor-web]]></category>

		<category><![CDATA[desarrollo-web]]></category>

		<category><![CDATA[apache2]]></category>

		<category><![CDATA[PHP5]]></category>

		<category><![CDATA[vhost]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/2008/06/17/capitulo-v-apache-y-php-y-ror/</guid>
		<description><![CDATA[Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.
Ahora, instalemos Apache:

sudo aptitude install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

En la instalación, dará una pequeña advertencia:

apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName

No te preocupes, vamos [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Este es un artículo que forma parte de un <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">grupo de artículos para aprender a configurar un servidor web</a> que te pueden interesar.</p></blockquote>
<p>Ahora, instalemos Apache:</p>
<pre lang="bash">
sudo aptitude install apache2 apache2.2-common apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
</pre>
<p>En la instalación, dará una pequeña advertencia:</p>
<pre lang="bash">
apache2: Could not reliably determine the server's fully qualified domain name,
using 127.0.0.1 for ServerName
</pre>
<p>No te preocupes, vamos a solucionarlo. Abre el archivo de configuración de Apache:<br />
<span id="more-56"></span></p>
<pre lang="bash">
sudo nano /etc/apache2/apache2.conf
</pre>
<p>Y al final del archivo escribe lo siguiente:</p>
<pre lang="bash">
ServerName txurdi
</pre>
<p>Guarda el fichero y reinicia apache (reiniciando de esta manera no mata posibles conexiones abiertas)</p>
<pre lang="bash">
sudo apache2ctl graceful
</pre>
<p>Ya está, si pones tu IP (http://123.45.67.890) en <strike>Internet Explorer</strike> tu navegador favorito (firefox o safari), podrás ver la página por defecto de Apache.<br />
Breve inciso para instalar postfix:</p>
<pre lang="bash">
sudo aptitude install postfix -y
</pre>
<p>Vamos a instalar también PHP (si no necesitas saltate este paso)</p>
<pre lang="bash">
sudo aptitude install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd \
php5-imagick php5-mcrypt php5-memcache php5-mhash php5-mysql php5-pspell php5-snmp \
php5-sqlite php5-xmlrpc php5-xsl
</pre>
<p>Hemos instalado unos cuantos módulos que igual no necesitas, quitalos a tu antojo.<br />
Recargamos Apache:</p>
<pre lang="bash">
sudo /etc/init.d/apache2 reload
</pre>
<p>OK, vamos a probar con una nueva aplicación de RoR:</p>
<pre lang="bash">
cd ~/public_html
rails railsapp
</pre>
<p>Vamos a aprobechar ahora para activar algunos módulos de Apache que suelen ser útiles:</p>
<pre lang="bash">
sudo a2enmod proxy
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http
sudo a2enmod rewrite
</pre>
<p>y reiniciamos Apache:</p>
<pre lang="bash">
sudo /etc/init.d/apache2 force-reload
</pre>
<p>Vamos a crear un cluster (como hemos aprendido antes)</p>
<pre lang="bash">
cd ~/public_html/railsapp
mongrel_rails cluster::configure -e production -p 5000 -N 3 -c /home/txurdi/public_html/railsapp -a 127.0.0.1
</pre>
<p>Si miramos el archivo &#8220;config/mongrel_cluster.yml&#8221;:</p>
<pre lang="bash">
cwd: /home/txurdi/public_html/railsapp
log_file: log/mongrel.log
port: "5000"
environment: production
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 3
</pre>
<p>Creamos el enlace simbólico para que se lance al reiniciar y lo lanzamos nosotros manualmente ahora:</p>
<pre lang="bash">
sudo ln -s /home/txurdi/public_html/railsapp/config/mongrel_cluster.yml /etc/mongrel_cluster/railsapp.yml
mongrel_cluster_ctl start
</pre>
<p>Y vamos a crear un Virtual Host en Apache:</p>
<pre lang="bash">
sudo nano /etc/apache2/sites-available/txurdi.net
</pre>
<p>Escribimos lo siguiente (+o-):</p>
<pre lang="bash">
<virtualhost *:80="">
  ServerName txurdi.ner
  ServerAlias www.txurdi.net

  DocumentRoot /home/txurdi/public_html/railsapp/public

  RewriteEngine On
<proxy balancer:="" mongrel1="">
    BalancerMember http://127.0.0.1:5000
    BalancerMember http://127.0.0.1:5001
    BalancerMember http://127.0.0.1:5002
  </proxy>

  # Redirect all non-static requests to thin
  RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
  RewriteRule ^/(.*)$ balancer://mongrel1%{REQUEST_URI} [P,QSA,L]

  ProxyPass / balancer://mongrel1/
  ProxyPassReverse / balancer://mongrel1/
  ProxyPreserveHost on
<proxy *="">
    Order deny,allow
    Allow from all
  </proxy>

  # Custom log file locations
  ErrorLog  /home/txurdi/public_html/railsapp/log/error.log
  CustomLog /home/txurdi/public_html/railsapp/log/access.log combined

</virtualhost>
</pre>
<p>Activamos el Virtual Host que acabamos de crear y recargamos Apache para que lo conozca:</p>
<pre lang="bash">
sudo a2ensite txurdi.net
sudo /etc/init.d/apache2 reload
</pre>
<p>Si ahora accedes via navegador a tu dominio (en nuestro caso era txurdi.net), verás la página por defecto de Rails <img src='http://blog.txurdi.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>Ok, ya tenemos el server funcionando, pero ¿como hacemos modificaciones en la página? Puf, vaya liada, conectarnos por SSH y cambiar directamente con Vim o Nano. O también podríamos montarnos la carpeta principal en nuestro PC&#8230; No, no, no&#8230; eso no sería muy prudente. Vamos a ver otras posibilidades: Subversion y Capistrano.</p>
<p>Capítulo anterior: <a href="http://blog.txurdi.net/2008/06/17/capitulo-iv-mongrel/">Capitulo IV: Mongrel</a><br />
Siguiente capítulo: <a href="http://blog.txurdi.net/2008/06/17/capitulo-vi-gestion-de-versiones-con-subversion/">Capitulo VI: Gestión de versiones con Subversion</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-v-apache-y-php-y-ror/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Capitulo IV: Mongrel</title>
		<link>http://blog.txurdi.net/2008/06/17/capitulo-iv-mongrel/</link>
		<comments>http://blog.txurdi.net/2008/06/17/capitulo-iv-mongrel/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 13:26:33 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RoR]]></category>

		<category><![CDATA[Servidor-web]]></category>

		<category><![CDATA[desarrollo-web]]></category>

		<category><![CDATA[Mongrel]]></category>

		<category><![CDATA[Mongrel cluster]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/2008/06/17/capitulo-iv-mongrel/</guid>
		<description><![CDATA[Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.
Instalemos Mongrel [Web oficial de Mongrel] (que es una gema, osea que simple):

sudo gem instal mongrel

Nos instalará alguna otra gema necesaria si no la tenemos ya instalada.
Mongrel tiene 3 instrucciones básicas (start, stop [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Este es un artículo que forma parte de un <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">grupo de artículos para aprender a configurar un servidor web</a> que te pueden interesar.</p></blockquote>
<p>Instalemos Mongrel [<a href="http://mongrel.rubyforge.org/">Web oficial de Mongrel</a>] (que es una gema, osea que simple):</p>
<pre lang="bash">
sudo gem instal mongrel
</pre>
<p>Nos instalará alguna otra gema necesaria si no la tenemos ya instalada.<br />
Mongrel tiene 3 instrucciones básicas (start, stop y restart), pero se puede combinar con muchos parámetros; por ejemplo, si queremos lanzar un Mongrel escuchando en el puerto 6000, y que esté en el entorno de producción:<br />
<span id="more-55"></span></p>
<pre lang="bash">
mongrel_rails start -e production -p 6000 -d
</pre>
<blockquote><p>El &#8220;-d&#8221; del final es para lanzarlo como demonio, vamos que se queda como un proceso que no te molesta en tu terminal, y que no se muere cuando cierras el terminal.</p></blockquote>
<blockquote><p>El comando hay que lanzarlo desde la raiz de tu aplicación, &#8220;rails directory&#8221;.</p></blockquote>
<p>Vamos a ir un poco más lejos instalando un cluster de Mongrels, que son un grupo de Mongrels que funcionan en común.<br />
Primero instalamos:</p>
<pre lang="bash">
sudo gem install mongrel_cluster
</pre>
<p>Para lanzar un cluster de 2 Mongrels empezando en el puerto 8000, sería algo así:</p>
<pre lang="bash">
mongrel_rails cluster::configure -e production -p 8000 -N 2 -c /home/demo/public_html/testapp -a 127.0.0.1
</pre>
<blockquote><p>OJO: La ruta completa y si queréis mas ayuda &#8220;mongrel_rails cluster::configure -h&#8221;</p></blockquote>
<p>El comando genera un archivo en formato YAML, que puedes configurar a tu gusto si no quieres lanzarlo otra vez. El fichero queda algo como esto:</p>
<pre lang="bash">
cwd: /home/demo/public_html/testapp
log_file: log/mongrel.log
port: "8000"
environment: production
address: 127.0.0.1
pid_file: tmp/pids/mongrel.pid
servers: 2
</pre>
<p>Para iniciar, parar o reiniciar el cluster, desde la raiz de la aplicación:</p>
<pre lang="bash">
mongrel_rails cluster::start
...  o ...
mongrel_rails cluster::restart
...  o ...
mongrel_rails cluster::stop
</pre>
<p>Vamos a crear un script de inicio para que se lance el cluster cuando reiniciamos el servidor:<br />
Primero, creamos un enlace: (uno por cada aplicación que tengamos instalada)</p>
<pre lang="bash">
sudo mkdir /etc/mongrel_cluster
sudo ln -s /home/demo/public_html/testapp/config/mongrel_cluster.yml /etc/mongrel_cluster/testapp.yml
</pre>
<p>Ahora, copiamos el script de inicio de la gema en init.d, lo hacemos ejecutable y le aplicamos el runlevel:</p>
<pre lang="bash">
sudo cp /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/
sudo chmod +x /etc/init.d/mongrel_cluster
sudo /usr/sbin/update-rc.d -f mongrel_cluster defaults
</pre>
<p>Debe ser más fácil con &#8220;thin&#8221; o &#8220;mod_rails&#8221;, pero los tengo en mi lista de TO-DO <img src='http://blog.txurdi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
Entonces, ahora, para iniciar, parar o reiniciar:</p>
<pre lang="bash">
mongrel_cluster_ctl start
...
mongrel_cluster_ctl stop
...
mongrel_cluster_ctl restart
</pre>
<p>Y para ver si está todo ok:</p>
<pre lang="bash">
mongrel_cluster_ctl status
</pre>
<p>Lo que nos da algo como:</p>
<pre lang="bash">
Checking all mongrel_clusters...
mongrel_rails cluster::status -C testapp.yml
found pid_file: tmp/pids/mongrel.8000.pid
found mongrel_rails: port 8000, pid 2343

found pid_file: tmp/pids/mongrel.8001.pid
found mongrel_rails: port 8001, pid 2346
</pre>
<p>Capítulo anterior: <a href="http://blog.txurdi.net/2008/06/17/capitulo-iii-instalar-ruby-on-rails/">Capitulo III: Instalar Ruby on Rails</a><br />
Siguiente capítulo: <a href="http://blog.txurdi.net/2008/06/17/capitulo-v-apache-y-php-y-ror/">Capitulo V: Apache y PHP</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-iv-mongrel/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Capitulo III: Instalar Ruby on Rails</title>
		<link>http://blog.txurdi.net/2008/06/17/capitulo-iii-instalar-ruby-on-rails/</link>
		<comments>http://blog.txurdi.net/2008/06/17/capitulo-iii-instalar-ruby-on-rails/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 13:16:32 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RoR]]></category>

		<category><![CDATA[Servidor-web]]></category>

		<category><![CDATA[desarrollo-web]]></category>

		<category><![CDATA[gem]]></category>

		<category><![CDATA[gema]]></category>

		<category><![CDATA[Ruby on rails]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/2008/06/17/capitulo-iii-instalar-ruby-on-rails/</guid>
		<description><![CDATA[Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.
Instalemos ruby y sqlite:

sudo aptitude install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8 libreadline-ruby1.8 libruby1.8 libopenssl-ruby sqlite3 libsqlite3-ruby1.8

Necesitamos crear algunos simlinks:

sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby
sudo ln -s /usr/bin/ri1.8 /usr/bin/ri
sudo ln -s /usr/bin/rdoc1.8 /usr/bin/rdoc
sudo ln -s [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Este es un artículo que forma parte de un <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">grupo de artículos para aprender a configurar un servidor web</a> que te pueden interesar.</p></blockquote>
<p>Instalemos ruby y sqlite:</p>
<pre lang="bash">
sudo aptitude install ruby1.8-dev ruby1.8 ri1.8 rdoc1.8 irb1.8 libreadline-ruby1.8 libruby1.8 libopenssl-ruby sqlite3 libsqlite3-ruby1.8
</pre>
<p>Necesitamos crear algunos simlinks:</p>
<pre lang="bash">
sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby
sudo ln -s /usr/bin/ri1.8 /usr/bin/ri
sudo ln -s /usr/bin/rdoc1.8 /usr/bin/rdoc
sudo ln -s /usr/bin/irb1.8 /usr/bin/irb
</pre>
<p>Veamos que version de ruby tenemos:<br />
<span id="more-54"></span></p>
<pre lang="bash">
ruby -v
...
ruby 1.8.6 (2007-09-24 patchlevel 111) [x86_64-linux]
</pre>
<p>Vamos a instalar rubygems desde el codigo fuente, porque es importante tener la última versión estable (y porque lo dice en el manual que traduzco <img src='http://blog.txurdi.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<pre lang="bash">
mkdir ~/sources
cd ~/sources
</pre>
<p>Descargamos la última versión (en el momento que escribo esto, dicen que la 1.1.0).<br />
Y desempaquetamos:</p>
<pre lang="bash">
wget http://rubyforge.org/frs/download.php/34638/rubygems-1.1.0.tgz
tar xzvf rubygems-1.1.0.tgz
cd  rubygems-1.1.0
</pre>
<p>Compilamos y creamos un enlace simbólico:</p>
<pre lang="bash">
sudo ruby setup.rb
...
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
</pre>
<p>Para ver la versión de gemas que acabamos de intalar:</p>
<pre lang="bash">
gem -v
...
1.1.0
</pre>
<p>Actualizamos un poco:</p>
<pre lang="bash">
sudo gem update
</pre>
<p>OJO, si tenéis un slice de poca memoria, no hagáis un <strong><strike>&#8220;sudo gem update &#8211;system&#8221;</strike></strong>, porque actualizaría a la 1.1.1 que os va a dar problemillas de memoria&#8230;<br />
Bueno, para ahorrar memoria, al instalar RAILS, lo vamos a hacer sin instalar la documentación:</p>
<pre lang="bash">
sudo gem install rails --no-rdoc --no-ri
</pre>
<p>Podemos ver la lista de gemas instaladas así:</p>
<pre lang="bash">
sudo gem list
</pre>
<p>Comprobemos que está todo bien:</p>
<pre lang="bash">
irb
#irb(main):001:0>
require 'sqlite3'
=> true
#irb(main):002:0> exit
</pre>
<p>Si no dice &#8220;true&#8221;, la has pifiado, vuelve para arriba&#8230;<br />
Si dice true, perfecto, ya está Ruby on Rails funcionando!!</p>
<p>Capítulo anterior: <a href="http://blog.txurdi.net/2008/06/17/capitulo-ii-actualizacion-del-so-y-ponerlo-bonito/">Capitulo II: Actualizacion del SO y ponerlo bonito</a><br />
Siguiente capítulo: <a href="http://blog.txurdi.net/2008/06/17/capitulo-iv-mongrel/">Capitulo IV: Mongrel</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-iii-instalar-ruby-on-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Capitulo II: Actualizacion del SO y ponerlo bonito</title>
		<link>http://blog.txurdi.net/2008/06/17/capitulo-ii-actualizacion-del-so-y-ponerlo-bonito/</link>
		<comments>http://blog.txurdi.net/2008/06/17/capitulo-ii-actualizacion-del-so-y-ponerlo-bonito/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 13:13:09 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RoR]]></category>

		<category><![CDATA[Servidor-web]]></category>

		<category><![CDATA[desarrollo-web]]></category>

		<category><![CDATA[es_ES]]></category>

		<category><![CDATA[locale]]></category>

		<category><![CDATA[Ubuntu upgrade]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/2008/06/17/capitulo-ii-actualizacion-del-so-y-ponerlo-bonito/</guid>
		<description><![CDATA[Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.
Para revisar la versión que estamos usando (en nuestro caso Ubuntu 8.04 Hardy):

cat /etc/lsb-release

Lo que nos dará algo así:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04"

Para revisar la memoria usada:


free -m

Que nos dará algo así:

.     [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Este es un artículo que forma parte de un <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">grupo de artículos para aprender a configurar un servidor web</a> que te pueden interesar.</p></blockquote>
<p>Para revisar la versión que estamos usando (en nuestro caso Ubuntu 8.04 Hardy):</p>
<pre lang="bash">
cat /etc/lsb-release
</pre>
<p>Lo que nos dará algo así:</p>
<pre lang="bash">
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04"
</pre>
<p>Para revisar la memoria usada:<br />
<span id="more-53"></span></p>
<pre lang="bash">
free -m
</pre>
<p>Que nos dará algo así:</p>
<pre lang="bash">
.                  total       used       free     shared    buffers     cached
Mem:             254       43         211          0          3            74
-/+ buffers/cache:       26         228
Swap:            511        0           511
</pre>
<p>Como usaremos bastante el terminal, vamos a ponerle colorines atractivos y a añadir algunos aliases a estos comandos:</p>
<pre lang="bash">
nano ~/.bashrc
</pre>
<p>Aquí os dejo algunos colorines y aliases bastante chulos que me dejó un amigo, podéis actualizarlos a vuestro gusto:</p>
<pre lang="bash">
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color)
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ &#8216;
    ;;
*)
    PS1=&#8217;${debian_chroot:+($debian_chroot)}\u@\h:\w\$ &#8216;
    ;;
esac

# Comment in the above and uncomment this below for a color prompt
if [ $(whoami) == "root" ] ; then
        PS1=&#8217;${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ &#8216;
else
        PS1=&#8217;${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ &#8216;
fi

# If this is an xterm set the title to user@host:dir
case &#8220;$TERM&#8221; in
xterm*|rxvt*)
    PROMPT_COMMAND=&#8217;echo -ne &#8220;\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007&#8243;&#8216;
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ "$TERM" != "dumb" ]; then
    eval &#8220;`dircolors -b`&#8221;
    alias ls=&#8217;ls &#8211;color=auto&#8217;
    #alias dir=&#8217;ls &#8211;color=auto &#8211;format=vertical&#8217;
    #alias vdir=&#8217;ls &#8211;color=auto &#8211;format=long&#8217;
fi

# some more ls aliases
alias ll=&#8217;ls -lF -h&#8217;
alias la=&#8217;ls -lFa -h&#8217;
alias l=&#8217;ls -CF -h&#8217;

alias ..=&#8217;cd ..&#8217;
alias cd..=&#8217;cd ..&#8217;

alias rm=&#8217;rm -i&#8217;
alias cp=&#8217;cp -i&#8217;
alias mv=&#8217;mv -i&#8217;

alias upd=&#8217;aptitude update&#8217;
alias dist=&#8217;aptitude dist-upgrade&#8217;
alias qwea=&#8217;aptitude search&#8217;
alias asda=&#8217;aptitude show&#8217;
alias zxca=&#8217;aptitude install&#8217;
alias qwe=&#8217;apt-cache search&#8217;
alias asd=&#8217;apt-cache show&#8217;
alias zxc=&#8217;apt-get install&#8217;

alias apagar=&#8217;shutdown -h 0&#8242;
alias reiniciar=&#8217;shutdown -r 0&#8242;

alias syslog=&#8217;tail -f /var/log/syslog&#8217;
</pre>
<p>Echamos un vistazo a los repositorios que tenemos:</p>
<pre lang="bash">
sudo nano /etc/apt/sources.list
</pre>
<p>Tenemos los básicos, que por ser un servidor de producción nos son suficientes.</p>
<pre lang="bash">
deb http://archive.ubuntu.com/ubuntu/ hardy main restricted universe
deb-src http://archive.ubuntu.com/ubuntu/ hardy main restricted universe

deb http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe
deb-src http://archive.ubuntu.com/ubuntu/ hardy-updates main restricted universe

deb http://security.ubuntu.com/ubuntu hardy-security main restricted universe
deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted universe
</pre>
<p>Actualicemos todo:</p>
<pre lang="bash">
sudo aptitude update
</pre>
<p>Configuremos el LOCALE (el idioma del servidor):</p>
<pre lang="bash">
sudo locale-gen es_ES.UTF-8
...
sudo /usr/sbin/update-locale LANG=es_ES.UTF-8
</pre>
<p>Y miremos a ver si hay algo que upgradear:</p>
<pre lang="bash">
sudo aptitude safe-upgrade
sudo aptitude full-upgrade
</pre>
<p>Y ahora que estamos al día, vamos a instalar algunas &#8220;cosillas esenciales&#8221;:</p>
<pre lang="bash">
sudo aptitude install build-essential
</pre>
<p>Capítulo anterior: <a href="http://blog.txurdi.net/2008/06/17/capitulo-i-configuraciones-iniciales/">Capitulo I: Configuraciones iniciales</a><br />
Siguiente capítulo: <a href="http://blog.txurdi.net/2008/06/17/capitulo-iii-instalar-ruby-on-rails/">Capitulo III: Instalar Ruby on Rails</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-ii-actualizacion-del-so-y-ponerlo-bonito/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Capitulo I: Configuraciones iniciales</title>
		<link>http://blog.txurdi.net/2008/06/17/capitulo-i-configuraciones-iniciales/</link>
		<comments>http://blog.txurdi.net/2008/06/17/capitulo-i-configuraciones-iniciales/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 12:48:57 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[RoR]]></category>

		<category><![CDATA[Servidor-web]]></category>

		<category><![CDATA[desarrollo-web]]></category>

		<category><![CDATA[configuración]]></category>

		<category><![CDATA[howto]]></category>

		<category><![CDATA[iptables]]></category>

		<category><![CDATA[passwd]]></category>

		<category><![CDATA[root]]></category>

		<category><![CDATA[servidor]]></category>

		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/2008/06/17/capitulo-i-configuraciones-iniciales/</guid>
		<description><![CDATA[Este es un artículo que forma parte de un grupo de artículos para aprender a configurar un servidor web que te pueden interesar.
Lo primero de todo, tienes que entrar al servidor por SSH.

ssh root@123.45.67.89

Entramos como usuario root como excepción, será la única vez que lo hagamos, luego quitaremos acceso root al servidor.
Una vez dentro, lo [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Este es un artículo que forma parte de un <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">grupo de artículos para aprender a configurar un servidor web</a> que te pueden interesar.</p></blockquote>
<p>Lo primero de todo, tienes que entrar al servidor por SSH.</p>
<pre lang="bash">
ssh root@123.45.67.89
</pre>
<p>Entramos como usuario root como excepción, será la única vez que lo hagamos, luego quitaremos acceso root al servidor.<br />
Una vez dentro, lo primero, cambiar la contraseña de root:</p>
<pre lang="bash">
passw
</pre>
<p>y añadir un usuario que usaremos como principal</p>
<pre lang="bash">
adduser txurdi
</pre>
<p>Ahora, quitaremos acceso ssh al usuario root y daremos permisos al usuario txurdi, además de configurar algunas cosas para mayor seguridad:<br />
<span id="more-52"></span></p>
<pre lang="bash">
visudo
</pre>
<p>Añadimos al final del todo:</p>
<pre lang="bash">
txurdi   ALL=(ALL) ALL
</pre>
<blockquote><p>Para asegurarlo más, podemos copiar la clave pública nuestra en el server para acceder sin necesidad de escribir el pass cada vez. Ya lo escribí en otro Post [<a href="http://blog.txurdi.net/2008/05/05/acceder-por-ssh-sin-excribir-clave-clave-publica-privada/">Acceder por SSH sin escribir clave (clave publica-privada)</a>], por lo que no lo voy a repetir ahora.</p></blockquote>
<pre lang="bash">
nano /etc/ssh/sshd_config
</pre>
<p>Y cambiamos estos valores a nuestro gusto:</p>
<pre lang="bash">
Port 30000                           <--- Usa un puerto diferente si quieres
Protocol 2
PermitRootLogin no
PasswordAuthentication no       <-- Esto sólo si hacemos lo de la clave pública-privada
X11Forwarding no
UsePAM no
UseDNS no
AllowUsers txurdi
</pre>
<p>Ok, ahora vamos a configurar un poco las iptables. Si no lo entendéis muy bien (como yo) hacer un copy-paste y confiad en PickledOnion que es quien escribió el artículo original en inglés.<br />
Guardamos las reglas existentes en un archivo por si acaso:</p>
<pre lang="bash">
iptables-save > /etc/iptables.up.rules
</pre>
<p>Podemos ver las reglas existentes de la siguiente manera:</p>
<pre lang="bash">
iptables -L
</pre>
<p>Para modificarlas, creamos un fichero de texto nuevo:</p>
<pre lang="bash">
nano /etc/iptables.test.rules
</pre>
<p>En el que escribimos +o- lo siguiente:</p>
<pre lang="bash">
*filter

#  Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT

#  Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#  Allows all outbound traffic
#  You can modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

#  Allows SSH connections
#
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
#
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT
</pre>
<p>Y con esta sentencia, aplicamos los cambios:</p>
<pre lang="bash">
iptables-restore < /etc/iptables.test.rules
</pre>
<p>Si volvemos a mirar las reglas, vemos que han cambiado un poquito&#8230;</p>
<pre lang="bash">
iptables -L
</pre>
<p>Si todo es correcto, guardamos las reglas descritas arriba:</p>
<pre lang="bash">
iptables-save > /etc/iptables.up.rules
</pre>
<p>Ahora, hagamos que se apliquen las reglas cada vez que reiniciemos el servidor:</p>
<pre lang="bash">
nano /etc/network/interfaces
</pre>
<p>Solo hace falta añadir una línea para que quede +o- así:</p>
<pre lang="bash">
...
auto lo
iface lo inet loopback
pre-up iptables-restore < /etc/iptables.up.rules

# The primary network interface
...
</pre>
<p>Ahora que ya tenemos todo, vamos a hacer que se aplique toda la configuración de SSH reiniciando su demonio:</p>
<pre lang="bash">
/etc/init.d/ssh reload
</pre>
<p><strong>No salgas todavía</strong>, primero abre otro terminal y prueba que puedes acceder al servidor, no vaya a ser que hayamos hecho algo mal&#8230;</p>
<pre lang="bash">
ssh -p 30000 txurdi@123.45.67.890
</pre>
<p>Si todo ha ido bien, podrás loguearte al server, si no, la hemos pifiado en algún punto, repasa todos los pasos. Si sales de la consola de root, y no puedes loguearte por ssh, puedes usar la consola AJAX que ofrece slicehost desde el panel de administración de tu slice.</p>
<p>Capítulo anterior: <a href="http://blog.txurdi.net/2008/06/17/configurar-un-servidor-web/">Configurar un servidor web</a><br />
Siguiente capítulo: <a href="http://blog.txurdi.net/2008/06/17/capitulo-ii-actualizacion-del-so-y-ponerlo-bonito/">Capitulo II: Actualizacion del SO y ponerlo bonito</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-i-configuraciones-iniciales/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
