<?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>Jon Segador &#187; Servidores</title>
	<atom:link href="http://jonsegador.com/category/servidores/feed/" rel="self" type="application/rss+xml" />
	<link>http://jonsegador.com</link>
	<description>Desarrollador web y android, con todo lo que ello implica</description>
	<lastBuildDate>Wed, 16 May 2012 08:34:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Redireccionar a página de mantenimiento con htaccess, manteniendo los estilos css y las imágenes</title>
		<link>http://jonsegador.com/2011/11/redireccionar-pagina-mantenimiento-htaccess-manteniendo-estilos-css-imagenes/</link>
		<comments>http://jonsegador.com/2011/11/redireccionar-pagina-mantenimiento-htaccess-manteniendo-estilos-css-imagenes/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 19:29:44 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[302]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[imágenes]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[mantenimiento]]></category>
		<category><![CDATA[redirect]]></category>

		<guid isPermaLink="false">http://jonsegador.com/?p=575</guid>
		<description><![CDATA[Si vamos a realizar cambios en nuestra web y se tratan de cambios que pueden afectar al funcionamiento de la página (cambios en la base de datos, cambio de funcionalidades, etc), lo ideal es redirigir a una página de mantenimiento para informar a los usuarios mientras se realizan los cambios. En este caso lo vamos [...]]]></description>
			<content:encoded><![CDATA[<p>Si vamos a realizar cambios en nuestra web y se tratan de cambios que pueden afectar al funcionamiento de la página (cambios en la base de datos, cambio de funcionalidades, etc), lo ideal es redirigir a una <strong>página de mantenimiento</strong> para informar a los usuarios mientras se realizan los cambios. En este caso lo vamos a hacer editando el archivo <strong>.htaccess</strong> y dando <strong>permiso a nuestra ip para acceder</strong> a la web normalmente y poder ver los cambios. El resto de usuarios verán la página de mantenimiento a la que les redirigiremos.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="dos" style="font-family:monospace;">&lt;IfModule mod_rewrite.c&gt;
 RewriteEngine on
 RewriteCond <span style="color: #33cc33;">%</span><span style="color: #66cc66;">&#123;</span>REMOTE_ADDR<span style="color: #66cc66;">&#125;</span> !^<span style="color: #cc66cc;">999</span>\.999\.999\.999
 RewriteCond <span style="color: #33cc33;">%</span><span style="color: #66cc66;">&#123;</span>REQUEST_URI<span style="color: #66cc66;">&#125;</span> !/mantenimiento.html$ <span style="color: #66cc66;">&#91;</span>NC<span style="color: #66cc66;">&#93;</span>
 RewriteRule .* /mantenimiento.html <span style="color: #66cc66;">&#91;</span>R=<span style="color: #cc66cc;">302</span>,L<span style="color: #66cc66;">&#93;</span>
&lt;/IfModule&gt;</pre></td></tr></table></div>

<p>En la línea 3, cambiaremos la ip por la nuestra propia para poder acceder normalmente.<br />
La línea 4 indica que no redirija si ya estamos en la página de mantenimiento (para evitar un bucle infinito).<br />
Y en la línea 5 indicamos la ruta de la propia página de mantenimiento con una redirección 302 (<strong>redirección temporal</strong>).</p>
<p>Hasta aquí todo bien. El problema es que desde la página de mantenimiento no podemos acceder a las <strong>imágenes o estilos css</strong> porque también se ejecuta la redirección. Para evitar esto, añadiremos una línea más al código anterior:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="dos" style="font-family:monospace;">&lt;IfModule mod_rewrite.c&gt;
 RewriteEngine on
 RewriteCond <span style="color: #33cc33;">%</span><span style="color: #66cc66;">&#123;</span>REMOTE_ADDR<span style="color: #66cc66;">&#125;</span> !^<span style="color: #cc66cc;">999</span>\.999\.999\.999
 RewriteCond <span style="color: #33cc33;">%</span><span style="color: #66cc66;">&#123;</span>REQUEST_URI<span style="color: #66cc66;">&#125;</span> !/mantenimiento.html$ <span style="color: #66cc66;">&#91;</span>NC<span style="color: #66cc66;">&#93;</span>
 RewriteCond <span style="color: #33cc33;">%</span><span style="color: #66cc66;">&#123;</span>REQUEST_URI<span style="color: #66cc66;">&#125;</span> !\.<span style="color: #66cc66;">&#40;</span>jpe?g?|png|gif|css<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#91;</span>NC<span style="color: #66cc66;">&#93;</span>
 RewriteRule .* /mantenimiento.html <span style="color: #66cc66;">&#91;</span>R=<span style="color: #cc66cc;">302</span>,L<span style="color: #66cc66;">&#93;</span>
&lt;/IfModule&gt;</pre></td></tr></table></div>

<p>Ahora todo debería funcionar correctamente. Cuando hayamos terminado de hacer los cambios, solo tendremos que comentar las líneas anteriores.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonsegador.com/2011/11/redireccionar-pagina-mantenimiento-htaccess-manteniendo-estilos-css-imagenes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Error svn: Directory .svn containing working copy admin area is missing</title>
		<link>http://jonsegador.com/2011/09/error-svn-directory-svn-containing-working-copy-admin-area-is-missing/</link>
		<comments>http://jonsegador.com/2011/09/error-svn-directory-svn-containing-working-copy-admin-area-is-missing/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 08:05:19 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[control de versiones]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://jonsegador.com/?p=520</guid>
		<description><![CDATA[El motivo por el que nos puede aparecer este error (utilizando el sistema de control de versiones svn) al intentar hacer un commit, es porque hemos borrado (o ha desaparecido misteriosamente ) la carpeta .svn de alguno de los directorios del proyecto. svn: Directory .svn containing working copy admin area is missing Hay dos soluciones: [...]]]></description>
			<content:encoded><![CDATA[<p>El motivo por el que nos puede aparecer este error (utilizando el <strong>sistema de control de versiones svn</strong>) al intentar hacer un <strong>commit</strong>, es porque hemos borrado (o ha desaparecido misteriosamente <img src='http://jonsegador.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) la carpeta <strong>.svn</strong> de alguno de los directorios del proyecto.</p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">svn: Directory .svn containing working <span style="color: #b1b100; font-weight: bold;">copy</span> admin area is missing</pre></div></div>

<p>Hay dos soluciones:</p>
<p><strong>1) Descargarnos de nuevo el proyecto completo (checkout).</strong></p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">svn co http://servidorsvn/proyecto/trunk proyecto</pre></div></div>

<p><strong>2)</strong> Si la carpeta .svn ha desaparecido solamente de uno de los directorios del proyecto, <strong>podemos bajarnos solo esa carpeta y mover el archivo .svn a nuestro proyecto</strong> (a la carpeta a la que falta el .svn).</p>
<p>En este ejemplo, se ha borrado la carpeta .svn del directorio css.</p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">svn co http://servidorsvn/proyecto/trunk/css css_copia</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">mv css_copia/.svn /ruta_al_proyecto/proyecto/css/</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">rm -rf css_copia</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://jonsegador.com/2011/09/error-svn-directory-svn-containing-working-copy-admin-area-is-missing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error svn: The log message is a pathname</title>
		<link>http://jonsegador.com/2011/02/error-svn-the-log-message-is-a-pathname/</link>
		<comments>http://jonsegador.com/2011/02/error-svn-the-log-message-is-a-pathname/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 17:15:42 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Servidores]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://jonsegador.com/?p=358</guid>
		<description><![CDATA[Error tonto donde los haya relacionado con el sistema de control de versiones svn, pero que nos puede llevar un buen rato y algún que otro quebradero de cabeza dar con la solución. Si intentamos hacer un commit de los cambios con la orden: svn commit -m &#34;plugins&#34; ./proyecto/plugins Nos mostrará el siguiente error: svn: [...]]]></description>
			<content:encoded><![CDATA[<p>Error tonto donde los haya relacionado con el sistema de control de versiones svn, pero que nos puede llevar un buen rato y algún que otro quebradero de cabeza dar con la solución.</p>
<p>Si intentamos hacer un commit de los cambios con la orden:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span> commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;plugins&quot;</span> .<span style="color: #000000; font-weight: bold;">/</span>proyecto<span style="color: #000000; font-weight: bold;">/</span>plugins</pre></div></div>

<p>Nos mostrará el siguiente error:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span>: The log message is a pathname <span style="color: #7a0874; font-weight: bold;">&#40;</span>was <span style="color: #660033;">-F</span> intended?<span style="color: #7a0874; font-weight: bold;">&#41;</span>; use <span style="color: #ff0000;">'--force-log'</span> to override</pre></div></div>

<p>El &#8220;error&#8221; es que el mensaje que adjuntamos con el commit es igual al nombre de la carpeta que estamos subiendo. Lo arreglaremos cambiando el nombre del mensaje:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">svn</span> commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;cambios en plugins&quot;</span> .<span style="color: #000000; font-weight: bold;">/</span>proyecto<span style="color: #000000; font-weight: bold;">/</span>plugins</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://jonsegador.com/2011/02/error-svn-the-log-message-is-a-pathname/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Error con la función token_get_all() al crear proyecto con Symfony 1.4</title>
		<link>http://jonsegador.com/2011/02/error-con-la-funcion-token_get_all-al-crear-proyecto-con-symfony-1-4/</link>
		<comments>http://jonsegador.com/2011/02/error-con-la-funcion-token_get_all-al-crear-proyecto-con-symfony-1-4/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 00:02:12 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Servidores]]></category>
		<category><![CDATA[opensuse]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5-tokenizer]]></category>
		<category><![CDATA[Symfony]]></category>
		<category><![CDATA[zypper]]></category>

		<guid isPermaLink="false">http://jonsegador.com/?p=354</guid>
		<description><![CDATA[Cuando tenemos un servidor recién instalado, nos podemos encontrar con que algunos paquetes necesarios no están instalados en el sistema. Esto me ha ocurrido al intentar generar un nuevo proyecto con Symfony 1.4 en un servidor con OpenSuse 11.1. Al intentar crear un nuevo proyecto con el comando: php symfony generate:project miproyecto La orden no [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando tenemos un servidor recién instalado, nos podemos encontrar con que algunos paquetes necesarios no están instalados en el sistema. Esto me ha ocurrido al intentar generar un nuevo proyecto con <strong>Symfony 1.4</strong> en un servidor con <strong>OpenSuse 11.1</strong>.</p>
<p>Al intentar crear un nuevo proyecto con el comando:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">php symfony generate:project miproyecto</pre></div></div>

<p>La orden no se ejecutaba en su totalidad y me dejaba unos &#8220;bonitos&#8221; mensajes de error, relacionados con la función <strong>token_get_all()</strong>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">PHP Notice:  Use of undefined constant T_FINAL - assumed <span style="color: #ff0000;">'T_FINAL'</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>symfony14<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>util<span style="color: #000000; font-weight: bold;">/</span>sfClassManipulator.class.php on line <span style="color: #000000;">52</span>
PHP Notice:  Use of undefined constant T_ABSTRACT - assumed <span style="color: #ff0000;">'T_ABSTRACT'</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>symfony14<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>util<span style="color: #000000; font-weight: bold;">/</span>sfClassManipulator.class.php on line <span style="color: #000000;">52</span>
PHP Notice:  Use of undefined constant T_STATIC - assumed <span style="color: #ff0000;">'T_STATIC'</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>symfony14<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>util<span style="color: #000000; font-weight: bold;">/</span>sfClassManipulator.class.php on line <span style="color: #000000;">52</span>
PHP Notice:  Use of undefined constant T_PUBLIC - assumed <span style="color: #ff0000;">'T_PUBLIC'</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>symfony14<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>util<span style="color: #000000; font-weight: bold;">/</span>sfClassManipulator.class.php on line <span style="color: #000000;">52</span>
PHP Notice:  Use of undefined constant T_PROTECTED - assumed <span style="color: #ff0000;">'T_PROTECTED'</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>symfony14<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>util<span style="color: #000000; font-weight: bold;">/</span>sfClassManipulator.class.php on line <span style="color: #000000;">52</span>
PHP Notice:  Use of undefined constant T_PRIVATE - assumed <span style="color: #ff0000;">'T_PRIVATE'</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>symfony14<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>util<span style="color: #000000; font-weight: bold;">/</span>sfClassManipulator.class.php on line <span style="color: #000000;">52</span>
PHP Notice:  Use of undefined constant T_FUNCTION - assumed <span style="color: #ff0000;">'T_FUNCTION'</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>symfony14<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>util<span style="color: #000000; font-weight: bold;">/</span>sfClassManipulator.class.php on line <span style="color: #000000;">52</span>
PHP Fatal error:  Call to undefined <span style="color: #000000; font-weight: bold;">function</span> token_get_all<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>symfony14<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>util<span style="color: #000000; font-weight: bold;">/</span>sfClassManipulator.class.php on line <span style="color: #000000;">117</span></pre></div></div>

<p>Este problema con la función <a href="http://es.php.net/manual/es/function.token-get-all.php">token_get_all()</a> lo solucionaremos instalando la extensión para php &#8220;php5-tokenizer&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">zypper <span style="color: #c20cb9; font-weight: bold;">install</span> php5-tokenizer</pre></div></div>

<p>Me he encontrado este error al generar un nuevo proyecto con Symfony pero nada tiene que ver con el framework. Quizás para cualquier otro proyecto donde no utilicemos Symfony no nos haga falta instalarlo y no lo echemos de menos. Visto lo visto, con Symfony es totalmente necesario tener esta extensión instalada.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonsegador.com/2011/02/error-con-la-funcion-token_get_all-al-crear-proyecto-con-symfony-1-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar funcionalidad hash_hmac() en OpenSuse 11.1</title>
		<link>http://jonsegador.com/2010/12/instalar-funcionalidad-hash_hmac-en-opensuse-11-1/</link>
		<comments>http://jonsegador.com/2010/12/instalar-funcionalidad-hash_hmac-en-opensuse-11-1/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 15:06:22 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Servidores]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[hash_hmac]]></category>
		<category><![CDATA[opensuse]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://jonsegador.com/?p=345</guid>
		<description><![CDATA[En algunos proyectos vamos a necesitar algunas funciones que por algún motivo no tenemos instaladas en nuestro servidor. Un ejemplo puede ser la función hash_hmac(), que sirve para genera un valor cifrado mediante una clave dada usando el método HMAC. Esta función es utilizada, por ejemplo, en la librería de autentificación OAuth para generar la [...]]]></description>
			<content:encoded><![CDATA[<p>En algunos proyectos vamos a necesitar algunas funciones que por algún motivo no tenemos instaladas en nuestro servidor. Un ejemplo puede ser la función <a href="http://php.net/manual/es/function.hash-hmac.php">hash_hmac()</a>, que sirve para genera un valor cifrado mediante una clave dada usando el método HMAC. Esta función es utilizada, por ejemplo, en la librería de autentificación OAuth para generar la firma.</p>
<p>Cuando la vamos a utilizar, nos mostraría el error:<br />
<strong>Call to undefined function hash_hmac()</strong></p>
<p>Voy a explicarlo para OpenSuse 11.1, pero no debería haber problema para instalarlo en cualquier otra distribución (cambiando zypper por apt-get, por ejemplo).</p>
<p>1. Comprobamos si tenemos instalado el paquete php-devel o php5-devel. Si no, lo instalamos:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">zypper <span style="color: #c20cb9; font-weight: bold;">install</span> php5-devel</pre></div></div>

<p>2. Instalamos PEAR.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">zypper <span style="color: #c20cb9; font-weight: bold;">install</span> php-pear</pre></div></div>

<p>3. Ejecutamos</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">pecl <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #7a0874; font-weight: bold;">hash</span></pre></div></div>

<p>4. Añadimos la extensión al archivo php.ini (en mi caso /etc/php5/apache2/php.ini):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">; Enable pecl_hash extension module
<span style="color: #007800;">extension</span>=hash.so</pre></div></div>

<p>5. Reiniciamos Apache</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></div></div>

<p>Con estos pasos ya deberíamos poder utilizar la función hash_hmac (entre otras) en nuestros proyectos.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonsegador.com/2010/12/instalar-funcionalidad-hash_hmac-en-opensuse-11-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cambiar puerto 22 del servidor ssh</title>
		<link>http://jonsegador.com/2010/06/cambiar-puerto-22-servidor-ssh/</link>
		<comments>http://jonsegador.com/2010/06/cambiar-puerto-22-servidor-ssh/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 17:50:13 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Servidores]]></category>
		<category><![CDATA[puerto]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://jonsegador.com/?p=239</guid>
		<description><![CDATA[Si queremos tener más seguridad en nuestro servidor, un truco fácil es el de cambiar el puerto del servidor ssh. Por defecto, la conexión se hace en el puerto 22, que es uno de los puertos más utilizados por scripts maliciosos para realizar ataques por fuerza bruta o denegación de servicio. Cambiar el puerto del [...]]]></description>
			<content:encoded><![CDATA[<p>Si queremos tener más seguridad en nuestro servidor, un truco fácil es el de cambiar el puerto del servidor ssh. Por defecto, la conexión se hace en el puerto 22, que es uno de los puertos más utilizados por scripts maliciosos para realizar ataques por fuerza bruta o denegación de servicio.</p>
<p>Cambiar el puerto del ssh es tan sencillo como hacer lo siguiente:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">nano <span style="color: #339933;">/</span>etc<span style="color: #339933;">/</span>ssh<span style="color: #339933;">/</span>sshd_config</pre></td></tr></table></div>

<p>Editamos la linea dice</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#Port 22</span></pre></td></tr></table></div>

<p>La descomentamos (quitamos la almoadilla) y cambiamos el 22 por el puerto que queramos. Nos tenemos que asegurar de que el puerto que elijamos no esté ya en uso (Aquí tenemos una <a href="http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers">lista de puertos</a>). Por ejemplo, si elegimos el puerto 27, la línea quedará:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Port <span style="color: #cc66cc;">27</span></pre></td></tr></table></div>

<p>Ahora editamos el archivo /etc/services</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">nano <span style="color: #339933;">/</span>etc<span style="color: #339933;">/</span>services</pre></td></tr></table></div>

<p>buscamos las líneas:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ssh         <span style="color: #cc66cc;">22</span><span style="color: #339933;">/</span>tcp
ssh         <span style="color: #cc66cc;">22</span><span style="color: #339933;">/</span>udp</pre></td></tr></table></div>

<p>y las cambiamos por el nuevo puerto que hemos seleccionado antes:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ssh         <span style="color: #cc66cc;">27</span><span style="color: #339933;">/</span>tcp
ssh         <span style="color: #cc66cc;">27</span><span style="color: #339933;">/</span>udp</pre></td></tr></table></div>

<p>Ahora paramos e iniciamos el servidor ssh:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">/</span>etc<span style="color: #339933;">/</span>init<span style="color: #339933;">.</span>d<span style="color: #339933;">/</span>ssh stop</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">/</span>etc<span style="color: #339933;">/</span>init<span style="color: #339933;">.</span>d<span style="color: #339933;">/</span>ssh start</pre></td></tr></table></div>

<p>Y ya lo tenemos. A partir de ahora, cuando queramos acceder a nuestro servidor mediante ssh, deberemos especificar el puerto por el que nos queremos conectar. Por ejemplo:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">ssh usuario<span style="color: #339933;">@</span>192<span style="color: #339933;">.</span>168<span style="color: #339933;">.</span>1<span style="color: #339933;">.</span>100 <span style="color: #339933;">-</span>p27</pre></td></tr></table></div>

<p>Puede que te salte algún error relacionado con las public keys. Es normal, ya que anteriormente ha detectado movimiento en el puerto 22. Simplemente hay que borrar esos public keys:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"> rm ~<span style="color: #339933;">/.</span>ssh<span style="color: #339933;">/</span>known_hosts</pre></td></tr></table></div>

<p>A partir de ahora tendremos nuestro servidor ssh un poco más seguro.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonsegador.com/2010/06/cambiar-puerto-22-servidor-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CentOS / Red Hat: Deshacer yum update (roll back)</title>
		<link>http://jonsegador.com/2010/03/centos-redhat-deshacer-yum-update-rollback/</link>
		<comments>http://jonsegador.com/2010/03/centos-redhat-deshacer-yum-update-rollback/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 12:05:23 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Servidores]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[rollback]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://jonsegador.com/?p=162</guid>
		<description><![CDATA[Es bastante importante tener actualizado nuestro servidor con los parches de seguridad más recientes. Puede que el sistema se actualice sin problemas&#8230; pero puede que no. En esos momentos es cuando desearíamos poder volver a la versión anterior de los paquetes que hemos actualizado. Con el gestor de paquetes yum lo podemos hacer. Para ello, [...]]]></description>
			<content:encoded><![CDATA[<p>Es bastante importante tener actualizado nuestro servidor con los parches de seguridad más recientes. Puede que el sistema se actualice sin problemas&#8230; <strong>pero puede que no</strong>. En esos momentos es cuando desearíamos poder<strong> volver a la versión anterior de los paquetes que hemos actualizado</strong>.</p>
<p>Con el gestor de paquetes <strong>yum</strong> lo podemos hacer. Para ello, primero tenemos que modificar un par de archivos:</p>
<p>Añadimos esta linea al fichero <strong>/etc/yum.conf</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">tsflags</span>=repackage</pre></div></div>

<p>También deberemos añadir esta linea al archivo <strong>/etc/rpm/macros</strong> (si no existe, lo creamos)</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">%</span>_repackage_all_erasures <span style="color: #000000;">1</span></pre></div></div>

<p>La documentación de rpm no tiene ninguna referencia a la opción deshacer (rollback). Para volver a la versión de los paquetes anteriores a la actualización <strong>usaremos el comando rpm con el parametro &#8211;rollback</strong></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">rpm <span style="color: #660033;">-Uhv</span> <span style="color: #660033;">--rollback</span> <span style="color: #ff0000;">'15:00'</span>
rpm <span style="color: #660033;">-Uhv</span> <span style="color: #660033;">--rollback</span> <span style="color: #ff0000;">'2 hours ago'</span>
rpm <span style="color: #660033;">-Uhv</span> <span style="color: #660033;">--rollback</span> <span style="color: #ff0000;">'december 31'</span>
rpm <span style="color: #660033;">-Uhv</span> <span style="color: #660033;">--rollback</span> <span style="color: #ff0000;">'yesterday'</span></pre></div></div>

<p>Es una buena idea activar el rollback por lo que pueda pasar. Ahora podremos ejecutar</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">yum update</pre></div></div>

<p>sin miedo a posibles incompatibilidades.</p>
]]></content:encoded>
			<wfw:commentRss>http://jonsegador.com/2010/03/centos-redhat-deshacer-yum-update-rollback/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instalar y entender mytop (monitorizando mysql)</title>
		<link>http://jonsegador.com/2009/08/instalar-y-entender-mytop-monitorizando-mysql/</link>
		<comments>http://jonsegador.com/2009/08/instalar-y-entender-mytop-monitorizando-mysql/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 22:01:06 +0000</pubDate>
		<dc:creator>Jon</dc:creator>
				<category><![CDATA[Servidores]]></category>
		<category><![CDATA[monitorización]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mytop]]></category>

		<guid isPermaLink="false">http://jonsegador.com/?p=26</guid>
		<description><![CDATA[Voy a empezar con un post un poco técnico pero de gran utilidad para la monitorización del servidor de bases de datos mysql.

mytop es una utilidad que sirve para monitorizar las consultas mysql, procesos, y rendimiento general del servidor de bases de datos mysql. Entre otras cosas, nos permite visualizar las consultas lentas (slow queries) que se ejecutan en la base de datos.]]></description>
			<content:encoded><![CDATA[<p>Voy a empezar con un post un poco técnico pero de gran utilidad para la monitorización del servidor de bases de datos mysql.</p>
<p><strong>mytop</strong> es una utilidad que sirve para monitorizar las consultas mysql, procesos, y rendimiento general del servidor de bases de datos mysql. Entre otras cosas, nos permite visualizar las consultas lentas (slow queries) que se ejecutan en la base de datos.</p>
<h4><span style="text-decoration: underline;">Instalación</span></h4>
<p>Vamos a realizar al instalación en un servidor CentOS. Para hacerlo, necesitamos tener instalados en nuestro servidor Perl , DBI y Term::ReadKey. Los dos primeros suelen estar instalados por lo que pasamos a instalar <strong>Term::ReadKey</strong>.</p>
<pre>wget http://search.cpan.org/CPAN/authors/id/J/JS/JSTOWE/TermReadKey-2.30.tar.gz
tar -zxvf TermReadKey-2.30.tar.gz
cd TermReadKey-2.30
perl Makefile.PL
make
make test
make install</pre>
<p>Ahora pasamos a intalar <strong>mytop</strong></p>
<pre>wget http://jeremy.zawodny.com/mysql/mytop/mytop-1.4.tar.gz
tar -zxvf mytop-1.4.tar.gz
cd mytop-1.4
perl Makefile.PL
make
make test
make install</pre>
<p><span id="more-26"></span></p>
<h4><span style="text-decoration: underline;">Configurar mytop</span></h4>
<p><strong>mytop</strong> soporta diferentes parámetros para conectarnos a la base de datos, usuario, contraseña, etc. Para este ejemplo siempre nos conectaremos a una sola base de datos. Debido a esto, podemos crear un archivo de configuración para no tener que pasar los parámetros al comando.</p>
<p>Este es nuestro archivo de configuración de ejemplo, que guardaremos por ejemplo en /root/.mytop, suponiendo que sea el usuario root el que va a ejecutar este comando:</p>
<pre>user=admin
pass=password
host=localhost
db=prueba
delay=5
port=3306
socket=
batchmode=0
header=1
color=1
idle=1</pre>
<h4><span style="text-decoration: underline;">Explicación</span></h4>
<p>Vamos a explicar cada una de las líneas anteriores:</p>
<pre>user=admin
pass=password</pre>
<p>Usuario y contraseña del usuario de la base de datos a la que nos vamos a conectar. Si queremos pasar estos datos por parámetros, usaremos:</p>
<p>mytop -u admin -p password</p>
<pre>host=localhost
db=prueba</pre>
<p>Servidor de la base de datos (en este caso se encuentra en el propio servidor, por lo que indicamos localhost) y el nombre de la base de datos a la que nos queremos conectar. Conseguiríamos el mismo resultado con estos parámetros:</p>
<p>mytop -h localhost -d prueba</p>
<pre>delay=5</pre>
<p>Tiempo que tarda en refrescarse la página de resultados. De nuevo, mediante parámetros:</p>
<p>mytop -s 5</p>
<pre>port=3306</pre>
<p>Puerto al que nos conectamos a mysql (3306 por defecto). Por parámetros:</p>
<p>mytop -port 3306</p>
<pre>socket=</pre>
<p>Por defecto está vacío (none). Si tenemos el servidor de mysql en nuestro mismo servidor, quizás queramos conectarnos mediante un socket.</p>
<pre>batchmode=0</pre>
<p>Su valor será 0 o 1. Si el valor es 1, nos mostrará por pantalla todas las consultas una detrás de otra sin recargar la página. Útil si programamos un cron y guardamos el resultado de mytop a un archivo. Si el valor es 0, cada vez que se refresque la página se borrarán las consultas anteriores. Para hacerlo mediante parámetros:</p>
<p>mytop -b 0</p>
<pre>header=1</pre>
<p>Lo ponemos a 1 para que nos muestre la cabecera al ejecutar mytop. Una vez ejecutado el programa, podremos ocultar y mostrar la cabecera pulsando la tecla <strong>h</strong>. De nuevo, por comandos:</p>
<p>mytop -header 1</p>
<pre>color=1</pre>
<p>Nos mostrará el resultado del comando mediante colores. Para indicar esta opción mediante parámetros:</p>
<p>mytop -color 1</p>
<pre>idle=1</pre>
<p>Para indicar si queremos que nos muestre en los resultados las consultas que están dormidas (sleeping). Si no está activado, nos mostrará los resultados en orden inverso, es decir, las consultas más lentas primero.</p>
<p>mytop -i 1</p>
<h4><span style="text-decoration: underline;">Entender mytop</span></h4>
<p>Este es el aspecto que tiene el comando mytop en funcionamiento. Por cierto, para ejecutarlo, solamente debemos llamarlo por línea de comandos:</p>
<pre>mytop</pre>
<p><a href="http://jonsegador.com/wp-content/mytop-image1.gif"><img class="alignnone size-medium wp-image-28" title="mytop-image1" src="http://jonsegador.com/wp-content/uploads/mytop-image1-300x112.gif" alt="" width="346" height="146" /></a></p>
<p>Empezando por arriba a la izquierda, podemos ver <strong>Queries</strong>. El número que está a la izquierda (en la imagen, 369.1k), es el número total de consultas que se han hecho al servidor de mysql desde que se inició. A la derecha de <strong>Queries</strong> podemos ver <strong>qps</strong>, que son las consultas por segundo (queries per second), aunque más precisamente este número representa la media de consultas por segundo que se han hecho desde que el servidor fue iniciado.</p>
<p>Debajo de la primera línea podemos ver <strong>qps now</strong>. <span>Este dato representa el número medio de consultas por segundo que ha hecho el servidor desde la última vez que mytop recargó los resultados. </span>A la derecha podemos ver <strong>Slow </strong>y<strong> Slow qps</strong>.  El valor de <strong>Slow</strong><span> es el número de consultas lentas que se han ejecutado desde que el servidor está en marcha. El valor de </span><strong>Slow qps</strong><span> es la media del número de consultas lentas por segundo que se han ejecutado desde la última recarga de los resultados de mytop.</span></p>
<p>Seguimos más a la derecha, donde podemos ver unos datos muy importantes que tienen que ver con el servidor mysql en sí. Esto es <strong>Se/In/Up/De(%)</strong>, que significa Select, Insert, Update, Delete. Esto nos indica cual es el porcentaje de Select, Insert, Update o Delete que se ejecutan en el servidor. Justo debajo podemos ver de nuevo el porcentaje de Se/In/Up/De de las consultas que se han ejecutado desde el último refresco de mytop.</p>
<p>La <strong>key efficiency</strong> nos indica el porcentaje de consultas que están utilizado una clave/índice (key) en la consulta. Esto es importante ya que cualquier consulta que se haga sin utilizar una clave/índice, le llevará más tiempo a la base de datos mostrar los resultados.</p>
<p><strong>Bps in/out</strong><span><span> indica la media de bytes por segundo entrantes a la base de datos y el segundo dato es la media de bytes por segundo salientes (recibiendo y mostrando información)</span><span>. El dato </span></span><strong>Now in/out</strong><span><span> es la media de bytes entrantes y salientes (in/out) por segundo desde que mytop ha refrescado la página.</span></span></p>
<h4><span style="text-decoration: underline;">Accesos directos</span></h4>
<p>Estos comandos los podemos ejecutar cuando mytop está ejecutándose para obtener datos adicionales.</p>
<pre><span>  d - Mostrar solo datos de una base de datos determinada
  f - Mostrar información completa de una consulta
  F - Desactivar todos los filtros
  h - Mostrar solamente los datos de un servidor específico
  H - Mostrar/ocultar cabecera
  i - Mostrar/ocultar consultar dormidas (sleeping)
  k - Matar una consulta
  p - Pausar la vista
  m - Para cambiar de 'consultas más lentas' a 'consultas por segundo'
  o - Invertir orden
  q - Salir
  r - Resetear todos los valores (mediante FLUSH STATUS en el servidor)
  s - Cambiar el tiempo de refresco
  t - Cambiar al modo vista
  u - Mostrar solamente de un usuario específico

</span></pre>
<h4><span style="text-decoration: underline;"><span>Instalar interfaz web</span></span></h4>
<p>Podemos instalar una aplicación web para monitorizar los resultados de mytop mediante nuestro navegador. Para ello vamos a instalar la aplicación <strong>ajaxMyTop</strong> desde <a href="http://sourceforge.net/projects/ajaxmytop">http://sourceforge.net/projects/ajaxmytop</a>. Simplemente lo copiaremos a un directorio de nuestra web y editando el archivo config.php, indicaremos los parámetros que hemos explicado en pasos anteriores.</p>
<p><a href="http://jonsegador.com/wp-content/ajaxmytoppng.jpeg"><img class="alignnone size-medium wp-image-29" title="ajaxmytoppng" src="http://jonsegador.com/wp-content/uploads/ajaxmytoppng-300x133.jpg" alt="" width="300" height="133" /></a></p>
<p>Por seguridad, es recomendable permitir acceso a este panel solamente a ips conocidas (la nuestra). Para ello, haremos uso de un archivo .htaccess que copiaremos en la carpeta donde hemos instalado ajaxMyTop. Este archivo contendrá el siguiente contenido:</p>
<pre>Order deny,allow
Deny from all
# Permitimos acceso solamente a una ip conocida
Allow from 192.168.1.2</pre>
<p>Y eso es todo, cualquier duda en los comentarios.</p>
<p>Para realizar el post me he basado en estos artículos:<br />
<a href="http://forums.theplanet.com/lofiversion/index.php/t59458.html" target="_blank">http://forums.theplanet.com/lofiversion/index.php/t59458.html</a><br />
<a href="http://hostingaldescubierto.com/wordpress/2007/11/20/instalar-mytop/" target="_blank">http://hostingaldescubierto.com/wordpress/2007/11/20/instalar-mytop/</a><br />
<a href="http://jeremy.zawodny.com/mysql/mytop/mytop.html" target="_blank">http://jeremy.zawodny.com/mysql/mytop/mytop.htm</a><br />
<a href="http://mysqlhacker.com/kabir/php/using-mytop-to-interactively-monitor-mysql.html" target="_blank">http://mysqlhacker.com/kabir/php/using-mytop-to-interactively-monitor-mysql.html</a><br />
<a href="http://www.opensourcetutorials.com/tutorials/Server-Side-Coding/Administration/mytop/page1.html" target="_blank">http://www.opensourcetutorials.com/tutorials/Server-Side-Coding/Administration/mytop/page1.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jonsegador.com/2009/08/instalar-y-entender-mytop-monitorizando-mysql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

