<?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>Tips &amp; Quick Wins | ahierro.es</title>
	<atom:link href="https://blog.ahierro.es/category/tips-quick-wins/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>Thu, 07 Oct 2021 07:02:51 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>https://blog.ahierro.es/wp-content/uploads/2018/10/cropped-logo_small-1-2-32x32.png</url>
	<title>Tips &amp; Quick Wins | ahierro.es</title>
	<link>https://blog.ahierro.es</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Variables de configuración de PHP en .htaccess</title>
		<link>https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/</link>
					<comments>https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Thu, 07 Oct 2021 07:02:49 +0000</pubDate>
				<category><![CDATA[Apache 2]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[servidor]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=2352</guid>

					<description><![CDATA[<p>No siempre disponemos de acceso a la configuración del servidor. Aprendemos a configurar las variables de PHP mediante el archivo .htaccess cuando esto ocurre</p>
La entrada <a href="https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/">Variables de configuración de PHP en .htaccess</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>Al momento de desplegar nuestras aplicaciones web no siempre tenemos acceso a la configuración del servidor. Aprendemos a configurar las variables de PHP mediante el archivo .htaccess cuando esto ocurre.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="576" src="https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-1024x576.png" alt="Variables de PHP en htaccess" class="wp-image-2388" srcset="https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-1024x576.png 1024w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-300x169.png 300w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-768x432.png 768w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess-1536x864.png 1536w, https://blog.ahierro.es/wp-content/uploads/2021/10/htaccess.png 1920w" sizes="(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px" /></figure>



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



<p>Y es que a veces encontraremos que nuestra aplicación tiene unos requisitos mínimos que el servidor no cumple. Pongamos por ejemplo que queremos <a href="https://blog.ahierro.es/instalar-prestashop-1-7/" title="Instalar Prestashop 1.7">instalar prestashop</a> que tiene ciertos <a href="https://blog.ahierro.es/requisitos-minimos-de-prestashop-1-7/" title="Requisitos mínimos de Prestashop 1.7">requisitos mínimos</a> y que por algún motivo nuestro hosting no satisface.</p>



<h2 class="wp-block-heading">Cómo configurar variables de PHP desde .htaccess</h2>



<p>Hay varias formas de actuar sobre estas variables, pero tal y como reza el título de esta entrada hoy vamos a hacerlo con el archivo <em>.htaccess</em>, y para ello utilizaremos la orden <em>php_value</em>. Su sintaxis es muy sencilla<em>:</em></p>



<p><em>php_value</em> + <em>variable_php</em> + <em>valor</em>. </p>



<p>Un ejemplo podría ser que necesitamos que la variable <em>memory_limit</em> esté configurada en 64M y el servidor la tiene configurada en 32M, o quizás el <em>max_input_vars</em> está configurado en 500 y nuestros requisitos mínimos son 1.000. Para ello incluiríamos las siguientes líneas en el archivo .htaccess:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
php_value memory_limit 64M
php_value max_input_vars 1000
</pre></div>


<p>O supongamos que queremos mostrar los errores de PHP de nuestra aplicación. Podemos hacerlo desde el archivo .htaccess:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
php_value error_reporting 7
php_flag display_errors On
</pre></div>


<h2 class="wp-block-heading">Dónde colocar las líneas dentro del archivo .htaccess</h2>



<p>Personalmente me gusta colocar este tipo de sentencias al comienzo del archivo .htaccess, justo detrás de los comentarios:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
# Comentarios habituales en archivos .htaccess

# variables php
php_value error_reporting 7
php_flag display_errors On

&amp;lt;IfModule mod_rewrite.c&gt;
&amp;lt;IfModule mod_env.c&gt;
SetEnv HTTP_MOD_REWRITE On
&amp;lt;/IfModule&gt;

RewriteEngine on
...
</pre></div>


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



<ul class="wp-block-list"><li><a href="https://blog.ahierro.es/aumentar-el-limite-de-memoria-de-un-script-en-php/">Aumentar el límite de memoria de un script en PHP</a></li><li><a href="https://blog.ahierro.es/aumentar-el-limite-de-tiempo-maximo-de-ejecucion-de-un-script-en-php/">Aumentar el limite de tiempo máximo de ejecución de un script en PHP</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/habilitar-modulos-en-apache-2-sobre-ubuntu/">Habilitar módulos en Apache 2 sobre Ubuntu</a></li></ul>La entrada <a href="https://blog.ahierro.es/variables-de-configuracion-de-php-en-htaccess/">Variables de configuración de PHP en .htaccess</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/variables-de-configuracion-de-php-en-htaccess/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 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 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="(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>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>Plugin Related Post de Yuzo para WordPress hackeado</title>
		<link>https://blog.ahierro.es/plugin-related-post-de-yuzo-para-wordpress-hackeado/</link>
					<comments>https://blog.ahierro.es/plugin-related-post-de-yuzo-para-wordpress-hackeado/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Sun, 14 Apr 2019 08:30:52 +0000</pubDate>
				<category><![CDATA[Miscelanea]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=825</guid>

					<description><![CDATA[<p>El plugin Related Post de Yuzo ha sido hackeado, por norma general esto no sería una noticia de interés para mi, pero el caso es que era uno de los plugings instalados en este blog. Esta mañana mi equipo me ha redirigido en varias ocasiones a páginas de dudosa reputación, abriendo varios pop ups. Tras &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/plugin-related-post-de-yuzo-para-wordpress-hackeado/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Plugin Related Post de Yuzo para WordPress hackeado"</span></a></p>
La entrada <a href="https://blog.ahierro.es/plugin-related-post-de-yuzo-para-wordpress-hackeado/">Plugin Related Post de Yuzo para WordPress hackeado</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>El plugin Related Post de Yuzo ha sido hackeado, por norma general esto no sería una noticia de interés para mi, pero el caso es que era uno de los plugings instalados en este blog.</p>



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



<p>Esta mañana mi equipo me ha redirigido en varias ocasiones a páginas de dudosa reputación, abriendo varios pop ups. Tras algunas pruebas pude comprobar que el problema se encontraba en este blog y no en mi equipo, así que si se te ha abierto algún pop up redirigiendote a una otra página no deseada te pido disculpas.</p>





<p>En el caso de que tú también te hayas visto afectado por este problema, o por otro similar, te indico los pasos a seguir para solucionarlo. Los pasos 4, 5 y 6 son específicos para este caso:</p>



<ol class="wp-block-list"><li>Haz una copia de seguridad de tu site, tanto de los archivos como de la base de datos.</li><li>Identifica el plugin problemático. La forma más sencilla es desactivarlos todos e ir activando poco a poco.</li><li>Una vez detectado que plugin era el causante del problema elimínanalo.</li><li>Elimina el archivo /wp-content/wp-cache-config.php.</li><li>Elimina el usuario que ha creado el plugin, en mi caso se llamaba wp_update.</li><li>Elimina todos los registros de la tabla wp-option dónde en el campo option_name aparezca el texto «yuzo». Si tienes más plugins de este fabricante tendrás que ser más selectivo</li><li>Cambiar la clave de la base de datos y actualiza los datos del archivo de configuración wp-config.php para que tu WordPress siga funcionando.</li><li>Cambia la clave de todos los usuarios de wordpress.</li><li>Cambia la clave del ftp.</li><li>Descarga una versión de wordpress limpia y reemplaza los archivos en las carpetas /wp-admin y wp-includes. Para ello debes tener en cuenta:<ol><li>Si has realizado algún cambio en esas carpetas lo perderás.</li><li>Asegurate que la versión sea exactamente la misma.</li></ol></li></ol>



<p>No soy experto en wordpress ni en seguridad, estas recomendaciones son fruto de algo de lectura al respecto y de mi experiencia, y no puedo asegurarte que en tu caso funcionará, pero por eso mismo el primer paso es un backup. Si tienes conocimiento de algún otro paso necesario a seguir agradecería tu colaboración para compartirlo.</p>La entrada <a href="https://blog.ahierro.es/plugin-related-post-de-yuzo-para-wordpress-hackeado/">Plugin Related Post de Yuzo para WordPress hackeado</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/plugin-related-post-de-yuzo-para-wordpress-hackeado/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Comandos en Vim</title>
		<link>https://blog.ahierro.es/comandos-en-vim/</link>
					<comments>https://blog.ahierro.es/comandos-en-vim/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 01 Apr 2019 06:06:43 +0000</pubDate>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[vim]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=739</guid>

					<description><![CDATA[<p>VIM, Emacs y Nano son los tres editores más utilizados en el terminal de Linux. Personalmente hace muchos años que me decanté por Vim, y como hace poco refrescaba mis conocimientos sobre este editor, me pareció buena idea publicar una entrada al respecto. Esta entrada está pensada para ser una guía de consulta dónde encontrar &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/comandos-en-vim/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Comandos en Vim"</span></a></p>
La entrada <a href="https://blog.ahierro.es/comandos-en-vim/">Comandos en Vim</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>VIM, Emacs y Nano son los tres editores más utilizados en el terminal de Linux. Personalmente hace muchos años que me decanté por Vim, y como hace poco refrescaba mis conocimientos sobre este editor, me pareció buena idea publicar una entrada al respecto.</p>



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



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



<p>Esta entrada está pensada para ser una guía de consulta dónde encontrar un resumen de los que a mi modo de ver son los principales comandos. Vim tiene muchísimas opciones, así que evitaremos entrar en las más complejas y en las menos prácticas, así como en el modo visual. De cualquier modo esta información es más que suficiente para hacer un uso habitual y fluido de Vim.</p>



<p style="text-align:left">Para profundizar más te recomiendo consultar el manual, dónde encontrarás la información al completo, las posibilidades de Vim son muchísimas.</p>



<h2 class="wp-block-heading">Convenciones de este documento</h2>



<p>En este documento utilizaremos las siguientes convenciones:</p>



<ul class="wp-block-list"><li>[x] Modificador entre paréntesis. Es un modificador de comando opcional.</li><li>{x} Modificador entre corchetes. Es un modificador de comando obligatorio.</li><li>rango. Especificaremos un rango definiendo el valor inicial y el final separados por una coma. Por ejemplo: 2,5.</li></ul>



<h2 class="wp-block-heading">Comando de ayuda</h2>



<p>La mejor forma de complementar y ampliar esta guía es usar el comando de ayuda:</p>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th><td></td></tr><tr><td>:help<br></td><td>Abrirá el manual de referencia y nos situará al comienzo.<br></td><td></td></tr><tr><td>:help [comando] </td><td>Abrirá el manual y nos situará en la página del comando especificado.</td><td></td></tr></tbody></table>



<p>El manual se visualizará en el propio VIM se comporta como cualquier otro documento que abramos en este editor, y por lo tanto serán efectivos todos los comandos que indicamos en este documento con la excepción de que no permite guardar. Así que para salir y regresar al documento dónde nos encontrábamos antes de consultar el manual escribiremos el comando :q!.</p>





<h2 class="wp-block-heading">Comandos de desplazamiento</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th><td></td></tr><tr><td>[n]l ó [n]flecha derecha</td><td>Mueve el cursor una posición a la derecha.<br>Si está precedido de [n] se desplazará tantos caracteres como [n] indique.</td><td></td></tr><tr><td>[n]j ó  [n]flecha abajo</td><td>Mueve el cursor a la línea siguiente.<br>Si está precedido de [n] se desplazará tantas líneas como [n] indique.</td><td></td></tr><tr><td> [n]h ó  [n]flecha izquierda</td><td>Mueve el cursor una posición a la izquierda.<br>Si está precedido de [n] se desplazará tantos caracteres como [n] indique. </td><td></td></tr><tr><td> [n]k ó  [n]flecha arriba</td><td>Mueve el cursor a la línea anterior.<br>Si está precedido de [n] se desplazará tantas líneas como [n] indique.</td><td></td></tr><tr><td>0 ó Inicio</td><td>Coloca el cursor en el primer carácter de la línea.</td><td></td></tr><tr><td>$ ó Fin</td><td>Mueve el cursor al último carácter de la línea.<br></td><td></td></tr><tr><td>Av Pag<br></td><td>Mueve el cursor una página hacia adelante<br></td><td></td></tr><tr><td>Re Pag<br></td><td>Mueve el cursor una página hacia atrás<br></td><td></td></tr><tr><td>^<br></td><td>Mueve el cursor a la primera posición no blanca de la línea.</td><td></td></tr><tr><td>[n]+<br></td><td>Mueve el cursor a la siguiente línea y lo coloca en el primer carácter no blanco.<br>Si está precedido de [n] avanzará tantas líneas como este indique</td><td></td></tr><tr><td>[n]-</td><td>Mueve el cursor a la línea anterior y lo coloca en el primer caracter no blanco.<br>Si está precedido de un número [n] retrocederá tantas líneas como este indique.</td><td></td></tr><tr><td>[n]b ó [n]B</td><td>Coloca el cursor al comienzo de la palabra inmediatamente anterior a la que estamos situados.<br>Si está precedido de un número [n], retrocederá tantas palabras como este indique.</td><td></td></tr><tr><td>[n]w ó [n]W</td><td>Coloca el cursor al comienzo de la palabra inmediatamente posterior a la que estamos situados.<br>Si esta precedido de un numero  [n] avanzara tantas palabras como este indique.</td><td></td></tr><tr><td>[n]e ó [n]E </td><td>Coloca el cursor al final de la palabra sobre la que estamos situados.<br>Si esta precedido de un numero [n] avanzara tantas palabras como este indique.</td><td></td></tr><tr><td>[n]ge ó [n]gE</td><td> Coloca el cursor al final de la palabra inmediatamente anterior a la que estamos situados.<br>Si esta precedido de un numero  [n] lo hace de tantas palabras como este indique. </td><td></td></tr><tr><td>[n]f{c}</td><td>Desplaza el cursor hasta la siguiente aparición de {c} en la línea en la que nos encontramos.<br>Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter.</td><td></td></tr><tr><td> [n]F{c}</td><td>Desplaza el cursor hasta la primera aparición de {c} en la línea en la que nos encontramos.<br>Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter en la línea en la que estamos situados. </td><td></td></tr><tr><td> [n]t{c}</td><td>Desplaza el cursor hasta la siguiente aparición de {c} en la línea en la que nos encontramos y coloca el cursor en la posición inmediatamente anterior.<br>Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter. </td><td></td></tr><tr><td> [n]T{c}</td><td>Desplaza el cursor hasta la aparición anterior de {c} en la línea en la  que nos encontramos y coloca el cursor en la posición inmediatamente posterior.<br>Si está precedido de un número [n] se desplazará hasta la aparición número [n] del carácter.  </td><td></td></tr><tr><td>,</td><td> Repite la acción del último comando f ó t.</td><td></td></tr><tr><td>;</td><td> Repite la acción del último comando F ó T. </td><td></td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos de inserción de texto</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>a</td><td>Cambia al modo de edición. Sitúa el cursor en el carácter siguiente al que nos encontramos.</td></tr><tr><td>A</td><td>Cambia al modo de edición. Sitúa el cursor al final de la línea dónde nos encontramos.</td></tr><tr><td>i</td><td>Cambia al modo de edición. Sitúa el cursor en la misma posición en que nos encontramos.</td></tr><tr><td>I</td><td>Cambia al modo de edición. Sitúa el cursor en el primer carácter no blanco que encuentre.</td></tr><tr><td>gI</td><td>Cambia al modo de edición. Sitúa el cursor en la primera columna.</td></tr><tr><td>o</td><td>Cambia al modo de edición. Inserta una nueva línea bajo la posición del cursor y nos sitúa en la primera columna de ésta.</td></tr><tr><td>O</td><td>Cambia al modo de edición. Inserta una nueva línea sobre la posición del cursor y nos sitúa en la primera columna de ésta.</td></tr><tr><td>R</td><td>Cambia a modo de edición. Al escribir sobrescribiremos el texto bajo el cursor en lugar de desplazarlo hacia la derecha.</td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos de eliminación de texto</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>  [n]x<br></td><td>Elimina el carácter en la posición dónde estamos situados.<br> Si está precedido de un número [n] eliminará tantos caracteres cómo [n] indique.</td></tr><tr><td> [n]X</td><td>Elimina el carácter delante de la posición dónde estamos situados.<br> Si está precedido de un número [n] eliminará tantos caracteres cómo [n] indique.</td></tr><tr><td> [n]dd</td><td>Elimina la línea dónde estamos situados.<br>Si está precedido de un número [n] eliminará tantas lineas cómo [n] indique. </td></tr><tr><td>D<br></td><td>Elimina los caracteres desde la posición del cursor hasta el final de la línea.</td></tr><tr><td>:[rango]d<br></td><td>Elimina el rango de filas definido. A tener en cuenta que el conteo de las líneas comienza en 0.<br> :2,5d eliminará las filas de la 2 a la 5 </td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos para reemplazar texto</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>r{c}</td><td>Sustituye el carácter bajo el cursor por un carácter {c}.</td></tr><tr><td>~<br></td><td>Invierte la capitalización del carácter bajo el cursor.</td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos para deshacer y rehacer cambios</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>[n]u</td><td>Deshace el último cambio realizado.<br>Si está precedido de un número [n] deshará tantos cambios como [n] indique.</td></tr><tr><td>U</td><td>Deshace todos los cambios realizados en la línea en la que nos encontramos mientras no nos hayamos movido de ella.<br></td></tr><tr><td>:red</td><td>Rehace el último cambio.</td></tr><tr><td>CTRL+ r<br></td><td>Rehace el último cambio.<br></td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos para buscar textos</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>/{t}/</td><td>Busca la siguiente aparición del texto {t}.</td></tr><tr><td>?{t}?</td><td>Busca la aparición previa de {t}.</td></tr><tr><td>n</td><td>Repite la última búsqueda.</td></tr><tr><td>N</td><td>Repite la última búsqueda en dirección opuesta.</td></tr></tbody></table>



<h2 class="wp-block-heading">Comandos para guardar y salir</h2>



<table class="wp-block-table is-style-stripes"><tbody><tr><th>Comando</th><th>Acción</th></tr><tr><td>:w<br></td><td>Guarda los cambios realizados.<br></td></tr><tr><td>:q<br></td><td>Sale de VIM. Si se han realizado cambios devolverá un error.<br></td></tr><tr><td>:wq ó 😡 ó ZZ<br></td><td>Guardar y salir<br></td></tr><tr><td>:q! ó ZQ<br></td><td>Descartar los cambios y salir.<br></td></tr><tr><td>:wq!</td><td>Guarda los cambios y sale. </td></tr></tbody></table>



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



<p>Para los que vienen de un entorno gráfico el primer contacto con Vim puede ser algo inesperado y quizás chocante. De cualquier forma la curva de aprendizaje de Vim es bastante sencilla y cuando aprendemos su dinámica y unos pocos comandos ya nos manejamos con una soltura difícil de imaginar al principio. Hoy hemos visto una lista de los comandos que he considerado más prácticos, ¿cuáles usas tú?, ¿crees que falta alguno?, ¿echas en falta algo?<br></p>La entrada <a href="https://blog.ahierro.es/comandos-en-vim/">Comandos en Vim</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/comandos-en-vim/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Acceder a Ubuntu por Hostname</title>
		<link>https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/</link>
					<comments>https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Wed, 06 Feb 2019 07:30:31 +0000</pubDate>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=260</guid>

					<description><![CDATA[<p>Para el que está acostumbrado a trabajar con redes de equipos Windows acceder a un equipo mediante hostname es algo habitual. Por el contrario, el que suele trabajar con sistemas basados en Linux en una red local sabe que por defecto suele ser un asunto algo más laborioso. Avahi La mala noticia es que para &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Acceder a Ubuntu por Hostname"</span></a></p>
La entrada <a href="https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/">Acceder a Ubuntu por Hostname</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>Para el que está acostumbrado a trabajar con redes de equipos Windows acceder a un equipo mediante hostname es algo habitual. Por el contrario, el que suele trabajar con sistemas basados en Linux en una red local sabe que por defecto suele ser un asunto algo más laborioso.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://blog.ahierro.es/wp-content/uploads/2019/02/hostname_broadcast.png" alt="Hostname broadcast" class="wp-image-509" srcset="https://blog.ahierro.es/wp-content/uploads/2019/02/hostname_broadcast.png 650w, https://blog.ahierro.es/wp-content/uploads/2019/02/hostname_broadcast-300x168.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



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



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



<p>La mala noticia es que para lograr acceder por nombre a máquinas Linux en una red local con garantías la mejor solución es disponer de un servidor DNS (Bind es la opción Open Source más extendida), y en esta entrada no hablaremos sobre servidores DNS.</p>



<p>En esta entrada utilizaremos Avahi, una implementación gratuita de Zero-Configuration Networking que permite difundir y descubrir servicios y equipos en una red local. Quizás a alguno le resulte más familiar si citamos a Bonjour, que es la implementación propietaria que tiene Apple de esta tecnología.</p>





<p>Y en función de nuestras necesidades es posible que Avahi nos sirva o no (lógico). El principal motivo es que no basta con instalarlo en la máquina a la que queremos acceder por nombre (llamémosla máquina Destino), sino que cada equipo que quiera acceder por nombre a la máquina Destino debe poder trabajar con la tecnología Zero-Configuration Networking para interpretar la información publicada por nuestra máquina Destino.</p>



<h3 class="wp-block-heading">Máquinas Destino y Clientes</h3>



<p>Pongámonos en situación, de un lado tenemos una máquina corriendo Ubuntu, en mi caso es una Raspberry Pi corriendo la versión 16.0.4.2 de Ubuntu Mate. El hostname de esta máquina es «maquina1», su ip 192.168.1.15 y para agilizar la lectura, como ya hemos dicho, la llamaremos máquina «Destino». En esta máquina hemos instalado un servidor web y queremos acceder a ella mediante hostname.</p>



<p>Del otro lado tenemos una serie de equipos con distintos SSOO que son los que quieren consumir el servicio web accediendo por nombre. A estas máquinas las llamaremos «Clientes» y vamos a suponer que tenemos:</p>



<ol class="wp-block-list"><li>Cliente Linux, corriendo Ubuntu 18.</li><li>Cliente Windows, corriendo Windows 10.</li><li>Cliente Android, corriendo Android Oreo 8.1.</li></ol>



<p>Lo siento por los amantes de Apple pero no tengo ningún dispositivo de la manzanita para probar, aún así si eres uno de ellos sigue leyendo porque estoy convencido que te será de utilidad.</p>



<h3 class="wp-block-heading">Instalar y configurar Avahi</h3>



<p>Comenzaremos realizando las instalaciones necesarias en la máquina Destino. En función de vuestra distro es posible que todos o algunos de estos paquetes ya estén instalados.</p>


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


<p>Y acto seguido editaremos la configuración de Avahi. Es buena idea que antes de editar cualquier archivo de configuración guardéis una copia que os ayude a volver al punto inicial si fuera necesario, aunque vamos a tocar muy poca configuración.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
suco cp /ect/avahi/avahi-daemon.conf /etc/avahi/avahi-daemon.conf.bck
sudo vim /etc/avahi/avahi-daemon.conf
</pre></div>


<p>En el archivo de configuración nos centraremos primero en el nombre de la máquina y el dominio. Mi recomendación es que mantengáis la configuración por defecto, es decir ser coherentes y que el host-name coincida con el de la propia máquina y que el dominio sea «local». De esta forma accederemos a la máquina con maquina1.local.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&#x5B;server]
host-name=maquina1
domain-name=local
</pre></div>


<p>Nos aseguraremos también de que las siguientes opciones se encuentren como mostramos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&#x5B;publish]
disable-publishing=no
disable-user-service-publishing=no
publish-addresses=yes
</pre></div>


<p>Reiniciamos el servicio y lo agregamos al arranque de nuestra máquina:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo service avahi-daemon restart
sudo update-rc.d avahi-daemon defaults
</pre></div>


<p>Y con esto hemos terminado con la máquina Destino.</p>



<h3 class="wp-block-heading">Maquinas Clientes</h3>



<p>Como ya mencionamos cada máquina cliente debe ser capaz de trabajar con la tecnología Zero-Configuration Networking para poder alcanzar la máquina Destino por nombre, así que veamos caso a caso.</p>





<h4 class="wp-block-heading">Desde Linux</h4>



<p>En cada equipo con sistema operativo Linux con el que queramos acceder por nombre a la máquina Destino deberemos instalar Avahi. Así que no tenemos más que repetir las instrucciones definidas en el apartado «Instalar y Configurar Avahi».</p>



<h4 class="wp-block-heading">Desde Windows</h4>



<p>Por defecto Windows no nos dejará acceder por hostname y por ahora no existe implementación de Avahi para este sistema operativo. En su defecto podemos instalar el programa «Servicios de impresión Bonjour para Windows», de Apple, que aunque está pensado para otro uso nos permitirá cubrir nuestra necesidad y alcanzar la máquina Destino por nombre.</p>



<h4 class="wp-block-heading">Desde Android</h4>



<p>Lamentablemente no he encontrado ninguna aplicación o demonio para Android que permita que cualquier aplicación que corra en este sistema operativo sea capaz de acceder por nombre a nuestra máquina Destino, una lástima. Si conoces alguna solución para ello estaría muy agradecido de que la compartas en un comentario.</p>



<h4 class="wp-block-heading">IOS y MacOSX</h4>



<p>Como he dicho no tengo ningún dispositivo de Apple para realizar pruebas, pero conociendo que tienen su propia implementación de de Zero-Configuration Networking (Bonjour), me atrevería a decir que podremos acceder por nombre a nuestra máquina Destino sin necesidad de instalar ningún software adicional.</p>



<h3 class="wp-block-heading">Comprobar el funcionamiento</h3>



<p>Aunque es de primero de pre-escolar (creo que ahora lo llaman infantil), me gusta comprobar las cosas, y la forma más sencilla de hacerlo es utilizar el comando ping. Si lo hemos conseguido obtendremos algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
ping raspi.local
PING raspi.local (192.168..15) 56(84) bytes of data.
64 bytes from 192.168.1.15 (192.168.1.15): icmp_seq=1 ttl=64 time=6.68 ms
64 bytes from 192.168.1.15 (192.168.1.15): icmp_seq=2 ttl=64 time=4.61 ms

</pre></div>


<p>Y si algo no funciona como esperamos obtendremos algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
ping maquina1.local
ping: maquina1.local: Nombre o servicio desconocido
</pre></div>


<p>Y como dijimos que en la máquina Destino teníamos un servidor web, al escribir maquina1.local en la barra de direcciones del navegador, obviamente, accederemos al contenido publicado.</p>





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



<p>Con Avahi podemos acceder por nombre a máquinas con sistema operativo Linux en nuestra red local. Su mayor limitación es que nos veremos obligado a que tanto la máquina a la que queremos acceder, como las máquinas con las que queremos acceder deben tener instalada una implementación de Zero-Configuration Networking.</p>



<p>Así que si bien resuelve ciertas situaciones y necesidades, si pensamos en una red de varias decenas de equipos con distintos sistemas operativos existen otras alternativas más escalables.</p>



<p>Como siempre me gustaría saber cómo cual es tu experiencia, ¿has usado Avahi? ¿accedes por ip? ¿utilizas otra tecnología u otros programas? Deja un comentario y danos tu opinión.</p>La entrada <a href="https://blog.ahierro.es/acceder-a-ubuntu-por-hostname/">Acceder a Ubuntu por Hostname</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/acceder-a-ubuntu-por-hostname/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Crear un repositorio remoto en Git desde archivos locales</title>
		<link>https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/</link>
					<comments>https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 31 Dec 2018 06:55:49 +0000</pubDate>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[control de versiones]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=192</guid>

					<description><![CDATA[<p>Existen múltiples motivos por los que podemos disponer de código fuente antes de versionarlo: que heredemos un proyecto ya existente, que se nos ocurra una idea y en un impetuoso alarde de entusiasmo vayamos directamente al código, etc. Pero para mi el principal motivo es que es la forma más sencilla de comenzar un proyecto &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Crear un repositorio remoto en Git desde archivos locales"</span></a></p>
La entrada <a href="https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/">Crear un repositorio remoto en Git desde archivos locales</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>Existen múltiples motivos por los que podemos disponer de código fuente antes de versionarlo: que heredemos un proyecto ya existente, que se nos ocurra una idea y en un impetuoso alarde de entusiasmo vayamos directamente al código, etc. Pero para mi el principal motivo es que es la forma más sencilla de comenzar un proyecto y un repositorio en Git: instalo la aplicación o el framework que necesito, realizo una configuración básica y acto seguido creo el repositorio.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/11/git_logo.jpg" alt="Git" class="wp-image-174" srcset="https://blog.ahierro.es/wp-content/uploads/2018/11/git_logo.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/11/git_logo-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/11/git_logo-267x150.jpg 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



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



<p>Por otro lado, en función de diferentes factores relacionados con un proyecto de desarrollo podemos trabajar en equipo, que es lo más probable, o solos. Cuando trabajamos en equipo es lógico que el software de control de versiones se encuentre en un servidor centralizado. Cuando trabajamos solos podemos decidir que solo esté en nuestra máquina.</p>



<p>Personalmente incluso trabajando en solitario en un proyecto me gusta versionar contra en un servidor centralizado por dos motivos principales:</p>



<ol class="wp-block-list"><li>Mayor seguridad ante una eventualidad en mi equipo local, circunstancia que no evita que el proyecto deba estar respaldado por copias de seguridad.</li><li>Posibilidad de trabajar en múltiples dispositivos, una opción más o menos interesante en función de nuestras circunstancias.</li></ol>



<p>En caso de que el proyecto que tengamos entre manos sea de ámbito personal, es más que razonable pensar que no todos disponemos de un servidor en casa dónce centralizar el versionado. Esta situación la podemos resolver con un viejo pc, o si no disponemos de uno con una Raspberry Pi que haga las veces de servidor. Aquí te dejo un enlace al artículo <a href="https://blog.ahierro.es/instalar-y-configurar-git-en-una-raspberry-pi-con-ubuntu-mate/">Instalar y configurar Git en una Raspberry PI con Ubuntu Mate</a>, por si quieres probarlo.</p>





<p>Así que vamos al lío y para ello asumiremos que nuestro servidor está configurado con la ip <em>192.168.1.10</em> y el nombre de nuestro usuario es <em>usuario</em>.</p>



<h3 class="wp-block-heading">Creamos nuestro repositorio remoto</h3>



<p>Lo primero que debemos hacer es crear y configurar correctamente un repositorio vacío en la máquina remota, así que empezaremos por conectarnos a ella:</p>


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


<p>Ya en la consola remota creamos el directorio dónde alojaremos el repositorio que vamos a crear, personalmente creo un directorio en el que incluyo todos los repositorios:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cd ~
mkdir gitRepositoryRoot
cd gitRepositoryRoot
mkdir nuevoProyecto
cd nuevoProyecto
</pre></div>


<p>Y por fin creamos nuestro repositorio vacío y lo configuramos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
git --bare init
git config core.sharedrepository 1
git config receive.denyNonFastforwards true
git config --bool core.bare true
</pre></div>


<p>El último paso en la máquina remota es asignar los permisos adecuados al repositorio:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
find objects -type d -exec chmod 02770 {} \;
</pre></div>


<h3 class="wp-block-heading">Creamos nuestro repositorio local</h3>



<p>Una vez que nuestro repositorio está correctamente creado en el servidor deberemos crear un repositorio local a partir de los fuentes que ya tenemos para posteriormente enlazarlo y enviarlo al repositorio que previamente hemos creado en la máquina remota.</p>



<p>Creamos el repositorio local y añadimos los fuentes existentes que supondremos que se encuentran en <em>/var/www/nuevoProyecto</em>:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cd /var/www/nuevoProyecto
git init
git add *
git commit -m &quot;Commit inicial&quot;
</pre></div>


<p>Creamos el repositorio y añadimos los fuentes:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
git remote add origin ssh://usuario@192.168.1.10/home/usuario/gitRepositoryRoot/nuevoProyecto
git push -u origin master
</pre></div>


<h3 class="wp-block-heading">Comprobamos que todo ha salido bien</h3>



<p>Por último comprobaremos que hemos realizado el proceso correctamente y todo funciona correctamente.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
git checkout origin/master
git branch -f master origin/master
git checkout master
</pre></div>


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



<p>Trabajemos en grupo o en solitario versionar nuestro código en una máquina remota es una tarea sencilla que aporta grandes beneficios. Cómo siempre me gustaría saber cómo lo haces tú, qué haces distinto, si este artículo te ha ayudado&#8230; Si te animas a compartir deja un comentario.</p>La entrada <a href="https://blog.ahierro.es/crear-un-repositorio-remoto-en-desde-con-archivos-locales/">Crear un repositorio remoto en Git desde archivos locales</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/crear-un-repositorio-remoto-en-desde-con-archivos-locales/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Archivos y permisos de usuario en Apache 2 y Linux</title>
		<link>https://blog.ahierro.es/archivos-y-permisos-de-usuario-en-apache-y-linux/</link>
					<comments>https://blog.ahierro.es/archivos-y-permisos-de-usuario-en-apache-y-linux/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Thu, 20 Dec 2018 06:30:23 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=328</guid>

					<description><![CDATA[<p>Asegurar que los permisos de usuario de los archivos y carpetas de nuestro servidor web están correctamente asignados es una práctica que nos ahorrará problemas en el futuro. En esta mini entrada veremos cómo hacerlo. Para este artículo asumiremos que disponemos de varios host virtuales y que vamos a asignar los permisos adecuados solo a &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/archivos-y-permisos-de-usuario-en-apache-y-linux/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Archivos y permisos de usuario en Apache 2 y Linux"</span></a></p>
La entrada <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> 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>Asegurar que los permisos de usuario de los archivos y carpetas de nuestro servidor web están correctamente asignados es una práctica que nos ahorrará problemas en el futuro. En esta mini entrada veremos cómo hacerlo.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://blog.ahierro.es/wp-content/uploads/2018/12/apache_permisos_ficheros.png" alt="" class="wp-image-335" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/apache_permisos_ficheros.png 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/apache_permisos_ficheros-300x168.png 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



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



<p>Para este artículo asumiremos que disponemos de varios host virtuales y que vamos a asignar los permisos adecuados solo a uno de ellos. La carpeta raíz es <em>/var/www/html</em> y la pública <em>/var/www/html/public</em>.</p>





<p>En caso de que tengas un servidor Apache 2 recién instalado lo habitual es que las carpetas mencionadas en el párrafo anterior sean <em>/var/www</em> y <em>/var/www/public</em> respectivamente.</p>



<p>Por último antes de entrar en materia indicar que también asumiremos que el usuario con el que trabajamos es «usuario».</p>



<h3 class="wp-block-heading">Asignamos los permisos</h3>



<p>Comenzaremos asegurándonos de que <em>/var/www/html</em> pertenezca al grupo www-data:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo chgrp www-data /var/www/html
</pre></div>


<p>Nos aseguramos también que nuestro usuario pertenezca al mismo grupo:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo usermod -a -G www-data usuario
</pre></div>


<p>Asignamos los permisos adecuados:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo chmod -R 775 /var/www/html
sudo chmod -R g+s /var/www/html
</pre></div>


<p>Y por último nos aseguramos de ser los propietarios del directorio:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo chown -R usuario /var/www/html
</pre></div>


<p>En este punto ya tenemos los permisos de usuario correctamente configurados, pero como siempre es bueno comprobarlo.</p>



<h3 class="wp-block-heading">Comprobamos que todo sea correcto</h3>



<p>Para comprobar que todo haya salidos bien accedemos a <em>/var/www</em> y listamos los archivos con detalle:</p>


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


<p>Deberíamos tener algo similar a lo siguiente:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
total 2
drwxrwxr-x 4 usuario www-data 4096 dic 19 18:01 html
drwxrwxr-x 8 usuario www-data 4096 dic 19 18:07 vhost1
</pre></div>


<p>Los archivos y/o carpetas de este directorio pueden cambiar en función de lo que tengas en <em>/var/www</em>, pero al margen de eso podemos ver que tanto el usuario, el grupo y los perisos son correctos.</p>



<p>Si entramos dentro de <em>/var/www/html</em> y hacemos lo mismo el resultado debe ser similar.</p>





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



<p>Una tarea sencilla y rápida que nos ahorrará posibles complicaciones futuras. Y como siempre me gusta saber tu opinión, ¿qué haces distinto al establecer los permisos? ¿Te ha servido&nbsp; este artículo para solucionar algún problema de permisos? ¿Cuál es tu experiencia en este tema?</p>



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



<ul class="wp-block-list"><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/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/debugar-php-netbeans-xcode/">Debugar PHP con NetBeans y XCode</a> </li></ul>



<p></p>La entrada <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> 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/archivos-y-permisos-de-usuario-en-apache-y-linux/feed/</wfw:commentRss>
			<slash:comments>21</slash:comments>
		
		
			</item>
		<item>
		<title>Habilitar acceso SSH a Raspberry Pi</title>
		<link>https://blog.ahierro.es/habilitar-acceso-ssh-a-raspberry-pi/</link>
					<comments>https://blog.ahierro.es/habilitar-acceso-ssh-a-raspberry-pi/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 03 Dec 2018 06:20:33 +0000</pubDate>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[red]]></category>
		<category><![CDATA[ssh]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=215</guid>

					<description><![CDATA[<p>La Raspberry Pi, sea con Raspbian o con Ubuntu Mate, tiene un entorno de escritorio muy digno para los recursos de que dispone este SBC. Pero para el uso que le queremos dar lo que haremos será activar el acceso SSH y desactivar el entorno de escritorio. De esta forma podremos dejar nuestro Raspberry en &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/habilitar-acceso-ssh-a-raspberry-pi/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Habilitar acceso SSH a Raspberry Pi"</span></a></p>
La entrada <a href="https://blog.ahierro.es/habilitar-acceso-ssh-a-raspberry-pi/">Habilitar acceso SSH a Raspberry Pi</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>La Raspberry Pi, sea con Raspbian o con Ubuntu Mate, tiene un entorno de escritorio muy digno para los recursos de que dispone este SBC. Pero para el uso que le queremos dar lo que haremos será activar el acceso SSH y desactivar el entorno de escritorio.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/12/raspberry_ssh.jpg" alt="Raspberry PI SSH" class="wp-image-232" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/raspberry_ssh.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/raspberry_ssh-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/raspberry_ssh-267x150.jpg 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



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



<p>De esta forma podremos dejar nuestro Raspberry en algun lugar de casa que no moleste con solo un adaptador de corriente, y si nos venimos arriba además con un cable de red.</p>





<p>Así que vamos al lío y veamos varias formas para hacer esto:</p>



<h3 class="wp-block-heading">Configurar SSH en Raspbian desde la interface gráfica</h3>



<p>Esta es quizás la forma más habitual de hacerlo, principalmente por comodidad. Desde la interface gráfica accedemos a <em>Menu</em> -&gt; <em>Preferences</em> -&gt; <em>Raspberry Pi Configuracion</em>. Se levanta la aplicación Raspberry Pi Configuration, que tiene el siguiente aspecto (ojo que en el pantallazo que muestro ya he cambiado de pestaña):</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="483" height="412" src="https://www.ahierro.es/wp-content/uploads/2018/12/Raspberry-Pi-Configuration.jpg" alt="Raspberry Pi Configuration" class="wp-image-230" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/Raspberry-Pi-Configuration.jpg 483w, https://blog.ahierro.es/wp-content/uploads/2018/12/Raspberry-Pi-Configuration-300x256.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/Raspberry-Pi-Configuration-176x150.jpg 176w" sizes="auto, (max-width: 483px) 100vw, 483px" /></figure>



<p>Y una vez abierta la aplicación:</p>



<ol class="wp-block-list"><li>Nos situamos en la pestaña <em>Interfaces</em>.</li><li>Activamos el SSH.</li><li>Guardamos con el botón <em>OK</em>.</li></ol>



<h3 class="wp-block-heading">Configurar SSH en Raspbian desde la consola</h3>



<p>Si nos hemos decidido por un Raspbian sin entorno de escritorio o si simplemente preferimos trabajar con la consola,&nbsp; ejecutamos el siguiente comando:</p>


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


<p>Esto abrirá la aplicación que tiene el siguiente aspecto:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/12/raspi-config.jpg" alt="raspi-config" class="wp-image-225" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/raspi-config.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/raspi-config-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/raspi-config-267x150.jpg 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<p>A partir de aquí deberemos seguir los siguientes pasos:</p>



<ol class="wp-block-list"><li>Seleccionamos <em>Advanced Options</em>.</li><li>Navegamos hasta la opción <em>SSH</em>.</li><li>Acitvamos el servidor.</li><li>Guardamos y salimos con la opción <em>Finish</em>.</li></ol>



<h3 class="wp-block-heading">Activar SSH en Ubuntu Mate desde la consola</h3>



<p>En Ubuntu Mate también es muy sencillo activar el acceso SSH, por defecto y al igual que en Raspbian viene instalado, así que solo tendremos que habilitarlo mediante las siguientes instrucciones en la consola:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo systemctl enable ssh
sudo systemctl start ssh
</pre></div>


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



<p>El acceso mediante SSH es de gran utilidad para conectar remotamente a nuestra Raspberry. Además, es sumamente sencillo configurar el servidor SSH tanto en Raspbian como en Ubuntu Mate, de hecho es tan habitual que ni si quiera tendremos que instalarlo pues estas dos distribuciones ya lo traen instalado por defecto.</p>La entrada <a href="https://blog.ahierro.es/habilitar-acceso-ssh-a-raspberry-pi/">Habilitar acceso SSH a Raspberry Pi</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-acceso-ssh-a-raspberry-pi/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Debugar PHP con NetBeans y XCode</title>
		<link>https://blog.ahierro.es/debugar-php-netbeans-xcode/</link>
					<comments>https://blog.ahierro.es/debugar-php-netbeans-xcode/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 19 Nov 2018 06:00:12 +0000</pubDate>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tips & Quick Wins]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=123</guid>

					<description><![CDATA[<p>Debugar es una de las primeras cosas que aprendemos cuando comenzamos a desarrollar y nadie en su sano juicio es capaz de poner en duda la importancia de esta tarea. Por otro lado, es increíble la cantidad de desarrolladores para los que si bien en otros lenguajes utilizar un programa para debugar forma parte de &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/debugar-php-netbeans-xcode/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Debugar PHP con NetBeans y XCode"</span></a></p>
La entrada <a href="https://blog.ahierro.es/debugar-php-netbeans-xcode/">Debugar PHP con NetBeans y XCode</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>Debugar es una de las primeras cosas que aprendemos cuando comenzamos a desarrollar y nadie en su sano juicio es capaz de poner en duda la importancia de esta tarea.</p>



<p>Por otro lado, es increíble la cantidad de desarrolladores para los que si bien en otros lenguajes utilizar un programa para debugar forma parte de su día a día, cuando programan en php lo hacen de una forma un tanto rudimentaria valiéndose de funciones cómo echo(), print_f(), die()&nbsp; u otras que les ayuden a mostrar en el navegador lo que deberían ver en la herramienta de debug.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/11/debugar.jpg" alt="Configurar XDebug en Netbeans" class="wp-image-137" srcset="https://blog.ahierro.es/wp-content/uploads/2018/11/debugar.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/11/debugar-300x168.jpg 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



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



<p>Lo reconozco, yo también lo he hecho durante largos periodos de tiempo, y por ese motivo conozco de primera mano la gran diferencia que existe entre utilizar una herramienta adecuada o no hacerlo. Lo peor de todo es que solucionar esta situación es muy sencillo, y basta con un poco de disciplina y 15 minutos de configuración.</p>





<p>Aprovechando que tengo un entorno de desarrollo relativamente nuevo, vamos a ver como se configura. El software que utilizo es:</p>



<ul class="wp-block-list"><li>Ubuntu 18.04.1 LTS</li><li>Apache 2.4.29</li><li>PHP 7.2.10</li><li>NetBeans 8.2</li><li>Mozilla Firefox</li></ul>



<p>Vamos a dar por hecho que ya tenemos este software instalado y nos centraremos en instalar y configurar XDebug.</p>



<h3 class="wp-block-heading">Configuración del servidor</h3>



<p>El primer paso es comprobar si tenemos XDebug instalado, por defecto no suele ser así. Esta comprobación la podemos hacer mediante phpinfo(). Si no está instalado lo instalamos:</p>


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


<p>Buscamos el archivo de configuración de la extensión, en mi caso <em>/etc/php/7.2/apache2/conf.d/20-xdebug.ini</em>. Lo editamos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo vim /etc/php/7.2/apache2/conf.d/20-xdebug.ini
</pre></div>


<p>El archivo debería quedar así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
zend_extension=xdebug.so
xdebug.profiler_enable = On
xdebug.remote_enable=On
xdebug.remote_host=&quot;localhost&quot;
xdebug.remote_port=9000
xdebug.remote_handler=&quot;dbgp&quot;
</pre></div>


<p>La primera línea que habilita la extensión de php ya deberíais tenerla, así que solo tendríamos que agregar el resto. Prestad especial atención al puerto, pues tendrá que coincidir con el que especifiquemos en NetBeans.</p>



<p>Ya sólo nos queda reiniciar Apache y pasaremos a configurar NetBeans:</p>


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


<h3 class="wp-block-heading">Configuración de NetBeans</h3>



<p>Ya casi estamos. Abrimos la configuración de NetBeans mediante los menús «Tools» -&gt; «Options». Accedemos a la configuración de PHP y en la pestaña «Debugging» nos aseguramos de que hemos especifiaco el mismo puerto que en la configuración de XDebug para PHP, en nuestro caso el puerto 9000.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/11/xdebug_netbeans_conf_01.jpg" alt="Configurar XDebug en Netbeans" class="wp-image-131" srcset="https://blog.ahierro.es/wp-content/uploads/2018/11/xdebug_netbeans_conf_01.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/11/xdebug_netbeans_conf_01-300x168.jpg 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<p>Guardamos la configuración, salimos y con esto ya tenemos toda la configuración relativa a XDebug hecha.</p>



<p>La última configuración necesaria para poder debugar se realiza en la configuración de cada proyecto de Netbeans. Para acceder a ella debemos tener visible la ventana de proyectos, botón derecho sobre el propio proyecto y seleccionamos la opción «Properties»del menú.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="650" height="365" src="https://www.ahierro.es/wp-content/uploads/2018/11/xdebug_netbeans_conf_02.jpg" alt="Configurar XDebug en Netbeans" class="wp-image-135" srcset="https://blog.ahierro.es/wp-content/uploads/2018/11/xdebug_netbeans_conf_02.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/11/xdebug_netbeans_conf_02-300x168.jpg 300w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<p>En la venta de configuración, accederemos al menú «Run Configuration» y nos aseguraremos que los campos «Project URL» y «Index File» están correctamente configurados.</p>





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



<p>Una configuración muy sencilla que nos ahorrará muchos quebraderos de cabeza. ¿Y tú cómo debugas cuando programas en PHP?</p>La entrada <a href="https://blog.ahierro.es/debugar-php-netbeans-xcode/">Debugar PHP con NetBeans y XCode</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/debugar-php-netbeans-xcode/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
