<?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>linux | ahierro.es</title>
	<atom:link href="https://blog.ahierro.es/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ahierro.es</link>
	<description>Un blog personal  donde compartir experiencias e inquietudes relacionadas con internet, tecnología y otros asuntos interesantes</description>
	<lastBuildDate>Tue, 05 Jan 2021 07:19:45 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://blog.ahierro.es/wp-content/uploads/2018/10/cropped-logo_small-1-2-32x32.png</url>
	<title>linux | ahierro.es</title>
	<link>https://blog.ahierro.es</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>E: No se pudo obtener el bloqueo /var/lib/dpkg/lock – open (recurso temporalmente no disponible)</title>
		<link>https://blog.ahierro.es/no-se-pudo-obtener-el-bloqueo-var-lib-dpkg-lock-open-recurso-temporalmente-no-disponible/</link>
					<comments>https://blog.ahierro.es/no-se-pudo-obtener-el-bloqueo-var-lib-dpkg-lock-open-recurso-temporalmente-no-disponible/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Tue, 20 Aug 2019 06:26:47 +0000</pubDate>
				<category><![CDATA[Errores y problemas]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[linux]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1621</guid>

					<description><![CDATA[<p>Este error ocurre con relativa frecuencia en distribuciones que utilizan el gestor de paquetes Dpkg para instalar o desinstalar software: Debian, Ubuntu y derivadas. En este artículo veremos como solucionarlo. El error es muy similar a este otro «E: No se pudo bloquear /var/lib/apt/lists/lock &#8211; open (11 Recurso no disponible temporalmente)«, y es fácil confundirlos &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/no-se-pudo-obtener-el-bloqueo-var-lib-dpkg-lock-open-recurso-temporalmente-no-disponible/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "E: No se pudo obtener el bloqueo /var/lib/dpkg/lock – open (recurso temporalmente no disponible)"</span></a></p>
La entrada <a href="https://blog.ahierro.es/no-se-pudo-obtener-el-bloqueo-var-lib-dpkg-lock-open-recurso-temporalmente-no-disponible/">E: No se pudo obtener el bloqueo /var/lib/dpkg/lock – open (recurso temporalmente no disponible)</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Este error ocurre con relativa frecuencia en distribuciones que utilizan el gestor de paquetes Dpkg para instalar o desinstalar software: Debian, Ubuntu y derivadas. En este artículo veremos como solucionarlo.</p>



<figure class="wp-block-image is-resized"><img fetchpriority="high" decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/08/bloquear-var-lib-dpkg-lock.png" alt="No se pudo obtener el bloqueo /var/lib/dpkg/lock – open (recurso temporalmente no disponible)" class="wp-image-1646" width="789" height="471" srcset="https://blog.ahierro.es/wp-content/uploads/2019/08/bloquear-var-lib-dpkg-lock.png 789w, https://blog.ahierro.es/wp-content/uploads/2019/08/bloquear-var-lib-dpkg-lock-300x179.png 300w, https://blog.ahierro.es/wp-content/uploads/2019/08/bloquear-var-lib-dpkg-lock-768x459.png 768w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></figure>



<span id="more-1621"></span>



<p>El error es muy similar a este otro «<a href="https://blog.ahierro.es/no-se-pudo-bloquear-var-lib-apt-lists-lock-open-11-recurso-no-disponible-temporalmente/">E: No se pudo bloquear /var/lib/apt/lists/lock &#8211; open (11 Recurso no disponible temporalmente)</a>«, y es fácil confundirlos si no prestamos la atención suficiente. Ambos ocurren cuando realizamos tareas de instalación o des-instalación de software, la diferencia radica  en que mientras uno está relacionado con Apt, el otro está relacionado con Dpkg.</p>



<h2 class="wp-block-heading">El error</h2>



<p>El error se produce al intentar instalar o des-instalar alguna aplicación. Cuando el sistema hace uso del gestor de paquetes Dpkg, y éste intenta bloquear los recursos necesarios para realizar sus tareas, se encuentra que estos ya están bloqueados y lanza el siguiente error:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
E: No se pudo bloquear /var/lib/dpkg/lock - open (11 Recurso no disponible temporalmente)
E: Unable to acquire the dpkg No se pudo bloquear el directorio (/var/lib/dpkg/), ¿quizás haya algún otro proceso utilizándolo?
</pre></div>


<p>Es bastante habitual que ese bloqueo esté producido por algún problema en operaciones anteriores, y que en el momento de encontrarnos con el error no exista ningún proceso activo utilizando esos recursos. No obstante debemos asegurarnos de ello.</p>



<h2 class="wp-block-heading">La solución</h2>



<p>La solución es rápida y sencilla. Como hemos dicho, comenzamos comprobando si existe algún proceso activo utilizando el archivo que genera el bloqueo:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo fuser -v /var/lib/dpkg/lock
</pre></div>


<p>En caso de que haya algún proceso activo provocando el bloqueo deberemos decidir si lo dejamos terminar o si por el contrario lo matamos, mi recomendación es ser razonablemente pacientes. Si optamos por  matarlo, volveremos a hacer uso del comando <em>fuser</em>, añadiendo dos modificadores más:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo fuser -vki /var/lib/dpkg/lock 
</pre></div>


<p>Si era un proceso el causante del y este ha concluido su tarea, lo más probable es que el error ya no persista.</p>



<p>Si por el contrario no había proceso activo, o lo había pero decidimos matarlo, deberemos eliminar el archivo que sigue generando el bloqueo: </p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo rm /var/lib/dpkg/lock
</pre></div>


<p>Y con esto ya habremos terminado y podremos realizar la tarea que no pudimos inicialmente.</p>La entrada <a href="https://blog.ahierro.es/no-se-pudo-obtener-el-bloqueo-var-lib-dpkg-lock-open-recurso-temporalmente-no-disponible/">E: No se pudo obtener el bloqueo /var/lib/dpkg/lock – open (recurso temporalmente no disponible)</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/no-se-pudo-obtener-el-bloqueo-var-lib-dpkg-lock-open-recurso-temporalmente-no-disponible/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>E: No se pudo bloquear /var/lib/apt/lists/lock &#8211; open (11 Recurso no disponible temporalmente)</title>
		<link>https://blog.ahierro.es/no-se-pudo-bloquear-var-lib-apt-lists-lock-open-11-recurso-no-disponible-temporalmente/</link>
					<comments>https://blog.ahierro.es/no-se-pudo-bloquear-var-lib-apt-lists-lock-open-11-recurso-no-disponible-temporalmente/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Tue, 20 Aug 2019 06:26:04 +0000</pubDate>
				<category><![CDATA[Errores y problemas]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[linux]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1595</guid>

					<description><![CDATA[<p>Si eres usuario de alguna distribución de Linux que utiliza Apt como gestor de paquetes, es muy probable que en alguna ocasión hayas recibido este error al intentar actualizar los repositorios. Veamos como solucionarlo. El caso es que en los últimos meses me he encontrado en varias ocasiones con el error del título, y con &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/no-se-pudo-bloquear-var-lib-apt-lists-lock-open-11-recurso-no-disponible-temporalmente/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "E: No se pudo bloquear /var/lib/apt/lists/lock &#8211; open (11 Recurso no disponible temporalmente)"</span></a></p>
La entrada <a href="https://blog.ahierro.es/no-se-pudo-bloquear-var-lib-apt-lists-lock-open-11-recurso-no-disponible-temporalmente/">E: No se pudo bloquear /var/lib/apt/lists/lock – open (11 Recurso no disponible temporalmente)</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Si eres usuario de alguna distribución de Linux que utiliza Apt como gestor de paquetes, es muy probable que en alguna ocasión hayas recibido este error al intentar actualizar los repositorios. Veamos como solucionarlo.</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/08/bloquear-var-lib-apt-lists-lock.png" alt="No se pudo obtener el bloqueo /var/lib/dpkg/lock – open (recurso temporalmente no disponible)" class="wp-image-1616" width="789" height="357"/></figure>



<span id="more-1595"></span>



<p>El caso es que en los últimos meses me he encontrado en varias ocasiones con el error del título, y con este otro «<a href="https://blog.ahierro.es/no-se-pudo-obtener-el-bloqueo-var-lib-dpkg-lock-open-recurso-temporalmente-no-disponible/">No se pudo obtener el bloqueo /var/lib/dpkg/lock – open (recurso temporalmente no disponible)</a>«, que es tan parecido que si no leemos atentamente puede llevarnos a errar en el diagnóstico del problema. Y si bien las soluciones son prácticamente iguales, los detalles distan mucho, y podríamos estar intentando curar un catarro con las medicinas para curar una gastroenteritis. Pero no  me enrollo mas y vayamos al lío.</p>



<h2 class="wp-block-heading">El error</h2>



<p>El error se produce al intentar actualizar los repositorios o realizar otras tareas relacionadas con el gestor de paquetes Apt, y la salida en pantalla completa es la siguiente:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
E: No se pudo bloquear /var/lib/apt/lists/lock - open (11 Recurso no disponible temporalmente)
E: No se pudo bloquear el directorio (/var/lib/apt/lists/)
</pre></div>


<p>El origen del problema radica en que intentamos acceder a un recurso que está bloqueado por otro proceso. Lo más habitual es que ese otro proceso ya no exista, y que el recurso que necesitamos haya quedado bloqueado por algún problema en una operación anterior. No obstante, es mejor ser cautos y verificar si ese bloqueo esté motivado por una algún proceso activo. </p>



<h2 class="wp-block-heading">La Solución</h2>



<p>La solución al problema es rápida y sencilla. En primer lugar comprobamos si existe algún proceso utilizando el archivo que genera el bloqueo:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo fuser -v /var/lib/apt/lists/lock 
</pre></div>


<p>En caso de que haya algún proceso, deberemos decidir si lo dejamos terminar o si lo matamos. Si optamos por  matarlo, podemos hacerlo con el mismo comando <em>fuser</em>, tan solo añadiendo algunos modificadores más:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo fuser -vki /var/lib/apt/lists/lock 
</pre></div>


<p>Y acto seguido, e independientemente de si había o no un proceso activo, eliminamos el archivo que provoca el bloqueo:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo rm /var/lib/apt/lists/lock
</pre></div>


<p>Y con esto ya podríamos volver a actualizar nuestros repositorios o realizar la tarea que no pudimos completar al encontrarnos con este inconveniente.</p>La entrada <a href="https://blog.ahierro.es/no-se-pudo-bloquear-var-lib-apt-lists-lock-open-11-recurso-no-disponible-temporalmente/">E: No se pudo bloquear /var/lib/apt/lists/lock – open (11 Recurso no disponible temporalmente)</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/no-se-pudo-bloquear-var-lib-apt-lists-lock-open-11-recurso-no-disponible-temporalmente/feed/</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
			</item>
		<item>
		<title>Ubuntu en dispositivos táctiles</title>
		<link>https://blog.ahierro.es/ubuntu-en-dispositivos-tactiles/</link>
					<comments>https://blog.ahierro.es/ubuntu-en-dispositivos-tactiles/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Wed, 14 Aug 2019 06:18:08 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1562</guid>

					<description><![CDATA[<p>Desde hace varias semanas vengo probando como funciona Ubuntu Desktop 19.04 en un dispositivo táctil sin teclado. Os cuento como ha sido mi experiencia. El caso es que tengo un pc (o tablet) Microsoft Surface Pro 1 en el que tenía instalado Windows 10. La verdad es que esa combinación funciona muy bien para el &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/ubuntu-en-dispositivos-tactiles/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Ubuntu en dispositivos táctiles"</span></a></p>
La entrada <a href="https://blog.ahierro.es/ubuntu-en-dispositivos-tactiles/">Ubuntu en dispositivos táctiles</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Desde hace varias semanas vengo probando como funciona Ubuntu Desktop 19.04 en un dispositivo táctil sin teclado. Os cuento como ha sido mi experiencia.</p>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/08/Ubuntu-Tablet-image.jpg.jpg" alt="Ubuntu en dispositivos táctiles" class="wp-image-1567" width="840" height="379"/></figure>



<span id="more-1562"></span>



<p>El caso es que tengo un pc (o tablet) Microsoft Surface Pro 1 en el que tenía instalado Windows 10. La verdad es que esa combinación funciona muy bien para el uso que hago de este dispositivo: consultas varias en internet, escribir este blog, sincronizar algún gadget, etc., en fin, un uso lúdico y poco intensivo. Pero desde hace ya algún tiempo rondaba por mi cabeza la idea de probar cómo iría con alguna distribución de Linux.</p>



<h2 class="wp-block-heading">Microsoft Surface Pro 1</h2>



<p>Para aquellos que no conozcan este dispositivo os dejo una pequeña presentación. El equipo tiene ya algunos añitos, concretamente 6, salio a la venta en 2012 pero yo lo adquirí en 2013. Tiene un procesador Intel Core I5-3317U con dos cores a 1.70GHz, 4GB de memoria RAM, 128GB de disco duro SSD y una pantalla de 10,6 pulgadas con una resolución de 1920&#215;1080.</p>



<p>En la practica es un equipo  pesado en relación a su tamaño, se calienta demasiado y su batería difícilmente duraba dos horas con Windows 8 o con Windows 10.</p>



<h2 class="wp-block-heading">Elección de distribución</h2>



<p>En mi ordenador personal utilizo Xubuntu, y estoy muy contento con esta distribución, de hecho me siento mucho más cómodo con su escritorio Xfce que con GNOME o KDE, así que fue mi primera opción. Pero tras probarlo desde un live usb lo descarté sobre la marcha, el teclado en pantalla no aparecía por defecto, y aunque sé que podría encontrar alguno en los repositorios, digamos que lo tomé como un presagio y no tenía ganas de buscarme complicaciones.</p>





<p>La segunda opción fue Ubuntu 19.04, también desde live usb. En este caso el teclado en pantalla apareció desde que situé el foco en un cuadro de texto. Y aunque en ese momento existían algunos detalles que no me convencían, la existencia de apartados dedicados a la configuración de accesibilidad para ratón y teclado, unido al teclado en pantalla me convencieron. Así que me despedí de Windows e instalé Ubuntu, un HD de 128GB no es territorio para que convivan dos sistemas operativos.</p>



<h2 class="wp-block-heading">Experiencia con Ubuntu en dispositivos táctiles</h2>



<p>Y ahora que ya os he soltado la chapa, vamos a revisar los aspectos que considero más relevantes de mi experiencia con Ubuntu en la tablet Microsoft Surface.</p>



<h3 class="wp-block-heading">Teclado en pantalla</h3>



<p>Ubuntu Desktop tiene el teclado en pantalla instalado por defecto, así que podremos utilizarlo tanto ejecutando la distro desde el live usb como en el proceso de instalación, y por supuesto una vez instalado en nuestro equipo.</p>



<p>El teclado en pantalla está estéticamente bien logrado y no me resulta nada intrusivo en el despliegue, es más estos dos puntos me parecen sensacionales. Su funcionamiento es bueno, salvo al escribir en la barra de direcciones de Firefox que tiene un comportamiento errático. Este problema no lo he notado en ningún otro programa.</p>



<p>El principal inconveniente con este teclado es que es excesivamente sencillo, no dispone de teclas de dirección, ni de teclas de función (F1, F2&#8230;), ni de teclas de control (Alt, Ctrl, Esc&#8230;). Parece pensado para utilizarse en una tablet tipo Android más que en un pc.</p>



<p>Esto me ha obligado a instalar un segundo teclado en palla para solventar las situaciones en las que necesito hacer uso de alguna de las teclas de las que no dispongo, algo que me resulta muy engorroso. </p>



<p>Este teclado auxiliar se llama Florence Virtual Keyboard, y está muy bien para salir del paso, pero personalmente no me convence como teclado principal. Si quieres instalarlo:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get update
sudo apt-get install florence
</pre></div>


<p>Afortunadamente este tipo de teclas, por el uso que hago del dispositivo, las utilizo poco. Pero si tú haces uso intensivo de ellas, el teclado en pantalla de Ubuntu se te quedará corto.</p>



<h3 class="wp-block-heading">Stylus</h3>



<p>La tablet Microsoft surface 1 viene con un lápiz o stylus con cuatro funciones principales: puntero, click izquierdo, click derecho y borrar. Mi stylus ha perdido esta última funcionalidad así que os hablaré de las otras tres.</p>



<p>El puntero funciona perfectamente, al igual que la simulación del click del botón izquierdo del ratón. La simulación del click derecho en cambio no funciona desde un principio, pero tras una sencilla búsqueda en internet pude solucionarlo. Tan solo tenemos que hacer que Ubuntu ejecute el siguiente comando tras el arranque:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
xmodmap -e &quot;pointer = 1 3 2 4 5 6 7 8 9 10&quot;
</pre></div>


<h3 class="wp-block-heading">Acciones táctiles</h3>



<p>El manejo de la tablet sin el lápiz está conseguido a medias. Si bien la respuesta a las acciones táctiles es buena, no he conseguido simular el click derecho del ratón de una forma satisfactoria. A pesar de que  en el apartado «Acceso Universal», dentro de la configuración de Ubuntu, existe un apartado para este propósito, el resultado no me ha convencido en absoluto. </p>



<h3 class="wp-block-heading">Rotación de pantalla</h3>



<p>La rotación de la pantalla es otra de las funcionalidades que vienen por defecto. Su funcionamiento es muy bueno, la respuesta al giro es adecuada y el escritorio y los programas se adaptan perfectamente a visualizaciones tanto horizontales como verticales. Además en las herramientas situadas en la esquina superior derecha podemos bloquear la rotación, algo muy de agradecer en un dispositivo de estas características.</p>



<h3 class="wp-block-heading">Duración de la batería</h3>



<p>Un aspecto que me ha sorprendido gratamente y que no me esperaba es la duración de la batería. Si con Windows 10 rara vez conseguía tener dos horas reales de uso de la tablet, con Ubuntu he conseguido duplicar esta autonomía. Evidentemente esto dependerá del uso que hagamos del dispositivo, y es posible que en usos más intensivos la diferencia entre los dos sistemas se reduzca.</p>





<p>Además, algo con un origen muy en relación a la duración de la batería, es que la tablet ahora se calienta menos que cuando tenía instalado Windows.</p>



<h2 class="wp-block-heading">Conclusión</h2>



<p>El uso de Ubuntu en dispositivos táctiles tiene sus luces y sus sombras. La experiencia de usuario está lejos de ser perfecta, pero aun así, para mi ha sido más que suficiente para decidirme a cambiar.</p>



<h2 class="wp-block-heading">Créditos, referencia y artículos relacionados</h2>



<ul class="wp-block-list"><li><a href="https://blog.ahierro.es/averiguar-que-version-de-linux-tengo-instalada/">Averiguar que versión de Linux tengo instalada</a>.</li><li><a href="https://blog.ahierro.es/como-instalar-linux-dentro-de-windows-10-utilizando-wsl-1/">Cómo instalar Linux dentro de Windows 10 utilizando WSL 1</a></li><li><a href="https://blog.ahierro.es/actualizacion-de-windows-10-machaca-el-gestor-de-arranque-de-linux/">Actualización de Windows 10 machaca el gestor de arranque de Linux</a></li></ul>La entrada <a href="https://blog.ahierro.es/ubuntu-en-dispositivos-tactiles/">Ubuntu en dispositivos táctiles</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/ubuntu-en-dispositivos-tactiles/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Habilitar módulos en Apache 2 sobre Ubuntu</title>
		<link>https://blog.ahierro.es/habilitar-modulos-en-apache-2-sobre-ubuntu/</link>
					<comments>https://blog.ahierro.es/habilitar-modulos-en-apache-2-sobre-ubuntu/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 22 Jul 2019 06:39:40 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1491</guid>

					<description><![CDATA[<p>En realidad esta entrada iba a tratar sobre cómo habilitar el módulo mod_rewrite en Apache 2, cosa que no tiene mucho sentido pues ya (casi) siempre viene habilitado por defecto al instalar Apache. Así que puestos a escribir sobre habilitar módulos, y dado que es una tarea bastante habitual habitual cuando instalamos un nuevo servidor &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/habilitar-modulos-en-apache-2-sobre-ubuntu/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Habilitar módulos en Apache 2 sobre Ubuntu"</span></a></p>
La entrada <a href="https://blog.ahierro.es/habilitar-modulos-en-apache-2-sobre-ubuntu/">Habilitar módulos en Apache 2 sobre Ubuntu</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>En realidad esta entrada iba a tratar sobre cómo habilitar el módulo mod_rewrite en Apache 2, cosa que no tiene mucho sentido pues ya (casi) siempre viene habilitado por defecto al instalar Apache.</p>



<p>Así que puestos a escribir sobre habilitar módulos, y dado que es una tarea bastante habitual habitual cuando instalamos un nuevo servidor web, o incluso cuando instalamos algunos paquetes de software sobre un servidor web existente, decidí escribir esta entrada más generalista.</p>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/07/habilitar.png" alt="Habilitar modulos Apache" class="wp-image-1493" width="840" height="330"/></figure>



<span id="more-1491"></span>



<p>Y es que en la actualidad, en una instalación estándar de Apache 2 sobre Ubuntu 18 se instalan más de 100 módulos, de los cuales sólo hay activos algo más de una veintena.</p>



<h2 class="wp-block-heading">Habilitar módulos</h2>



<p>Lejos quedan los tiempos en los que para habilitar módulos de Apache teníamos que editar el archivo <em>apache.conf</em>, tarea que generalmente no consistía más que en descomentar alguna línea. Hoy basta con ejecutar el comando <em>a2enmod</em> y reiniciar el servidor:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo a2enmod modulo
sudo service apache2 restart
</pre></div>


<p>Pero descubramos que hay detrás de de este comando.</p>



<p>Los módulos disponibles por Apache 2 se encuentran dentro del directorio <em>/etc/apache2/mods-available/</em>. Lo que quiere decir que si el módulo que queremos habilitar no se encuentra ahí tendremos que copiarlo  y asignarle los permisos adecuados.</p>





<p>Por otro lado, los módulos habilitados se encuentran en el directorio <em>/etc/apache2/mods-enabled/</em>. Pero en este caso en lugar de encontrar archivos, encontraremos enlaces simbólicos a los archivos situados en la carpeta <em>/etc/apache2/mods-available/</em>. Así que una alternativa al comando <em>a2enmod</em> es el comando <em>ln</em>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
sudo ln -s /etc/apache2/mods-available/modulo /etc/apache2/mods-enabled/modulo
sudo service apache2 restart
</pre></div>


<h2 class="wp-block-heading">Deshabilitar módulos</h2>



<p> Y para deshabilitar módulos la operación es muy similar, con la salvedad de que en lugar de utilizar el comando <em>a2enmod</em> utilizaremos el comando <em>a2dismod</em>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo a2dismod modulo
sudo service apache2 restart
</pre></div>


<p>O simplemente eliminaremos el enlace simbólico:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
sudo rm /etc/apache2/mods-enabled/modulo
sudo service apache2 restart
</pre></div>


<h2 class="wp-block-heading">Comprobaciones y logs de errores</h2>



<p>Podemos saber si un módulo se ha instalado correctamente revisando la salida de la función phpinfo() de php, en la sección apache2handler.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="943" height="334" src="https://blog.ahierro.es/wp-content/uploads/2019/07/phpinfo_apache_modules.png" alt="phpinfo Modulos de Apache" class="wp-image-1503" srcset="https://blog.ahierro.es/wp-content/uploads/2019/07/phpinfo_apache_modules.png 943w, https://blog.ahierro.es/wp-content/uploads/2019/07/phpinfo_apache_modules-300x106.png 300w, https://blog.ahierro.es/wp-content/uploads/2019/07/phpinfo_apache_modules-768x272.png 768w" sizes="auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></figure>



<p>Y en caso de experimentar cualquier tipo de problema, el primer lugar dónde consultar qué está ocurriendo son los logs de error de Apache 2, en el archivo  <em>/var/log/apache2/error.log</em>.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cat /var/log/apache2/error.log
</pre></div>


<h2 class="wp-block-heading">Créditos, referencias y artículos relacionados</h2>



<ul class="wp-block-list"><li>Imagen de portada por <a href="https://pixabay.com/users/stockertui-12831137/" target="_blank" rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)">Wichan Yodsawai</a>.</li><li><a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</a>.</li><li><a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/">Como configurar Virtual Hosts en Apache 2 y Ubuntu</a>.</li><li><a href="https://blog.ahierro.es/archivos-y-permisos-de-usuario-en-apache-y-linux/">Archivos y permisos de usuario en Apache 2 y Linux</a>.</li></ul>La entrada <a href="https://blog.ahierro.es/habilitar-modulos-en-apache-2-sobre-ubuntu/">Habilitar módulos en Apache 2 sobre Ubuntu</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/habilitar-modulos-en-apache-2-sobre-ubuntu/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Cómo instalar Linux dentro de Windows 10 utilizando WSL 1</title>
		<link>https://blog.ahierro.es/como-instalar-linux-dentro-de-windows-10-utilizando-wsl-1/</link>
					<comments>https://blog.ahierro.es/como-instalar-linux-dentro-de-windows-10-utilizando-wsl-1/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Wed, 19 Jun 2019 07:00:59 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[kali linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1212</guid>

					<description><![CDATA[<p>En la entrada anterior escribía sobre la experiencia de utilizar Linux desde Windows con WLC. En esta ocasión me centraré en cómo instalar Linux dentro de Windows utilizando WSL 1, un contenido muy al hilo para complementar la entrada anterior y de seguro de gran utilidad para los que todavía no lo habéis probado. La &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/como-instalar-linux-dentro-de-windows-10-utilizando-wsl-1/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Cómo instalar Linux dentro de Windows 10 utilizando WSL 1"</span></a></p>
La entrada <a href="https://blog.ahierro.es/como-instalar-linux-dentro-de-windows-10-utilizando-wsl-1/">Cómo instalar Linux dentro de Windows 10 utilizando WSL 1</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>En la entrada anterior escribía sobre la <a href="https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/">experiencia de utilizar Linux desde Windows con WLC</a>. En esta ocasión me centraré en cómo instalar Linux dentro de Windows utilizando WSL 1, un contenido muy al hilo para complementar la entrada anterior y de seguro de gran utilidad para los que todavía no lo habéis probado.</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/06/linux_en_windodws.png" alt="Linux en Windows" class="wp-image-1227" width="650" height="365" srcset="https://blog.ahierro.es/wp-content/uploads/2019/06/linux_en_windodws.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/06/linux_en_windodws-300x168.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure></div>



<span id="more-1212"></span>



<p>La instalación es muy sencilla y no nos tomará más de 10 o 15 minutos, así que vamos al lío.<em> </em></p>



<h2 class="wp-block-heading">Requisitos para instalar Linux en Windows 10 con WSL 1</h2>



<p>Nuestro equipo debe cumplir básicamente dos requisitos:</p>



<ul class="wp-block-list"><li> Tener instalado Windows 10 con versión 16215.0 o posterior .</li><li>Que la instalación de Windows 10 sea de 64 bit.</li></ul>



<p>Además es recomendable disponer al menos de un Pentium 4 a 2.4 GHz o superior, 2 GB de memoria RAM o más y 5 GB de espacio libre en el disco o más.</p>



<h2 class="wp-block-heading">Instalar WSL 1</h2>



<p>El primer paso será instalar el paquete Windows Subsystem for Linux. La forma más sencilla es abrir PowerShell como administrador y ejecuta la siguiente instrucción.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
</pre></div>




<p>La alternativa gráfica pasa por:</p>



<ol class="wp-block-list"><li>Abrir el <em>Panel de Control</em>.</li><li>Acceder al grupo <em>Programas</em>.</li><li> Abrir la ventana para <em>Activar o desactivar las características de Windows</em>.</li><li>Marcar la opción  Subsistema de Windows para Linux y aceptar.</li></ol>



<p>Con cualquiera de las dos opciones nos pedirá reiniciar.</p>



<h2 class="wp-block-heading">Elegir e instalar una distro Linux</h2>



<p>Con WSL instalado es hora de elegir la distribución que queremos instalar de las disponibles en la tienda de Microsoft. A continuación te dejo una lista de las principales:</p>



<ul class="wp-block-list"><li><a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="https://www.microsoft.com/es-es/p/debian-gnu-linux/9msvkqc78pk6?activetab=pivot%3Aoverviewtab" target="_blank">Debian GNU/Linux</a></li><li> <a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="https://www.microsoft.com/es-es/p/ubuntu-1604-lts/9pjn388hp8c9?rtc=1" target="_blank">Ubuntu 16.04 LTS</a> </li><li><a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="https://www.microsoft.com/es-es/p/ubuntu-1804-lts/9n9tngvndl3q?rtc=1" target="_blank">Ubuntu 18.04 LTS</a></li><li><a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="https://www.microsoft.com/es-es/p/opensuse-leap-15/9n1tb6fpvj8c?rtc=1" target="_blank">OpenSUSE Leap 15</a></li><li><a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="https://www.microsoft.com/es-es/p/opensuse-leap-42/9njvjts82tjx?rtc=1" target="_blank">OpenSUSE Leap 42</a></li><li><a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="https://www.microsoft.com/es-es/p/suse-linux-enterprise-server-12/9p32mwbh6cns?rtc=1" target="_blank">SUSE Linux Enterprise Server 12</a></li><li><a href="https://www.microsoft.com/es-es/p/suse-linux-enterprise-server-15/9pmw35d7fnlx?rtc=1" target="_blank" rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)">SUSE Linux Enterprise Server 15</a></li><li><a aria-label=" (abre en una nueva pestaña)" rel="noreferrer noopener" href="https://www.microsoft.com/es-es/p/kali-linux/9pkr34tncv07?activetab=pivot:overviewtab" target="_blank">Kali Linux</a></li></ul>



<p>Y como comenté en la entrada  <a href="https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/">Ejecutar Linux en Windows 10 con WSL</a>, existe una lista de distribuciones alternativas creadas específicamente para WSL:</p>



<ul class="wp-block-list"><li> <a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="https://www.microsoft.com/es-es/p/fedora-remix-for-wsl/9n6gdm4k2hnc?rtc=1" target="_blank">Fedora Remix for WSL</a></li><li> <a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="https://www.microsoft.com/es-es/p/pengwin/9nv1gv1pxz6p?rtc=1" target="_blank">WLinux</a></li><li> <a rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)" href="https://www.microsoft.com/es-es/p/pengwin-enterprise/9n8lp0x93vcp?rtc=1" target="_blank">WLinux Enterprise</a></li><li> <a href="https://www.microsoft.com/es-es/p/alpine-wsl/9p804crf0395?rtc=1" target="_blank" rel="noreferrer noopener" aria-label=" (abre en una nueva pestaña)">Alpine WSL</a> </li></ul>



<p>Es posible que con el paso del tiempo estas listas varíen, al final del artículo tienes un enlace a la documentación oficial de Microsoft dónde encontrarás la lista de distribuciones actualizada. </p>



<p>Una vez que la descarga y la instalación estén completadas ya podremos abrir nuestra flamante consola de Linux desde Windows! Solo deberemos buscar en el menú de inicio el icono de la distro que hayamos instalado y abrirla como cualquier otra aplicación.</p>



<p>En el primer arranque de nuestra consola notaremos que realiza algunas operaciones para finalizar la instalación y posteriormente nos pedirá que elijamos un nombre de usuario y una contraseña. Tal y como nos indica la consola no es necesario qué coincidan con los de Windows.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://blog.ahierro.es/wp-content/uploads/2019/06/ubuntu_primer_inicio-1.png" alt="Consola de Ubuntu en Windows" class="wp-image-1224" srcset="https://blog.ahierro.es/wp-content/uploads/2019/06/ubuntu_primer_inicio-1.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/06/ubuntu_primer_inicio-1-300x168.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<p>Y con esto hemos acabado. Si todavía no lo habéis probado os recomiendo una vez más, aún a riesgo de parecer pesado, el artículo <a href="https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/">Ejecutar Linux en Windows 10 con WSL</a>, que estoy convencido de que os resultará de utilidad.</p>



<h2 class="wp-block-heading">Créditos y Referencias</h2>



<ul class="wp-block-list"><li><a rel="noreferrer noopener" aria-label="Documentación de Windows Subsystem for Linux (abre en una nueva pestaña)" href="https://docs.microsoft.com/en-us/windows/wsl/about" target="_blank">Documentación de Windows Subsystem for Linux</a></li><li><a href="https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/">Ejecutar Linux en Windows 10 con WSL</a></li></ul>La entrada <a href="https://blog.ahierro.es/como-instalar-linux-dentro-de-windows-10-utilizando-wsl-1/">Cómo instalar Linux dentro de Windows 10 utilizando WSL 1</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/como-instalar-linux-dentro-de-windows-10-utilizando-wsl-1/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Ejecutar Linux en Windows 10 con WSL</title>
		<link>https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/</link>
					<comments>https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 17 Jun 2019 22:16:32 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[kali linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1237</guid>

					<description><![CDATA[<p>Aprovechando que recientemente Microsoft ha lanzado la versión 2 de su WSL (Windows Subsystem for Linux), vamos a hablar sobre esta funcionalidad que personalmente me resulta de gran utilidad, y lo haremos abordándola desde un punto de vista principalmente práctico. Creo que todo usuario de Linux estará de acuerdo conmigo en que la mejor forma &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Ejecutar Linux en Windows 10 con WSL"</span></a></p>
La entrada <a href="https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/">Ejecutar Linux en Windows 10 con WSL</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Aprovechando que recientemente Microsoft ha lanzado la versión 2 de su WSL (Windows Subsystem for Linux), vamos a hablar sobre esta funcionalidad que personalmente me resulta de gran utilidad, y lo haremos abordándola desde un punto de vista principalmente práctico.</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img loading="lazy" decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/06/linux_en_windodws.png" alt="Linux en Windows" class="wp-image-1227" width="650" height="365" srcset="https://blog.ahierro.es/wp-content/uploads/2019/06/linux_en_windodws.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/06/linux_en_windodws-300x168.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure></div>



<span id="more-1237"></span>



<p>Creo que todo usuario de Linux estará de acuerdo conmigo en que la mejor forma de instalar Linux es hacerlo de la forma tradicional, es decir, con sus correspondientes particiones, de forma que podamos encender nuestro PC directamente en nuestra distro preferida con el cien por cien de recursos y opciones disponibles.</p>





<p>Pero esto no es siempre posible, y aunque lo fuera tenemos múltiples opciones que podemos aprovechar en función de nuestras necesidades, como por ejemplo:</p>



<ul class="wp-block-list"><li>Ejecutar Linux en modo live USB o CD.</li><li>Crear una máquina virtual con la distro que elijamos.</li><li>Instalar Linux en un SBC (Single Board Computer) como puede ser una Raspberry Pi.</li><li>Instalar Linux dentro de Windows 10, como si de una aplicación más se tratase.</li></ul>



<p>Todas éstas son opciones muy válidas y tienen sus propias ventajas e inconvenientes con respecto a una instalación tradicional. Nosotros hoy, tal y como reza el título de esta entrada, nos centraremos en la última de ellas.</p>



<h2 class="wp-block-heading">Inconvenientes de ejecutar Linux desde Windows</h2>



<p>Puesto que de partida ya imaginamos que este sistema tendrá muchas limitaciones, hablaremos primero de ellas, para luego ver sus virtudes:</p>



<ul class="wp-block-list"><li>Solo podemos hacer uso de la consola, es decir, no tenemos disponible ningún sistema de escritorio.</li><li>La lista de distribuciones disponibles es muy limitada.</li><li>El rendimiento es bastante inferior a una instalación nativa. Por lo que he podido leer el rendimiento debería ser superior al de una máquina virtual, por mi experiencia con WSL 1 no pondría la mano en el fuego por ello.</li></ul>



<p>Seguro que tiene muchas más limitaciones, pero estas han sido para mi las más evidentes o las que más me han afectado mientras hago uso de este sistema, y son muchas menos de las que en un principio había esperado.</p>



<h2 class="wp-block-heading">Ventajas de ejecutar Linux desde Windows</h2>



<p>Y una vez vistas las desventajas, veamos ahora algunas de sus virtudes:</p>



<ul class="wp-block-list"><li>Disponer de toda la potencia de la consola de Linux sin necesidad de reiniciar, levantar una máquina virtual o conectar a un host Linux. Esto lo agradecerán sobre todo los usuarios más habituales y avanzados de Linux.</li><li>Reducir el número de reinicios para alternar entre sistemas operativos. Aunque esto no es más que una consecuencia del punto anterior.</li><li>Poder acceder a los archivos de Windows desde la consola de Linux, con lo que conseguimos utilizar la potencia de la consola de Linux en el propio sistema de ficheros de Windows.</li><li>Si eres desarrollador web y trabajas en Windows, podrás olvidarte de aplicaciones que seguro conoces como WAMP, XAMPP, Appserv, etc. Podrás tener un servidor LAMP dentro de Windows, con todos los beneficios que ello supone.</li></ul>



<p>Al igual que indiqué con los inconvenientes, parecen pocas ventajas y seguro que tiene muchas más, pero estas son las que hasta el momento más me han aportado a mi.</p>





<h2 class="wp-block-heading">¿Merece la pena instalar Linux dentro de Windows?</h2>



<p>Y una vez vistas las ventajas y los inconvenientes, la pregunta que surge automáticamente es si merece la pena instalar Linux dentro de Windows, y para mi la respuesta es un Si rotundo.</p>



<p>Evidentemente una instalación de estas características nunca podrá sustituir a una instalación tradicional, pero esta no es la intención de WSL. En cambio si la vemos como un complemento a nuestro sistema operativo Windows, es una funcionalidad que le hace ganar muchos puntos: podremos utilizar herramientas como VIM o Emacs, todos los comandos disponibles en Linux sobre los archivos de Windows, servidores como Apache, MySQL u Open SSH, etc.</p>



<p>Y lo mejor es que no tienes que elegir, es decir, yo en mi equipo tengo una instalación tradicional de Ubuntu y Windows 10 con Grub en la partición de arranque. Pero es que además dentro de Windows 10 tengo instalado otro Ubuntu con WSL que lo complementa y lo potencia, así que de nuevo la respuesta es Si.</p>



<h2 class="wp-block-heading">Distribuciones de Linux disponibles para instalar en Windows</h2>



<p>Ya lo adelantamos en el apartado de limitaciones, la lista de distribuciones de Linux disponibles para instalar es bastante limitada:</p>



<ul class="wp-block-list"><li>Debian</li><li>Ubuntu</li><li>Suse</li><li>openSuse</li><li>Kali Linux</li></ul>



<p>Y es que teniendo en cuenta la gran cantidad de distribuciones de Linux existentes es de esperar que muchos usuarios echen de menos su distribución preferida, pero si valoramos el uso que haremos de esta distro es posible que la oferta no esté nada mal. </p>



<p>También existen algunas distribuciones derivadas de las «originales» creadas específicamente para trabajar con WSL como son:</p>



<ul class="wp-block-list"><li>Fedora Remix for WSL</li><li>WLinux</li><li>WLinux Enterprise</li><li>Alpine WSL</li></ul>



<h2 class="wp-block-heading">Algunas cosas que te interesará saber</h2>



<p>Y a modo práctico, algunos tips variados que he creído que podrían resultar interesante y que no he podido encajar en ninguna otra parte de esta entrada son las siguientes:</p>



<ul class="wp-block-list"><li>Desde Linux tendrás acceso al sistema de archivos de Windows en la ruta /mnt/c. La «c» se corresponde con la letra de la unidad a la que queremos queremos acceder.</li><li>Aunque cierres la venta de tu Linux el sistema seguirá funcionando de fondo, por lo que podrás hacer pleno uso de servicios como Cron, Apache2, etc.</li><li> No podrás hacer uso de copiar y pegar como es habitual en un emulador de consola en el  escritorio de Linux o una sesión de SSH con Putty.</li><li>En un mismo SSOO Windows puedes instalar más de una distribución de Linux.</li><li>Aunque no lo he probado, puedes mantener varias instalaciones de SSOO Linux corriendo en versiones distintas de WSL.</li></ul>



<h2 class="wp-block-heading">Diferencias entre WSL 1 y WSL 2</h2>



<p>Y ya que abrimos el artículo haciendo referencia a las versiones de WSL, veamos cuales con las diferencias. WSL 1 y 2 ofrecen prácticamente la misma experiencia de usuario. Las mejoras de WSL 2 están enfocadas exclusivamente en el rendimiento, y focalizadas en dos puntos principales:</p>



<ol class="wp-block-list"><li> Mejora en el rendimiento del sistema de ficheros.</li><li>Mejora del rendimiento de las llamadas entre Windows y Linux mediante el sistema que han denominado Full System Call Compatibility.</li></ol>



<p>Pero como todavía no he probado WSL 2, de momento no puedo daros mi opinión al respecto.</p>



<h2 class="wp-block-heading">Créditos y Referencias</h2>



<ul class="wp-block-list"><li><a rel="noreferrer noopener" aria-label="Documentación de Windows Subsystem for Linux (abre en una nueva pestaña)" href="https://docs.microsoft.com/en-us/windows/wsl/about" target="_blank">Documentación de Windows Subsystem for Linux</a></li></ul>La entrada <a href="https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/">Ejecutar Linux en Windows 10 con WSL</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/ejecutar-linux-en-windows-10-con-wsl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Averiguar que versión de Linux tengo instalada</title>
		<link>https://blog.ahierro.es/averiguar-que-version-de-linux-tengo-instalada/</link>
					<comments>https://blog.ahierro.es/averiguar-que-version-de-linux-tengo-instalada/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 10 Jun 2019 06:00:47 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1171</guid>

					<description><![CDATA[<p>A pesar de ser una tarea sumamente sencilla, conocer la versión de Linux que tenemos instalada es una cuestión recurrente, al menos para mi. Cada ciertos tiempo, sea por un motivo u otro, acabo necesitando conocer la versión del sistema sobre la qué estoy trabajando, y no sabéis la cantidad de veces que he realizado &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/averiguar-que-version-de-linux-tengo-instalada/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Averiguar que versión de Linux tengo instalada"</span></a></p>
La entrada <a href="https://blog.ahierro.es/averiguar-que-version-de-linux-tengo-instalada/">Averiguar que versión de Linux tengo instalada</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>A pesar de ser una tarea sumamente sencilla, conocer la versión de Linux que tenemos instalada es una cuestión recurrente, al menos para mi. Cada ciertos tiempo, sea por un motivo u otro, acabo necesitando conocer la versión del sistema sobre la qué estoy trabajando, y no sabéis la cantidad de veces que he realizado esta consulta en algún buscador.</p>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/06/version_linux.png" alt="" class="wp-image-1179" width="650" height="438" srcset="https://blog.ahierro.es/wp-content/uploads/2019/06/version_linux.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/06/version_linux-300x202.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-1171"></span>



<p class="has-text-align-left">Además de la versión de Linux que tenemos instalada, existen otros aspectos relativos al sistema que guardan bastante relación cómo son la distribución, si es un sistema de 32 o de 64 bits o la versión del kernel. Estos datos son un buen complemento y pueden resultar de gran ayuda cuando buscamos la versión de Linux.</p>



<h2 class="wp-block-heading">Versión de Linux desde el terminal</h2>



<p>La forma más rápida y sencilla de averiguar sobre que versión de Linux estamos trabajando es mediante el terminal, desde dónde tendremos múltiples opciones.</p>





<h3 class="wp-block-heading">Comando lsb_release</h3>



<p>Es mi opción más habitual. Lsb son las siglas de Linux Standard Base, un dato que quizás como a mi te ayude a recordar mejor este comando:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
lsb_release -a
</pre></div>


<p>Y nos devolverá un resultado similar al siguiente, dónde además de la versión podemos ver la distro:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:        16.04
Codename:       xenial
</pre></div>


<p>En caso de que el comando no te funcione, es decir, que no esté instalado por defecto, solo tendremos que instalarlo:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get update
sudo apt-get install lsb-release
</pre></div>


<h3 class="wp-block-heading">Comando hostnamectl</h3>



<p>Otra alternativa quizás menos específica pero que igualmente arrojará la información que buscamos es el comando <em>hostnamectl</em>. Este comando además nos devolverá información sobre la distribución, la versión del kernel, la arquitectura del procesador o la ID de la máquina:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
hostnametcl
</pre></div>


<p>En este caso el resultado seria algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
   Static hostname: pcname
         Icon name: computer
        Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           Boot ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  Operating System: Ubuntu 16.04.6 LTS
            Kernel: Linux 4.4.38-v7+
      Architecture: arm
</pre></div>


<h3 class="wp-block-heading">/etc/*-release</h3>



<p>Otra alternativa aparentemente menos sofisticada pero igualmente válida es consultar la información de los archivos <em>/etc/os-release</em>, <em>/etc/lsb-release</em> o <em>/etc/*-release</em>. En función de nuestra distro la información se encontrará en uno o varios de estos archivos.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cat /etc/os-release
</pre></div>


<p>Las salidas que obtendremos pueden variar ligeramente, pero básicamente serán parecidas a la que muestro. En esta ocasión también vemos que obtenemos el nombre de la distribución.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
NAME=&quot;Ubuntu&quot;
VERSION=&quot;16.04.6 LTS (Xenial Xerus)&quot;
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=&quot;Ubuntu 16.04.6 LTS&quot;
VERSION_ID=&quot;16.04&quot;
HOME_URL=&quot;http://www.ubuntu.com/&quot;
SUPPORT_URL=&quot;http://help.ubuntu.com/&quot;
BUG_REPORT_URL=&quot;http://bugs.launchpad.net/ubuntu/&quot;
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
</pre></div>


<h2 class="wp-block-heading">Versión de Linux desde el escritorio</h2>



<p>Desde el escritorio la cantidad de opciones se reduce, o no, pues mi recomendación, si sólo queremos conocer la versión de Linux sobre la que estamos trabajando es que presiones la combinación de teclas:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
Ctrl + Alt + t
</pre></div>


<p>Y una vez que se abra el terminal uses una de las opciones que acabamos de ver.</p>



<h3 class="wp-block-heading">Hardinfo</h3>



<p>Una alternativa sencilla y lijera para ver información sobre la versión de Linux desde el entorno gráfico es utilizar el programa Hardinfo. Es muy probable que no esté instalado por defecto, si así, como es habitual:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo apt-get update
sudo apt-get install hardinfo
</pre></div>


<p>La aplicación es muy sencilla de utilizar y solo deberemos desplazarnos hasta el apartado «Sistema Operativo». Como veis en la captura de pantalla, la aplicación tiene mucha información extra de gran utilidad:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="650" height="438" src="https://blog.ahierro.es/wp-content/uploads/2019/06/hardinfo.png" alt="Hardinfo" class="wp-image-2288" srcset="https://blog.ahierro.es/wp-content/uploads/2019/06/hardinfo.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/06/hardinfo-300x202.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<h2 class="wp-block-heading">Otra información Interesante</h2>



<p>Como comentamos al comienzo de la entrada existe cierta información que guarda mucha relación con la versión de Linux y que puede sernos muy útil. Veamos cómo obtener alguna de esta información.</p>



<h3 class="wp-block-heading">Averiguar si una instalación de Linux es de 32 o de 64 bits</h3>



<p>Es más que probable que en ciertas ocasiones quieras saber si tu instalación de Linux es de 32 o de 64 bits. Podemos averiguarlo utilizando alguno de los siguientes comandos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
getconf LONG_BIT
</pre></div>


<p>O:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
uname -i
</pre></div>


<h3 class="wp-block-heading">Averiguar la versión del kernel de Linux</h3>



<p>Esta es otra duda muy relacionada que con el paso del tiempo y la sofisticación de Linux se ha vuelto algo menos común. De nuevo hacemos uso del comando <em>uname</em>: </p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
uname -r
</pre></div>


<p>Y la salida que nos devolverá será algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
4.15.0-51-generic
</pre></div>


<h2 class="wp-block-heading">Créditos y referencias</h2>



<ul class="wp-block-list"><li>Imagen de portada: <a href="https://pixabay.com/users/qimono-1962238/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1872665" target="_blank" rel="noreferrer noopener" aria-label="Arek Socha (abre en una nueva pestaña)">Arek Socha</a></li></ul>La entrada <a href="https://blog.ahierro.es/averiguar-que-version-de-linux-tengo-instalada/">Averiguar que versión de Linux tengo instalada</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/averiguar-que-version-de-linux-tengo-instalada/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Clonar una web: los archivos</title>
		<link>https://blog.ahierro.es/clonar-una-web-los-archivos/</link>
					<comments>https://blog.ahierro.es/clonar-una-web-los-archivos/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Thu, 06 Jun 2019 05:39:03 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[linux]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1078</guid>

					<description><![CDATA[<p>En la entrada previa hemos visto cómo clonar la base de datos como parte de nuestro objetivo de disponer de un entorno de pruebas de nuestra web en un servidor local actualizado regularmente. En esta ocasión abordamos cómo mantener una copia actualizada de los archivos de nuestro servidor para así completar el proceso. Esta es &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/clonar-una-web-los-archivos/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Clonar una web: los archivos"</span></a></p>
La entrada <a href="https://blog.ahierro.es/clonar-una-web-los-archivos/">Clonar una web: los archivos</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>En la entrada previa hemos visto <a href="https://blog.ahierro.es/clonar-una-web-la-base-de-datos/">cómo clonar la base de datos </a>como parte de nuestro objetivo de disponer de un entorno de pruebas de nuestra web en un servidor local actualizado regularmente. En esta ocasión abordamos cómo mantener  una copia actualizada de los archivos de nuestro servidor para así completar el proceso.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="438" src="https://blog.ahierro.es/wp-content/uploads/2019/05/clonar_web.png" alt="Conar Web" class="wp-image-927" srcset="https://blog.ahierro.es/wp-content/uploads/2019/05/clonar_web.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/05/clonar_web-300x202.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-1078"></span>



<p>Esta es la tercera entrega de la serie <a href="https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/">Clonar una web en un servidor local</a>, por lo que te recomiendo leer las entregas previas. No obstante, este artículo puede ser tratado como un artículo atómico asumiendo que perdemos ciertos matices.</p>





<p>Una de las ventajas del proceso de clonado de los archivos frente al de clonado de una base de datos es que si bien con la base de datos podíamos encontrarnos muchas limitaciones en función de los diferentes proveedores y planes de hostings, para clonar los archivos el único requisito que debemos cumplir con respecto a nuestro host remoto es tener acceso mediante ftp, algo que todos los hosting ofrecen.</p>



<h2 class="wp-block-heading">Descarga de archivos</h2>



<p>Para descargar los archivos nos serviremos del comando wget. Comenzaremos el proceso creando un script de consola y le asignándole los permisos necesarios:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
mkdir ~/scripts
vim ~/scripts/cloneWebFiles.sh
chmod 0755 ~/scripts/clonWebFiles.sh
</pre></div>


<p>Con el siguiente contenido:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
#!/bin/bash

wget -r -N -q --level=15 --user=user --password=&#039;password&#039; --directory-prefix=~/webBackUp fttp://ftp.url.com
</pre></div>


<p>Dónde:</p>



<ul class="wp-block-list"><li>-r, indica recursividad</li><li>-N, indica que descargue solo archivos nuevos y/o modificados</li><li>-q, oculta los mensajes de salida del comando</li><li>&#8211;level=15, es el numero de niveles de recursividad</li><li>&#8211;user=user, es el usuario ftp</li><li>&#8211;password=&#8217;password&#8217;, es la contraseña del ftp</li><li>&#8211;directory-prefix=~/webBackUp, es el directorio dónde copiaremos los archivos</li><li>fttp://ftp.url.com, es el ftp con el path del que queremos descargar los archivos</li></ul>



<p>Esto realizará una copia de los archivos de nuestra web en la carpeta <em>~/webBackUp/ftp.url.com</em>. Esta operación suele tardar bastante tiempo, así que para agilizarla hemos optado por descargar únicamente los archivos nuevos y/o modificados recientemente, aun así con una web de tamaño medio tardará un buen rato.</p>



<p>Debemos destacar que no descargamos los archivos directamente a nuestro entorno de pruebas, sino que los descargamos a una carpeta intermedia. Esto lo hacemos por dos motivos:</p>



<ol class="wp-block-list"><li>Modificaremos algunos archivos antes de copiarlos en nuestro entorno de pruebas.</li><li>Podemos crear un segundo script que omita la descarga y que restaure nuestra copia mucho más rápido, muy útil en caso de querer descartar los cambios realizados y comenzar desde 0.</li></ol>



<h2 class="wp-block-heading">Modificación de datos relativos al entorno</h2>



<p>Una vez hecha la descarga de los archivos deberemos modificar los que contienen datos relativos a nuestro host. En nuestro ejemplo, el archivo <em>wp-config.php </em>almacena la inforación de la conexión a la base de datos. En vuestro caso debereis localizar que archivos contienen este tipo de información antes de seguir avanzando.</p>



<p>La estrategia que seguiremos para ello sera la de realizar una copia inicial de forma manual de los archivos sensibles al entorno de pruebas. Una vez hecha actualizaremos los datos necesarios.</p>



<p>Por otro lado, automatizaremos una tarea que renombra estos archivos en la ubicación intermedia, de forma que cuando realicemos la copia al entorno de pruebas no se sobrescriban. Así que agregamos estas dos líneas a nuestro script:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
rm ~/webBackUp/ftp.url.com/w-config.php.renamed
mv ~/webBackUp/ftp.url.com/w-config.php ~/webBackUp/ftp.url.com/w-config.php.renamed
</pre></div>


<h2 class="wp-block-heading">Copia de archivos a la ubicación definitiva</h2>



<p>Ya con los archivos descargados y una vez resuelta la problemática de la información sensible al entorno copiamos los archivos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cp -r ~/webBackUp/ftp.url.com/* /var/www/targetVHost
</pre></div>


<p>Como vemos, este sistema solo copia los archivos nuevos y/o que han sufrido cambios, pero si hemos eliminado un archivo de nuestro host remoto no lo eliminará de nuestro host local. Para mi esta situación no supone un problema a día de hoy, así que simplemente no hago nada, pero siempre se puede preparar algún sistema que busque la diferencia de archivos entre la copia intermedia y el entorno de prueba y elimine los sobrantes de esta segunda ubicación. </p>



<h2 class="wp-block-heading">El script</h2>



<p>Y todo el rollazo que os he soltado se traduce básicamente en el siguiente script: </p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
#!/bin/bash

wget -r -N -q --level=15 --user=user --password=&#039;password&#039; --directory-prefix=~/webBackUp fttp://ftp.url.com
rm ~/webBackUp/ftp.url.com/w-config.php.renamed
mv ~/webBackUp/ftp.url.com/w-config.php ~/webBackUp/ftp.url.com/w-config.php.renamed
cp -r ~/webBackUp fttp://ftp.url.com/* /var/www/targetVHost
</pre></div>


<h2 class="wp-block-heading">Programar la ejecución de la copia</h2>



<p>Al igual que hicimos con la clonación de la base de datos programamos la ejecución del script con Cron:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
crontab -e
</pre></div>


<p>E incluimos la siguiente línea en el archivo crontab:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
0 2 * * 5 ~/scripts/clonWebFiles.sh
</pre></div>


<p>Aunque en principio ambos script podrían ejecutarse a la misma vez, hemos sido precavidos retrasando una hora la ejecución de la copia de los archivos, de forma que se ejecute cada viernes a las 02:00 de la madrugada.</p>



<h2 class="wp-block-heading">Créditos y Referencias</h2>



<ul class="wp-block-list"><li>Articulo de la serie: <a href="https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/">Clonar una web en un servidor local</a>.</li><li>Entrega previa de la seie: <a href="https://blog.ahierro.es/clonar-una-web-la-base-de-datos/">Clonar una web: la base de datos</a>.</li><li>Imagen de portada: <a rel="noreferrer noopener" aria-label="Martin Harry (abre en una nueva pestaña)" href="https://pixabay.com/users/martinharry-1411929/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=941625" target="_blank">Martin Harry</a>.</li></ul>La entrada <a href="https://blog.ahierro.es/clonar-una-web-los-archivos/">Clonar una web: los archivos</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/clonar-una-web-los-archivos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Clonar una web: la base de datos</title>
		<link>https://blog.ahierro.es/clonar-una-web-la-base-de-datos/</link>
					<comments>https://blog.ahierro.es/clonar-una-web-la-base-de-datos/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Thu, 06 Jun 2019 05:37:13 +0000</pubDate>
				<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1076</guid>

					<description><![CDATA[<p>Clonar una web se divide básicamente en clonar los archivos y clonar la base de datos. Y si como en nuestro caso además queremos mantener una copia actualizada con relativa frecuencia deberemos automatizar este proceso. En esta entrada veremos cómo de sencillo es hacerlo intentando mantener la máxima compatibilidad con cualquier tipo de hosting. Esta &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/clonar-una-web-la-base-de-datos/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Clonar una web: la base de datos"</span></a></p>
La entrada <a href="https://blog.ahierro.es/clonar-una-web-la-base-de-datos/">Clonar una web: la base de datos</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Clonar una web se divide básicamente en clonar los archivos y clonar la base de datos. Y si como en nuestro caso además queremos mantener una copia actualizada con relativa frecuencia deberemos automatizar este proceso. En esta entrada veremos cómo de sencillo es hacerlo intentando mantener la máxima compatibilidad con cualquier tipo de hosting.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="438" src="https://blog.ahierro.es/wp-content/uploads/2019/05/clonar_web.png" alt="Conar Web" class="wp-image-927" srcset="https://blog.ahierro.es/wp-content/uploads/2019/05/clonar_web.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/05/clonar_web-300x202.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-1076"></span>



<p>Esta entrada pertenece a la serie <a href="https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/">Clonar una web en un servidor local</a>. Por ese motivo te recomiendo que leas dicho artículo para darle perspectiva a este. Sea como sea, este artículo puede ser leído sin la referencia anterior, pero perderemos ciertos matices que quizás resulten interesantes. </p>



<h2 class="wp-block-heading">Backup de la base de datos remota</h2>



<p>En función del hosting que tengamos contratado dispondremos de una serie de funcionalidades. Por norma general si has contratado un VPS o servidor dedicado tendrás la posibilidad de ejecutar scripts de consola, lo cual ofrece muchas posibilidades para la tarea que queremos realizar.</p>



<p>Si por el contrario dispones de un hosting compartido no sueles tener acceso a esta opción, así que para dar respuesta a la mayor cantidad de situaciones posibles realizaremos el backup con PHP, más concretamente haremos uso de la clase <a rel="noreferrer noopener" aria-label="MySql Backup Lite  (abre en una nueva pestaña)" href="https://github.com/ahierrohdez/MySqlBackupLite" target="_blank">MySql Backup Lite </a>que introducimos en la entrada <a href="https://blog.ahierro.es/backup-de-base-de-datos-mysql-con-php/">Backup de base de datos MySQL con PHP</a>. Y para programar la ejecución de esta tarea nos ayudaremos de nuestro servidor local, dónde programaremos la ejecución de un script que acceda a la url que realiza el respaldo.</p>





<p>Para no extendernos demasiado y no repetirnos, no copiaremos la clase en esta entrada, puedes encontrarla en los enlaces del párrafo anterior.</p>



<p>Así que crearemos un script en PHP en nuestro servidor remoto que llamaremos <em>backUpDb.php </em>en el directorio <em>scripts</em> que tras ser ejecutado generará una copia de la base de datos en el archivo <em>backups</em>/<em>wordpressBackUp.sql</em>. </p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: php; title: ; notranslate">
include(&#039;MySqlBackup.php&#039;);

$arrayDbConf&#x5B;&#039;host&#039;] = &#039;dbHost&#039;;
$arrayDbConf&#x5B;&#039;user&#039;] = &#039;dbUser&#039;;
$arrayDbConf&#x5B;&#039;pass&#039;] = &#039;dbPassword&#039;;
$arrayDbConf&#x5B;&#039;name&#039;] = &#039;wordpressDbName&#039;;

try {

  $bck = new MySqlBackupLite($arrayDbConf);
  $bck-&gt;backUp();
  $bck-&gt;setFileDir(&#039;../backups/&#039;);
  $bck-&gt;setFileName(&#039;wordpressBackUp.sql&#039;);
  $bck-&gt;saveToFile();

}
catch(Exception $e) {

  die($e);

}
</pre></div>


<p>Si nuestro hosting tiene habilitada la conexión remota a la base de datos este paso podríamos ejecutarlo en el servidor local. Como no siempre tendremos esta opción, nos hemos decantado por la alternativa más universal.</p>



<p>Y puesto que en este ejemplo el backup es de una plataforma WordPress, y que por ese motivo los datos de conexión a la base de datos ya están especificados en un archivo de configuración escrito en PHP, sería más interesante hacer un <em>include</em> del archivo <em>wp-config.php </em>y obtenerlos desde ahí. De nuevo, en pro de mantener esta entrada lo más genérica posible hemos decidido hacerlo así.</p>



<h2 class="wp-block-heading">Programar la ejecución del backup de la base de datos</h2>



<p>Una vez más existen múltiples opciones para programar esta tarea, unas más elegantes que otras. En un VPS programar una tarea con Cron sería lo más lógico y eficiente, pero tal y como hemos comentado, tomaremos la opción que podemos aplicar independientemente del hosting que tengamos: utilizaremos Cron en nuestro servidor local para programar una tarea que ejecute el script de backup de base de datos que acabamos de crear en el host remoto.</p>



<p>Para ello creamos un script de consola y le asignamos los permisos necesarios:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
mkdir ~/scripts
vim ~/scripts/cloneWebDb.sh
chmod 0755 ~/scripts/clonWebDb.sh
</pre></div>


<p>Con el siguiente contenido:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
#!/bin/bash

curl -Is https://url.com/scripts/backUpDb.php
</pre></div>


<p>Y programamos la ejecución del script con Cron:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
crontab -e
</pre></div>


<p>E incluimos la siguiente línea en el archivo crontab:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
0 1 * * 5 ~/scripts/clonWebDb.sh
</pre></div>


<p>Asegurándonos de que el script se ejecuta cada Viernes a la 1 de la madrugada. Evidentemente puedes programar la periodicidad que más te convenga. Puedes visitar la entrada <a href="https://blog.ahierro.es/programar-tareas-en-ubuntu-con-cron/">Programar tareas en Ubuntu con Cron</a> para profundizar en la programación de tareas con Cron.</p>



<h2 class="wp-block-heading">Descargar el backup de la base de datos</h2>



<p>Lo siguiente es descargar el backup que acabamos de realizar. Lo haremos mediante el protocolo ftp, sirviéndonos del comando wget. Para ello agregamos una línea más a nuestro script clonWeb.sh, de forma que quede así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
#!/bin/bash

curl -Is https://url.com/scrpts/backUpDb.php
wget -q --user=user --password=&#039;password&#039; --directory-prefix=~/webBackUp fttp://ftp.url.com/backups/wordpressBackUp.sql
</pre></div>


<p>Dónde:</p>



<ul class="wp-block-list"><li>-q, oculta los mensajes de salida del comando</li><li>&#8211;user=user, es el usuario ftp</li><li>&#8211;password=&#8217;password&#8217;, es la contraseña del ftp</li><li>&#8211;directory-prefix=~/webBackUp, es el directorio dónde copiaremos los archivos</li><li>fttp://ftp.url.com/backups/wordpressBackUp.sql, es el ftp con el path del que queremos descargar los archivos</li></ul>



<p>Con esto ya habremos descargado nuestra base de datos en el directorio <em>~/webBackUp/ftp.url.com/backups/wordpressBackUp.sql</em>. El siguiente paso será restaurarla.</p>



<h2 class="wp-block-heading">Restauración de la base de datos</h2>



<p>Y para restaurar la base de datos en nuestro servidor local la estrategia que seguiremos será:</p>



<ol class="wp-block-list"><li>Eliminamos la base de datos.</li><li>Volvemos a crear base de datos vacía.</li><li>Restauramos la base de datos desde el backup.</li></ol>



<p>Como puedes ver el proceso es bastante crítico pues elimina completamente la copia existente. Además hará que durante el tiempo que toma el proceso nuestro clon local no esté accesible. En mi caso el uso que le voy a dar es disponer de una réplica de una web en productivo en un servidor local para realizar pruebas. Para este uso el riesgo es perfectamente asumible, y en todo el tiempo que llevo utilizándola no he tenido ningún tipo de problema. Evidentemente, tú deberás evaluar si este riego y esta parada de servicio son asumibles para ti.</p>



<p>Así que crearemos un script SQL que elimine completamente la base de datos y vuelva a crearla. De nuevo lo haremos dentro de la carpeta <em>~/scripts </em>y lo llamaremos <em>dropAndCreateDb.sql</em>. El contenido será el siguiente:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
DROP DATABASE localDbName;
CREATE DATABASE localDbName;
</pre></div>


<p>Y agregamos dos líneas más a nuestro script de consola para ejecutar</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
#!/bin/bash

curl -Is https://urlToScript.com/backUpDb.php
wget -N -q --user=user --password=&#039;password&#039; --directory-prefix=~/webBackUp ftp://ftp.miweb.com/path/backups/wordpressBackUp.sql
mysql -u localDbUserName -plocalDbPassword localDbName &lt; ~/scripts/dropAndCreateDb.sql
mysql -u localDbUserName -plocalDbPassword localDbName &lt; ~/webBackUp/ftp.url.com/backups/wordpressBackUp.sql
</pre></div>


<h2 class="wp-block-heading">Actualización de los datos relativos al entorno</h2>



<p>El último paso para dar por completado el proceso de clonación de nuestra base de datos será reemplazar todos los datos datos necesarios para que nuestro clon funcione perfectamente. Este paso es el que más puede variar de un entorno a otro, a continuación os dejo un ejemplo bastante básico para un blog realizado en wordpress:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; title: ; notranslate">
update wp_options set option_value=&#039;http://192.168.1.10&#039; where option_name=&#039;siteurl&#039;;
update wp_options set option_value=&#039;http://192.168.1.10&#039; where option_name=&#039;home&#039;;
update wp_posts set guid=REPLACE(guid, &#039;blog.ahierro.es&#039;, &#039;192.168.1.146:8085&#039;) where guid like &#039;%blog.ahierro.es%&#039;;
</pre></div>


<p>Vosotros tendréis que localizar las tablas, campos y registro a modificar en vuestras plataformas. En el ejemplo expuesto las dos primeras líneas hacen referencia a datos de configuración y son imprescindible, pues de no actualizar estos campos nuestro wordpress local siempre redirigiría al remoto.</p>



<h2 class="wp-block-heading">Créditos y Referencias</h2>



<ul class="wp-block-list"><li>Articulo de la serie: <a href="https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/">Clonar una web en un servidor local</a>.</li><li>Siguiente entrega de la serie: <a href="https://blog.ahierro.es/clonar-una-web-los-archivos/">Clonar una web: los archivos</a>.</li><li>Clase  <a rel="noreferrer noopener" href="https://github.com/ahierrohdez/MySqlBackupLite" target="_blank">MySql Backup Lite</a>.</li><li>Imagen de portada: <a rel="noreferrer noopener" aria-label="Martin Harry (abre en una nueva pestaña)" href="https://pixabay.com/users/martinharry-1411929/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=941625" target="_blank">Martin Harry</a>.</li></ul>La entrada <a href="https://blog.ahierro.es/clonar-una-web-la-base-de-datos/">Clonar una web: la base de datos</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/clonar-una-web-la-base-de-datos/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Clonar una web en un servidor local</title>
		<link>https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/</link>
					<comments>https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Thu, 06 Jun 2019 05:34:58 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=900</guid>

					<description><![CDATA[<p>Independientemente de los distintos entornos de desarrollo que podamos tener configurados, en muchas ocasiones es tremendamente util disponer de una copia exacta de nuestra web de producción en otro servidor local o remoto. Y cuando hablamos de «una copia exacta», queremos decir que tanto archivos como bases de datos estén perfectamente actualizados. Esto es muy &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Clonar una web en un servidor local"</span></a></p>
La entrada <a href="https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/">Clonar una web en un servidor local</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></description>
										<content:encoded><![CDATA[<p>Independientemente de los distintos <a href="https://blog.ahierro.es/entornos-en-el-desarrollo-de-software/">entornos de desarrollo</a> que podamos tener configurados, en muchas ocasiones es tremendamente util disponer de una copia exacta de nuestra web de producción en otro servidor local o remoto.</p>



<p>Y cuando hablamos de «una copia exacta», queremos decir que tanto archivos como bases de datos estén perfectamente actualizados. Esto es muy útil para realizar pruebas de todo tipo: nuevos plugins, cambios de configuración, revisión de actualizaciones, etc.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="438" src="https://blog.ahierro.es/wp-content/uploads/2019/05/clonar_web.png" alt="Conar Web" class="wp-image-927" srcset="https://blog.ahierro.es/wp-content/uploads/2019/05/clonar_web.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/05/clonar_web-300x202.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<span id="more-900"></span>



<p>Realizar esta tarea manualmente es tedioso, aburrido y consume mucho tiempo, eso sin contar que es probable que cuando nos propongamos realizar nuestras pruebas este entorno esté desactualizado, alterado por las últimas pruebas realizadas, o lo que es aún peor, no esté disponible. Así que una buena idea es automatizar esta tarea y programar su ejecución con la periodicidad que nos interese.</p>



<h2 class="wp-block-heading">Algunos aspectos relativos al clonado</h2>



<h3 class="wp-block-heading">Resumen del proceso</h3>



<p>Es buena idea tener una visión general del proceso antes de adentrarnos en él. Lo que vamos a hacer básicamente es un proceso ETL  (Extract, Transform, Load) manual.</p>



<p>Como parte del proceso de extracción realizaremos una copia de seguridad de la base de datos y la descargaremos a una ubicación intermedia. Haremos lo mismo con los archivos del servidor.</p>





<p>Una vez tenemos todo lo necesario en nuestro servidor local, modificamos algunos datos como son archivos de configuración o los registros en la base de datos relativos al entorno.</p>



<p>Finalmente restauraremos la base de datos y sobrescribiremos los archivos de nuestro servidor local.</p>



<h3 class="wp-block-heading">Local versus Remoto</h3>



<p>A pesar de que cada una de las tareas que realizaremos no son complicadas por si mismas, alternaremos de host continuamente y eso puede generar alguna confusión, así que para seguir los pasos indicados sin error deberemos estar muy  atentos al host en el que se realizan las distintas acciones. Identificaremos los hosts como «remoto», el servidor de producción que queremos clonar, y «local» el servidor de pruebas dónde queremos tener la copia.</p>



<p>Es importante que las versiones de <a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">LAMP (Linux, Apache, PHP y MySQL) </a>sean lo más similar posible, de este modo es posible que nos ahorraremos algunos quebraderos de cabeza. Además, es recomendable dedicar un <a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/">virtual host de Apache </a>para este entorno en nuestro servidor local.</p>



<h3 class="wp-block-heading">Ejemplo sobre WordPress</h3>



<p>Y ya que estas líneas que lees están escritas sobre WordPress, utilizaremos esta plataforma como ejemplo para realizar el clonado. Esto quiere decir que por norma general, si queréis clonar otra plataforma, las mayores diferencias las encontraremos en los los registros de la base de datos y los archivos de configuración referentes al entorno.</p>



<h3 class="wp-block-heading">Periodicidad</h3>



<p>Como hemos dicho queremos automatizar el clonado de nuestra web para tener nuestra réplica preparada y actualizada en todo momento. Podemos establecer la periodicidad que más nos convenga, personalmente estoy cómodo con una semana por dos motivos:</p>



<ol class="wp-block-list"><li>En una semana no suelen producirse muchos cambios en el blog.</li><li>Algunas pruebas se extienden durante varios días, y una restauración diaria las sobrescribiría.</li></ol>



<p>Además, siempre estamos a tiempo de lanzar una actualización manual en caso de ser necesario con la simple ejecución de un script. Si no tienes una web muy grande el proceso será relativamente rápido.</p>



<h2 class="wp-block-heading">Requisitos hardware</h2>



<p>En cuanto a los requisitos de hardware puedes estar tranquilo, pues no necesitas un gran servidor para implementar este sistema. Un ejemplo muy claro de ello es que para este blog lo tengo implementado con una humilde Raspberry Pi. Por si te interesa, aquí te dejo un enlace en el que puedes ver cómo de sencillo es <a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">montar un servidor web Apache sobre una Raspberry Pi</a>.</p>



<h2 class="wp-block-heading">Clonando nuestra web: el proceso</h2>



<p>Llegados a este punto creo que al igual que yo ya tendréis ganas de poneros manos a la obra, así que no me enrollo más y vamos al lío.</p>



<p>Y puesto que esto se ha alargado un poco más de la cuenta, hemos dividido este artículo en varias entregas para que sea más fácil de seguir:</p>



<ol class="wp-block-list"><li>Clonar una web en un servidor local (es decir, esta entrada).</li><li><a href="https://blog.ahierro.es/clonar-una-web-la-base-de-datos/">Clonar una web: la base de datos</a>.</li><li><a href="https://blog.ahierro.es/clonar-una-web-los-archivos/">Clonar una web: los archivos</a>.</li></ol>



<h2 class="wp-block-heading">Créditos y referencias</h2>



<ul class="wp-block-list"><li>Imagen de portada: <a rel="noreferrer noopener" href="https://pixabay.com/users/martinharry-1411929/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=941625" target="_blank">Martin Harry</a>.</li></ul>





<p></p>La entrada <a href="https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/">Clonar una web en un servidor local</a> apareció primero en <a href="https://blog.ahierro.es">blog.ahierro.es, programación, internet, tecnología y otras historias</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.ahierro.es/clonar-una-web-en-un-servidor-local/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
