<?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>el blog de txurdi &#187; Servidor-web</title>
	<atom:link href="http://blog.txurdi.net/category/servidor-web/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>
	<lastBuildDate>Sun, 11 Apr 2010 13:29:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>La Porra sigue creciendo</title>
		<link>http://blog.txurdi.net/2009/06/02/la-porra-sigue-creciendo/</link>
		<comments>http://blog.txurdi.net/2009/06/02/la-porra-sigue-creciendo/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 16:47:51 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Servidor-web]]></category>
		<category><![CDATA[desarrollo-web]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[txurdi.net]]></category>
		<category><![CDATA[facebook app]]></category>
		<category><![CDATA[la porra]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/?p=274</guid>
		<description><![CDATA[
En Febrero del año pasado, con intención de aprender la API de facebook y meterme en el mundillo del desarrollo de aplicaciones, creé junto a Tabi, una aplicación de la que ya he hablado en este Blog, La Porra
La temporada del 2007-2008, acabó con 841 usuarios registrados, que hicieron 2534 apuestas.
Esta temporada, la 2008-2009, el [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.txurdi.net/wp-content/uploads/2008/05/logo-la-porra.jpg" alt="La Porra" title="La Porra" width="150" height="150" class="alignleft size-full wp-image-32" />
<p>En Febrero del año pasado, con intención de aprender la API de facebook y meterme en el mundillo del desarrollo de aplicaciones, creé junto a Tabi, una aplicación de la que ya he hablado en este Blog, <a href="http://apps.facebook.com/la_porra/">La Porra</a></p>
<p>La temporada del 2007-2008, acabó con 841 usuarios registrados, que hicieron 2534 apuestas.</p>
<p>Esta temporada, la 2008-2009, el número de visitas a crecido mucho más. Ha habido <strong>más de 8000 usuarios registrados</strong>, que han hecho <strong>más de 16.000 apuestas</strong> en <strong>más de 100.000 visitas</strong> y han dejado <strong>más de 500 comentarios</strong>.</p>
<p>Además, durante esta temporada se nos ha unido <a href="http://pelloirizar.com">Pello</a>, y nos han llamado de varias empresas para ofrecernos colaboración, que puede que el año que viene haga crecer más a nuestra pequeña.</p>
<p>Cualquier idea que se os ocurra para hacer mejorara la aplicación, siempre es bien venida&#8230;</p>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=274&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_274" class="akst_share_link" rel="nofollow">Compártelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2009/06/02/la-porra-sigue-creciendo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL, PHP, fechas e idiomas, vaya lio&#8230;</title>
		<link>http://blog.txurdi.net/2008/08/30/mysql-php-fechas-e-idiomas-vaya-lio/</link>
		<comments>http://blog.txurdi.net/2008/08/30/mysql-php-fechas-e-idiomas-vaya-lio/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 13:09:09 +0000</pubDate>
		<dc:creator>txurdi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Servidor-web]]></category>
		<category><![CDATA[desarrollo-web]]></category>
		<category><![CDATA[estándares]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[CEST]]></category>
		<category><![CDATA[CET]]></category>
		<category><![CDATA[time-zone]]></category>
		<category><![CDATA[uso horario]]></category>

		<guid isPermaLink="false">http://blog.txurdi.net/?p=64</guid>
		<description><![CDATA[Como comenté en el POST anterior, ya hemos lanzado La Porra, pero ahora quiero escribir aquí algunas conclusiones técnicas que he sacado respecto al tema de las diferencias horarias y los idiomas de las fechas tanto en MySQL como en PHP.
El servidor que uso es un Solaris, creo (Joyent me lo dio gratis y configurado), [...]]]></description>
			<content:encoded><![CDATA[<p>Como comenté en el POST anterior, ya hemos lanzado <a href="http://apps.new.facebook.com/la_porra">La Porra</a>, pero ahora quiero escribir aquí algunas conclusiones técnicas que he sacado respecto al <strong>tema de las diferencias horarias y los idiomas de las fechas tanto en MySQL como en PHP</strong>.</p>
<p>El servidor que uso es un Solaris, creo (<a href="http://joyent.com/developers/facebook/">Joyent</a> me lo dio gratis y configurado), y no sabía como cambiar la hora del sistema ni el idioma. Como no quería andar haciendo pruebas en el servidor de producción y no quería andar reiniciándolo, pensé en cambiar las configuraciones de PHP y MySQL. Aquí os dejo como lo he hecho:</p>
<p><span id="more-64"></span><br />
En Bilbao, usamos el uso horario CET ([bilbainada*] y el resto de centro Europa nos copia[/bilbainada]) en invierno y CEST en Verano.<br />
CET: Central European Time (GMT+2) (30 de Marzo &#8211; 26 de Octubre)<br />
CEST: Central European Summer Time (GMT+1) (26 de Octubre &#8211; 30 de Marzo)<br />
En el listado de usos horarios standar suele llamarse &#8220;Europe/Madrid&#8221;.</p>
<p>Pues bien, para cambiar el uso horario en PHP, en tiempo de ejecución, podemos hacerlo con <a href="http://es2.php.net/manual/es/function.date-default-timezone-set.php">date_default_timezone_set</a>:</p>
<pre lang="bash">date_default_timezone_set('CET');//o 'Europe/Madrid', pero yo no lo he conseguido hacer funcionar así, a ver que pasa cuando cambie el uso...
</pre>
<p>Y para cambiar el idioma en que se escribe la fecha, usamos <a href="http://es2.php.net/manual/es/function.setlocale.php">setlocale</a>:</p>
<pre lang="bash">setlocale(LC_ALL,'es_ES.UTF-8); //es_ES.UTF-8 tiene que estar en el sistema.
</pre>
<p>Cuando hemos cambiado setlocale, para que nos escriba Martes en vez de Tuesday, tenemos que usar la función <a href="http://es2.php.net/manual/es/function.strftime.php">strftime()</a>:</p>
<pre lang="bash">// %A - nombre completo del día de la semana de acuerdo a la localidad actual
// %B - nombre completo del mes de acuerdo a la localidad actual
// %d - día del mes como un número decimal (rango 01 a 31)
// %g - como %G, pero sin la centuria.
// %G - El año de 4-dígitos correspondiente al número de semana ISO (vea %V). Éste tiene el mismo formato y valor que %Y, con la excepción de que si el número de semana ISO pertenece al año siguiente o previo, ese año es usado en su lugar.
// %H - hora como un número decimal usando un reloj de 24 horas (rango 00 a 23)
// %I - hora como número decimal usando un reloj de 12 horas (rango 01 a 12)
// %j - dúa del año como un número decimal (rango 001 a 366)
// %m - mes como un número decimal (rango 01 a 12)
// %M - minuto como un número decimal
// %S - segundo como un número decimal
// %u - día de la semana como un número decimal [1,7], en donde 1 representa Lunes
// 'l, d \d\e F H:i'  ==>  '%A, %d de %B %H:%M'
echo strftime('%A, %d de %B %H:%M',$tiempo); //donde tiempo es un UNIX-TIMESTAMP
// Escribirá: sábado, 30 de agosto 14:45
</pre>
<p>Con eso, ya he podido ver la fecha-hora que aparece en pantalla en castellano, además de que la hora actual esté en la hora de aquí. Pero si en MySQL hago &#8220;now()&#8221; me sigue saliendo la hora del sistema. Para cambiar eso:</p>
<pre lang="bash">SET GLOBAL time_zone = 'Europe/Madrid';
</pre>
<p>(Puede que haya que reiniciar MySQL, o por lo menos salir y entrar de nuevo) Para ver si lo hemos cambiado bien:</p>
<pre lang="bash">SELECT @@global.time_zone, @@session.time_zone;
</pre>
<p>Donde pongo &#8220;Europe/Madrid&#8221;, se pueden poner otros time-zones cargados en Mysql.<br />
Cuando yo hice esto, no funcionó a la primera porque MySQL no tenía cargados los timezones, por lo que tuve que cargarlos desde el sistema, con un comando de MSQL:</p>
<pre lang="bash">mysql_tzinfo_to_sql "directorio_de_tz" | mysql -u root -p mysql
</pre>
<p>["directorio_de_tz" en mi caso era: "/usr/share/lib/zoneinfo"]<br />
Mas información sobre MySQL y este tema en <a href="http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html">la documentación de MySQL (9.7. MySQL Server Time Zone Support)</a>.<br />
</br><br />
¿conocéis otra manera de hacer esto? ¿tendré problemas más adelante? ¿que pasará cuando cambie el horario de verano? Iré actualizando este POST, tranquilos&#8230;<br />
</br></p>
<blockquote><p>Una bilbainada, a parte de un <a href="http://es.wikipedia.org/wiki/Bilbainadas">género musical</a>, es cualquier frase/acción ligeramente exagerada que sólo puede decir/hacer uno de Bilbao. Por ejemplo: <a href="http://www.guggenheim-bilbao.es/">Guggenheim Bilbao</a>, <a href="http://www.metrobilbao.net/">Metro Bilbao</a>, <a href="http://www.deia.com/es/impresa/2007/03/09/bizkaia/kirolak/345192.php">Una auténtica Bilbainada</a>, <a href="http://aberriberri.com/2008/02/29/una-bilboibainada-cuando-bilbao-ya-no-es-una-bilbainada/">Bilbainadas o no</a>, <a href="http://www.20minutos.es/noticia/188695/0/bilbainada/">Y no es una bilbainada</a> y <a href="http://www.degustalo.com/archivos/bilbainada/">Bilbainada Gastronómica</a>.</p></blockquote>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=64&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_64" class="akst_share_link" rel="nofollow">Compártelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/08/30/mysql-php-fechas-e-idiomas-vaya-lio/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</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>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=59&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_59" class="akst_share_link" rel="nofollow">Compártelo</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>
		<slash:comments>0</slash:comments>
		</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>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=58&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_58" class="akst_share_link" rel="nofollow">Compártelo</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>
		<slash:comments>0</slash:comments>
		</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>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=57&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_57" class="akst_share_link" rel="nofollow">Compártelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-vi-gestion-de-versiones-con-subversion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</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>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=56&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_56" class="akst_share_link" rel="nofollow">Compártelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-v-apache-y-php-y-ror/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</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>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=55&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_55" class="akst_share_link" rel="nofollow">Compártelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-iv-mongrel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</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>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=54&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_54" class="akst_share_link" rel="nofollow">Compártelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-iii-instalar-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</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\]\$ '
    ;;
*)
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    ;;
esac

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

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

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

# some more ls aliases
alias ll='ls -lF -h'
alias la='ls -lFa -h'
alias l='ls -CF -h'

alias ..='cd ..'
alias cd..='cd ..'

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

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

alias apagar='shutdown -h 0'
alias reiniciar='shutdown -r 0'

alias syslog='tail -f /var/log/syslog'
</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>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=53&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_53" class="akst_share_link" rel="nofollow">Compártelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-ii-actualizacion-del-so-y-ponerlo-bonito/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</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...</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...</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>
<p class="akst_link"><a href="http://blog.txurdi.net/?p=52&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_52" class="akst_share_link" rel="nofollow">Compártelo</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.txurdi.net/2008/06/17/capitulo-i-configuraciones-iniciales/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
