<?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>web | ahierro.es</title>
	<atom:link href="https://blog.ahierro.es/tag/web/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>Wed, 18 Sep 2019 06:55:39 +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>web | ahierro.es</title>
	<link>https://blog.ahierro.es</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Aumentar el límite de memoria de un script en PHP</title>
		<link>https://blog.ahierro.es/aumentar-el-limite-de-memoria-de-un-script-en-php/</link>
					<comments>https://blog.ahierro.es/aumentar-el-limite-de-memoria-de-un-script-en-php/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Wed, 18 Sep 2019 06:55:37 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1656</guid>

					<description><![CDATA[<p>La configuración por defecto de un servidor LAMP es válida para el correcto funcionamiento de la mayoría de las páginas web. Sin embargo, si ejecutamos aplicaciones que necesitan de una gran cantidad de recursos del sistema es posible estos valores se nos queden cortos en algunos momentos. Y uno de esos valores que a veces &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/aumentar-el-limite-de-memoria-de-un-script-en-php/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Aumentar el límite de memoria de un script en PHP"</span></a></p>
La entrada <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> 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 configuración por defecto de un servidor LAMP es válida para el correcto funcionamiento de la mayoría de las páginas web.  Sin embargo, si ejecutamos aplicaciones que necesitan de una gran cantidad de recursos del sistema es posible estos valores se nos queden cortos en algunos momentos.</p>



<figure class="wp-block-image is-resized"><img fetchpriority="high" decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/08/chips-20072_1920-1024x683.jpg" alt="Aumentar el límite de memoria de un script en PHP" class="wp-image-1673" width="798" height="413"/></figure>



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



<p>Y uno de esos valores que a veces se quedan cortos es la cantidad de memoria máxima que un script desarrollado en PHP puede consumir, así que hoy veremos como aumentar ese límite.</p>



<h2 class="wp-block-heading">Fatal error: Allowed memory size of 134217728 bytes exhausted</h2>



<p>Alcanzar el límite máximo de memoria de nuestro servidor no es algo demasiado habitual. La configuración por defecto tiene un valor lo suficientemente amplio como para que podamos ejecutar la mayoría de las aplicaciones sin problema alguno. Pero en caso de alcanzarlo,el sistema devuelve el siguiente error:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
Fatal error: Allowed memory size of 134217728 bytes exhausted
</pre></div>


<p>Con la salvedad de que el número de bytes puede variar en función de la configuración del servidor.</p>





<h2 class="wp-block-heading">Medida de protección</h2>



<p>Que PHP disponga de un límite máximo de consumo de memoria en la ejecución de cada script es una medida de protección, no olvidemos que la memoria en una máquina es un recurso finito. Así que antes de ampliar este parámetro, mi consejo es que nos aseguremos de que:</p>



<ol class="wp-block-list"><li>No es un bug en nuestro script el que crea la necesidad de ampliar la memoria.</li><li>Nuestro script está razonablemente optimizado.</li></ol>



<p>Es decir, nada que no debamos hacer con cualquier otro script que no supere el límite máximo de memoria definido. Porque si recordáis una de las primeras lecciones que aprendemos (o al menos que deberíamos aprender) al comenzar a programar es que nuestro código debe cumplir tres requisitos fundamentales:</p>



<ol class="wp-block-list"><li>Estar libre de errores</li><li>Ser eficiente</li><li>Ser comprensible</li></ol>



<h2 class="wp-block-heading">Cómo aumentar el límite máximo de memoria para un script PHP</h2>



<p>Por defecto, el límite máximo de memoria que un script PHP puede consumir es de 128Mb, algo más que razonable. Si ya tenemos claro que queremos aumentar este límite podemos hacerlo de dos formas.</p>



<h3 class="wp-block-heading">Con la función init_set()</h3>



<p>Con la función <em>init_set() </em>pasando el string<em> memory_limit </em>como primer parámetro y la cantidad de memoria deseada como segundo. Con este método, el nuevo limite afectará única y exclusivamente al script dónde lo estemos utilizando, es decir, sin afectar a la configuración general del servidor.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: php; title: ; notranslate">
&lt;?php

ini_set(&#039;memory_limit&#039;, &#039;256M&#039;);

...

?&gt;
</pre></div>


<h3 class="wp-block-heading">En el archivo php.ini</h3>



<p>En este caso, la principal diferencia con respecto al método anterior es que el nuevo límite afectará a todos los scripts PHP que se ejecuten en el servidor dónde apliquemos esta configuración. Para definir el nuevo límite, buscamos la directriz <em>memory_limit,</em> dentro de la sección <em>Resources Limits</em>, en el archivo <em>php.ini</em> y modificamos su valor.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

...

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit=256M
</pre></div>


<p>Y acto seguido reiniciamos el servidor Apache 2 para que los cambios surtan efecto.:</p>


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


<p>La ubicación del archivo <em>php.ini </em>variará en función del sistema que estemos utilizando. En los sistemas Linux basados en Debian como Ubuntu la ubicación será <em>/etc/php/X.X/apache2</em>, donde X.X será la versión de PHP.</p>





<h2 class="wp-block-heading">Comprobar límite máximo de memoria de un script PHP</h2>



<p>Podemos comprobar el valor máximo de memoria que utiliza un script configurado en nuestro servidor en la sección <em>Core </em>de la salida de la función <em>phpinfo()</em>:</p>



<figure class="wp-block-image"><img decoding="async" width="417" height="122" src="https://blog.ahierro.es/wp-content/uploads/2019/09/phpinfo_memory_limit.png" alt="phpinfo() memory_limit" class="wp-image-1705" srcset="https://blog.ahierro.es/wp-content/uploads/2019/09/phpinfo_memory_limit.png 417w, https://blog.ahierro.es/wp-content/uploads/2019/09/phpinfo_memory_limit-300x88.png 300w" sizes="(max-width: 417px) 100vw, 417px" /></figure>



<p>O como acabamos de ver, accediendo al archivo de configuración php.ini:</p>



<figure class="wp-block-image"><img decoding="async" width="415" height="157" src="https://blog.ahierro.es/wp-content/uploads/2019/09/php_ini_memory_limit.png" alt="php.ini memory_limit" class="wp-image-1706" srcset="https://blog.ahierro.es/wp-content/uploads/2019/09/php_ini_memory_limit.png 415w, https://blog.ahierro.es/wp-content/uploads/2019/09/php_ini_memory_limit-300x113.png 300w" sizes="(max-width: 415px) 100vw, 415px" /></figure>



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



<ul class="wp-block-list"><li>Imagen de portada: <a href="https://pixabay.com/users/publicdomainpictures-14/">Public Domain Pictures</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 rel="noreferrer noopener" aria-label="Documentación de la función init_set() (abre en una nueva pestaña)" href="https://www.php.net/manual/es/function.ini-set.php" target="_blank">Documentación de la función php init_set()</a></li><li><a aria-label="Documentación de la función init_set() (abre en una nueva pestañ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/aumentar-el-limite-de-memoria-de-un-script-en-php/">Aumentar el límite de memoria de un script en PHP</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/aumentar-el-limite-de-memoria-de-un-script-en-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Aumentar el limite de tiempo maximo de ejecución de un script en PHP</title>
		<link>https://blog.ahierro.es/aumentar-el-limite-de-tiempo-maximo-de-ejecucion-de-un-script-en-php/</link>
					<comments>https://blog.ahierro.es/aumentar-el-limite-de-tiempo-maximo-de-ejecucion-de-un-script-en-php/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Tue, 30 Jul 2019 06:41:08 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://blog.ahierro.es/?p=1522</guid>

					<description><![CDATA[<p>Cuando instalamos un servidor web LAMP, la configuración por defecto de PHP es válida para la mayoría de las aplicaciones. Sin embargo, es posible que si desarrollamos o instalamos aplicaciones que necesiten de una gran cantidad de recursos del sistema nos encontremos con algunos límites. Algunos de ellos pueden ser: la memoria consumida en la &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/aumentar-el-limite-de-tiempo-maximo-de-ejecucion-de-un-script-en-php/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Aumentar el limite de tiempo maximo de ejecución de un script en PHP"</span></a></p>
La entrada <a href="https://blog.ahierro.es/aumentar-el-limite-de-tiempo-maximo-de-ejecucion-de-un-script-en-php/">Aumentar el limite de tiempo maximo de ejecución de un script en PHP</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>Cuando instalamos un servidor web LAMP, la configuración por defecto de PHP es válida para la mayoría de las aplicaciones. Sin embargo, es posible que si desarrollamos o instalamos aplicaciones que necesiten de una gran cantidad de recursos del sistema nos encontremos con algunos límites.</p>



<figure class="wp-block-image is-resized"><img loading="lazy" decoding="async" src="https://blog.ahierro.es/wp-content/uploads/2019/07/max_execution_time.jpg" alt="php max_execution_time" class="wp-image-1533" width="840" height="331"/></figure>



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



<p>Algunos de ellos pueden ser: la memoria consumida en la ejecución del script, el tamaño de los archivos subidos al servidor, el número de variables pasadas por get o por post, etc.</p>



<p>En esta estrada hablamos sobre el límite de tiempo de ejecución de un script.</p>



<h2 class="wp-block-heading">Fatal error: Maximum execution time of 30 seconds exceeded</h2>



<p>Este es el error que nos encontraremos si nuestro script sobrepasa el tiempo máximo de ejecución definido.</p>



<p>Encontrarnos con este error no es una situación excesivamente habitual y en muchos casos puede ser el resultado de un error de programación, como por ejemplo una rutina que nos haga entrar en un bucle infinito.</p>





<p>Pero también es posible alcanzar ese límite por las propias exigencias de nuestro software. En mi caso, me he encontrado con esta situación al desarrollar aplicaciones empresariales que procesan una gran cantidad de datos.</p>



<h2 class="wp-block-heading">Medida de protección</h2>



<p>Que PHP disponga de un límite máximo de tiempo de ejecución para los scripts es una medida de protección que puede librarnos de largas esperas e incluso de algún reinicio. La experiencia me dice que en algunas ocasiones un bucle infinito puede dejar un equipo completamente bloqueado.</p>



<p>Así que antes de ampliar el tiempo máximo de ejecución mi consejo es que nos aseguremos de que:</p>



<ol class="wp-block-list"><li>No es un bug en nuestro script el que crea la necesidad de ampliar este tiempo.</li><li>Nuestro script está razonablemente optimizado.</li></ol>



<p>Es decir, nada que no debamos hacer con cualquier otro script que no supere el tiempo de ejecución máximo. </p>



<h2 class="wp-block-heading">Cómo aumentar el límite el tiempo de ejecución de un script PHP</h2>



<p>Por defecto, el tiempo máximo de ejecución de un script es de 30 segundos. Si ya tenemos claro que queremos aumentar este tiempo podemos hacerlo de varias formas.</p>



<h3 class="wp-block-heading">Con la función set_time_limit()</h3>



<p>Utilizaremos esta función al comienzo de nuestro script definiendo el tiempo máximo de ejecución en segundos. Por lo tanto, con este método el nuevo limite afectará única y exclusivamente al script dónde lo utilicemos.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: php; title: ; notranslate">
&lt;?php

set_time_limit(60);

...

?&gt;
</pre></div>


<p>Debemos puntualizar que en caso de que estemos utilizando php en modo seguro esta función no tendrá ningún efecto.</p>



<h3 class="wp-block-heading">Con la función init_set()</h3>



<p>Este sistema funciona exactamente igual que <em>set_time_limit()</em>, con la única diferencia que utilizaremos la función <em>init_set() </em>pasando el string <em>max_execution_time </em>como primer parámetro.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: php; title: ; notranslate">
&lt;?php

ini_set(&#039;max_execution_time&#039;, 60);

...

?&gt;
</pre></div>


<h3 class="wp-block-heading">En el archivo php.ini</h3>



<p>En este caso, la principal diferencia entre este método y los dos anteriores es que el nuevo límite afectará a todos los scripts PHP que se ejecuten en el servidor dónde apliquemos esta configuración. Para aplicarlo, buscamos la directriz <em>max_execution_time,</em> dentro de la sección <em>Resources Limits</em>, en el archivo <em>php.ini</em> y modificamos su valor.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 60

</pre></div>


<p>Y acto seguido reiniciamos el servidor Apache 2 para que los cambios surtan efecto.:</p>


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


<p>La ubicación del archivo <em>php.ini </em>variará en función del sistema que estemos utilizando. En los sistemas Linux basados en Debian como Ubuntu la ubicación será <em>/etc/php/X.X/apache2</em>, donde X.X será la versión de PHP.</p>



<h3 class="wp-block-heading">En el archivo .htaccess</h3>



<p>Esta es quizás la opción menos conocida de las que mostramos en esta entrada, pero es una de las más interesante en cuanto a que podemos conseguir que la nueva directriz aplique a todos los scripts cuando no tenemos acceso al archivo <em>php.ini</em>.</p>



<p>Para aplicar este sistema editaremos el archivo <em>.htaccess </em>que nos interese incluyendo las siguientes líneas:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
&amp;lt;IfModule mod_php7.c&gt;
php_value max_execution_time 60
&amp;lt;/IfModule&gt;
</pre></div>


<p>Si nuestro servidor utiliza una versión 5.X de PHP en lugar de una versión 7.X, solo habría que cambiar <em>mod_php7.c</em> por <em>mod_php5.c</em>.</p>





<h2 class="wp-block-heading">Cómo comprobar el valor de tiempo máximo de ejecución</h2>



<p>Podemos comprobar el valor de tiempo máximo de ejecución configurado en nuestro servidor en la sección <em>Core </em>de la salida de la función <em>phpinfo()</em>:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="422" height="129" src="https://blog.ahierro.es/wp-content/uploads/2019/07/max_execution_time.png" alt="max_execution_time phpinfo()" class="wp-image-1548" srcset="https://blog.ahierro.es/wp-content/uploads/2019/07/max_execution_time.png 422w, https://blog.ahierro.es/wp-content/uploads/2019/07/max_execution_time-300x92.png 300w" sizes="auto, (max-width: 422px) 100vw, 422px" /></figure>



<p>O como acabamos de ver, accediendo al archivo de configuración php.ini:</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="469" height="143" src="https://blog.ahierro.es/wp-content/uploads/2019/07/max_execution_time_vim.png" alt="max_execution_time en php.ini" class="wp-image-1535" srcset="https://blog.ahierro.es/wp-content/uploads/2019/07/max_execution_time_vim.png 469w, https://blog.ahierro.es/wp-content/uploads/2019/07/max_execution_time_vim-300x91.png 300w" sizes="auto, (max-width: 469px) 100vw, 469px" /></figure>



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



<ul class="wp-block-list"><li>Imagen de portada: <a rel="noreferrer noopener" aria-label="Michael Jarmoluk (abre en una nueva pestaña)" href="https://pixabay.com/users/jarmoluk-143740/" target="_blank">Michael Jarmoluk</a></li><li><a rel="noreferrer noopener" aria-label="Documentación de la función php_time_limit() (abre en una nueva pestaña)" href="https://www.php.net/manual/es/function.set-time-limit.php" target="_blank">Documentación de la función php set_time_limit()</a></li><li><a rel="noreferrer noopener" aria-label="Documentación de la función init_set() (abre en una nueva pestaña)" href="https://www.php.net/manual/es/function.ini-set.php" target="_blank">Documentación de la función php init_set()</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/aumentar-el-limite-de-tiempo-maximo-de-ejecucion-de-un-script-en-php/">Aumentar el limite de tiempo maximo de ejecución de un script en PHP</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/aumentar-el-limite-de-tiempo-maximo-de-ejecucion-de-un-script-en-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como configurar Virtual Hosts en Apache 2 y Ubuntu</title>
		<link>https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/</link>
					<comments>https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/#comments</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 24 Dec 2018 06:30:33 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=288</guid>

					<description><![CDATA[<p>Los más habitual en un entorno de desarrollo, de pruebas o de pre-producción es que tengamos varios proyectos conviviendo en paralelo. Y como ser organizado no es solo una virtud, sino que es una cualidad imprescindible para evitar el caos de cara al futuro, los hosts virtuales de Apache 2 son una buena forma de &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Como configurar Virtual Hosts en Apache 2 y Ubuntu"</span></a></p>
La entrada <a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/">Como configurar Virtual Hosts en Apache 2 y 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>Los más habitual en un entorno de desarrollo, de pruebas o de pre-producción es que tengamos varios proyectos conviviendo en paralelo. Y como ser organizado no es solo una virtud, sino que es una cualidad imprescindible para evitar el caos de cara al futuro, los hosts virtuales de Apache 2 son una buena forma de lograrlo.</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/apache_virtual_hosts.png" alt="Apache Virtual Hosts" class="wp-image-303" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/apache_virtual_hosts.png 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/apache_virtual_hosts-300x168.png 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/apache_virtual_hosts-267x150.png 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



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



<p>Los ejemplos de este documento han sido probados tanto sobre Ubuntu Mate 16.0.4.2 y Apache 2.4.18 como sobre XUbuntu 18.04 con la versión 2.4.29 de Apache, aunque funcionarán sobre la mayoría de distribuciones Linux con la versión 2.4 de Apache.</p>



<p>Para el resto del artículo, asumiremos que la ip de la máquina dónde estamos configurando los host virtuales es 192.168.1.10.</p>



<h3 class="wp-block-heading">¿Qué es un virtual host en Apache 2?</h3>



<p>Virtual host es la herramienta que Apache pone a nuestra disposición para poder publicar más de una página web en un mismo servidor Apache, y que además,&nbsp; nos permite mantener configuraciones diferentes para cada host virtual.</p>





<p>Al realizar una petición al servidor web, Apache puede identificar a que site (host virtual) queremos acceden en función de tres variables relacionadas con la solicitud realuzada al servidor:</p>



<ol class="wp-block-list"><li>La IP</li><li>El Host Name</li><li>El puerto</li></ol>



<p>En este artículo distinguiremos los host virtuales por el puerto, pues es lo que utilizo habitualmente en mi entorno de desarrollo por una simple cuestión de comodidad.</p>



<h3 class="wp-block-heading">Nociones de configuración</h3>



<p>Toda la configuración de Apache 2 se encuentra bajo la carpeta <em>/var/apache2</em>. Los archivos de configuración para los virtual hosts se encuentran dentro de dos carpetas en particular:</p>



<ol class="wp-block-list"><li><em>/var/apache2/sites-available</em>. En esta carpeta se encuentran todos los archivos de configuración de los hosts virtuales, cada host se corresponde con un archivo.</li><li><em>/var/apache2/sites-enabled</em>. En esta carpeta se crearán enlaces simbólicos a los archivos de la carpeta sites-available para los host que queramos activar en cada momento.</li></ol>



<p>Con la instalación de Apache, se creará por defecto, el archivo <em>/etc/apache2/sites-available/000-default.conf</em> y su correspondiente enlace simbólico en la carpeta <em>sites-enabled</em> que se encarga de configurar el host virtual por defecto al que accedemos tras instalar Apache.</p>



<h3 class="wp-block-heading">Cómo crear un virtual host</h3>



<p>Crear host virtuales es una tarea relativamente habitual, así que los señores desarrolladores de Apache nos lo han puesto bastante sencillo.</p>



<p>A continuación crearemos un host virtual para alojar un entorno de pruebas de este blog. Para entender mejor el proceso, a pesar de que es sencillo, lo dividiremos en cuatro pasos:</p>



<h4 class="wp-block-heading">Paso 1: Creamos el directorio que alojará nuestra web</h4>



<p>Lo primero será crear el directorio dónde alojaremos los archivos que posteriormente serviremos.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cd /var/www
sudo mkdir ahierro.es
cd ahierro.es
sudo mkdir public
</pre></div>


<p>La carpeta que serviremos será <em>public</em>, es buena idea guardarse un nivel de directorio para archivos relacionados con el proyecto que no deben ser accesibles desde una url en el navegador. Esto es bastante habitual en muchas aplicaciones y frameworks.</p>



<p>En este paso del proceso es importante dejar correctamente configurados los permisos de acceso a los archivos y carpetas de nuestro host virtual. Para ello os dejo un enlace al artículo <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> por si queréis echarle un vistazo.</p>



<h4 class="wp-block-heading">Paso 2: Creamos el archivo de configuración del nuevo host virtual</h4>



<p>Ahora crearemos el archivo de configuración en <em>/etc/apache2/sites-available</em>, lo más sencillo es hacerlo desde otro que ya exista. Es muy importante que lleve la extensión .conf o el comando a2ensite no funcionará más adelante:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
cd /etc/apache2/sites-available
sudo cp 000-default.conf ahierro.es.conf
</pre></div>


<p>Lo editamos:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo vim ahierro.es.conf
</pre></div>


<p>Inicialmente tenemos algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&lt;VirtualHost *:80&gt;
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request&#039;s Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with &quot;a2disconf&quot;.
#Include conf-available/serve-cgi-bin.conf
&lt;/VirtualHost&gt;
</pre></div>


<p>Y tras modificarlo debe quedar así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
&lt;VirtualHost *:80&gt;
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request&#039;s Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/ahierro.es/public

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with &quot;a2disconf&quot;.
#Include conf-available/serve-cgi-bin.conf

&lt;Directory /var/www/ahierro.es/public&gt;
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
&lt;/Directory&gt;

&lt;/VirtualHost&gt;
</pre></div>


<p>Como podemos ver en la línea 1 hemos cambiado :80 por :8085, con lo que estamos indicando que a este virtualhost accederemos mediante este puerto. Personalmente suelo comenzar con el puerto 8080, en este ejemplo he especificado el 8085 porque ya tengo otros cinco host virtuales.</p>





<p>En la línea 12 lo único que hemos hecho es actualizar la referencia al directorio raíz para asegurarnos que apunta al lugar adecuado.</p>



<p>Y por último hemos añadido una nueva sección a partir de la línea 30 con unas directrices básicas entre las que hemos habilitado el módulo mod_rewrite, necesario para la re-escritura de urls.</p>



<h4 class="wp-block-heading">Paso 3: Abrimos el puerto adecuado en Apache</h4>



<p>Por defecto Apache solo atiende solicitudes por el puerto 80. Para conseguir que también atienda las que llegan por el puerto 8085, que es el que hemos indicado en nuestro fichero de configuración del virtual host, debemos editar el archivo <em>/etc/apache2/ports.conf</em>.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo vim /etc/apache2/ports.conf
</pre></div>


<p>El contenido del fichero es algo así:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80
Listen 8085

&lt;IfModule ssl_module&gt;
Listen 443
&lt;/IfModule&gt;

&lt;IfModule mod_gnutls&gt;
Listen 443
&lt;/IfModule&gt;
</pre></div>


<p>Vemos que la&nbsp; línea 5 hace referencia al puerto 80, nosotros hemos añadido una línea más, la 6, indicándole que escuche también el puerto 8085.</p>



<h4 class="wp-block-heading">Paso 4: Habilitamos el nuevo virtualhost</h4>



<p>Si os habéis fijado hablamos de los directorios <em>sites-available</em> y <em>sites-enabled</em>, pero solo hemos trabajado con el primero. Para crear el enlace simbólico lo haremos con el comando a2ensite:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo a2ensite ahierro.es.conf
</pre></div>


<p>Y por si te lo estás preguntando, si, un ln o un cp servirían de igual manera. Y ahora que el enlace simbólico ya se encuentra en el directorio <em>sites-enabled</em> solo nos queda reiniciar apache:</p>


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


<h4 class="wp-block-heading">Paso 5: Comprobamos que todo funcione correctamente</h4>



<p>Podemos comprobar que todo ha salido bien con dos sencillos pasos</p>



<ol class="wp-block-list"><li>Creamos un archivo <em>index.html</em> y lo guardamos en el directorio público del host virtual que acabamos de crear, en este caso <em>/var/www/ahierro.es/public</em>.</li><li>Accedemos a la ip del servidor seguida de dos puntos y el puerto: <em>http://192.168.1.10:8085/index.html.</em></li></ol>



<p>Si vemos el contenido del archivo index.html es que todo ha salido bien, en caso contrario deberemos buscar el problema en función del mensaje de error obtenido.</p>



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



<p>Una forma sencilla de organizar nuestros proyectos siempre que no sean demasiados.</p>



<p>Personalmente, en el virtual host por defecto (puerto 80),&nbsp; creo un sencillo fichero con enlaces a todos los hosts virtuales y otros accesos directos que me interesa tener a mano como pueden ser phpmyadmin o phpinfo. Esto suele ahorrarme unos minutos preciados minutos cada día.</p>



<p>Y como siempre me gustaría saber tú opinión,&nbsp; ¿utilizas los virtual host? ¿los identificas por puerto? ¿organizas tus proyectos de otra forma? Deja un comentario y aprendamos juntos.</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/archivos-y-permisos-de-usuario-en-apache-y-linux/">Archivos y permisos de usuario en Apache 2 y 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><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/clonar-una-web-en-un-servidor-local/">Clonar una web en un servidor local</a></li></ul>La entrada <a href="https://blog.ahierro.es/como-configurar-virtual-hosts-en-apache-y-ubuntu/">Como configurar Virtual Hosts en Apache 2 y 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/como-configurar-virtual-hosts-en-apache-y-ubuntu/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor Web en Raspberry PI y Ubuntu Mate</title>
		<link>https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/</link>
					<comments>https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/#respond</comments>
		
		<dc:creator><![CDATA[Andres]]></dc:creator>
		<pubDate>Mon, 10 Dec 2018 06:15:41 +0000</pubDate>
				<category><![CDATA[Servicios]]></category>
		<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[base de datos]]></category>
		<category><![CDATA[mariadb]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[raspberry pi]]></category>
		<category><![CDATA[servidor]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.ahierro.es/?p=148</guid>

					<description><![CDATA[<p>Un servidor web Apache 2 corriendo sobre Linux no requiere muchos recursos de hardware. Así que si queremos disponer de un servidor casero dónde poder trastear y realizar pruebas o desarrollar ese pequeño proyecto que siempre nos ronda en la cabeza, una Raspberry Pi es una buena opción. Esta entrada forma parte de la serie &#8230; </p>
<p class="link-more"><a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/" class="more-link">Continuar leyendo<span class="screen-reader-text"> "Servidor Web en Raspberry PI y Ubuntu Mate"</span></a></p>
La entrada <a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</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>Un servidor web Apache 2 corriendo sobre Linux no requiere muchos recursos de hardware. Así que si queremos disponer de un servidor casero dónde poder trastear y realizar pruebas o desarrollar ese pequeño proyecto que siempre nos ronda en la cabeza, una Raspberry Pi es una buena opción.</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/servidor_web.jpg" alt="Servidor web" class="wp-image-251" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/servidor_web.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/servidor_web-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/servidor_web-267x150.jpg 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



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



<p>Esta entrada forma parte de la serie <a href="https://www.ahierro.es/raspberry-pi-como-herramienta-de-apoyo-para-el-desarrollo-web/">Raspberry Pi como herramienta de apoyo al desarrollo web</a>, y está pensada para un servidor de uso personal. De cualquier manera, el contenido de esta guía es perfectamente aplicable a cualquier distribución de Linux basada en Ubuntu y a Raspbian.</p>





<p>Esta documento también puede utilizarse para la configuración de un servidor de una pequeña organización, en cuyo caso sería necesario tener en cuenta algunas consideraciones:</p>



<ol class="wp-block-list"><li>Una Rasperri Pi no es el hardware más adecuado. Debería instalarse sobre un hardware fiable y acordemente dimensionado a las necesidades del uso que se le dará.</li><li>Además del contenido de este artículo, deberían realizarse una serie de configuraciones extra enfocadas en la seguridad que no entran en el ámbito ni el alcance de este documento.</li><li>Este artículo esta pensado para la instalación y configuración de un servidor web en una red local, en caso de que el servidor sea accesible directamente desde internet, el punto anterior cobra mayor importancia, además de requerir algunos ajustes más.</li></ol>



<p>Una vez que todos tenemos claro el ámbito y el alcance, vamos al lío.</p>



<h3 class="wp-block-heading">Instalamos Apache 2</h3>



<p>Este paso será muy sencillo, actualizamos los repositorios e instalamos Apache 2:</p>


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


<p>Si todo ha ido bien ya podremos acceder al al servidor web desde cualquier pc conectado a la red local con tan solo introducir la ip en el navegador.</p>



<p>Para el resto de la entrada asumiremos que nuestra Raspberry está configurada con la IP estática 192.168.1.10.</p>



<p>Así que si introducimos en el navegador la dirección http://192.168.1.10&nbsp; veremos la página por defecto de Apache 2:</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/apache2_default_page.jpg" alt="Apache 2 página por defecto" class="wp-image-256" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/apache2_default_page.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/apache2_default_page-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/apache2_default_page-267x150.jpg 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<p>Un aspecto muy importante en la configuración de Apache es asignar los permisos adecuados a la carpeta del servidor. Podemos pasar sin hacerlo pero más pronto que tarde nos encontraremos con problemas relacionados con permisos.</p>





<p>Comenzaremos asegurándonos de que /var/www/html pertenezca al grupo www-data y que tiene los permisos adecuados:</p>


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


<p>Agregamos nuestro usuario al grupo www-data:</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>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 usuario /var/www/html
</pre></div>


<p>Con esto hemos concluido la instalación de Apache.</p>



<h3 class="wp-block-heading">Instalamos PHP</h3>



<p>Instalamos PHP:</p>


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


<p>Es posible que en función de la distribución que utilicemos en lugar del paquete php7.0 encontremos otra versión. Podemos comprobarlo fácilmente con la siguiente orden:</p>


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


<p>Y si por cualquier motivo necesitamos una versión específica de php, deberemos incluir el repositorio ondrej/php como hacemos a continuación:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
</pre></div>


<p>En este caso he incluido la opción -y porque al intentar agregar el repositorio me mostraba un warning relacionado con la codificación de caracteres de los repositorios.</p>



<p>Acto seguido instalar la versión de php que necesitemos, en mi caso voy a instalar la versión 7.3:</p>


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


<p>Tras reiniciar Apache ya habremos acabado:</p>


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


<p>Para comprobar que php está correctamente instalado crearemos el archivo&nbsp; /var/www/html/phpinfo.php con el siguiente contenido:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: php; title: ; notranslate">
&lt;?php php phpinfo(); ?&gt;
</pre></div>


<p>Si todo es correcto al acceder a http://192.168.1.10/phpinfo.php veremos algo así:</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/php_info_php73.jpg" alt="phpinfo php 7.3" class="wp-image-279" srcset="https://blog.ahierro.es/wp-content/uploads/2018/12/php_info_php73.jpg 650w, https://blog.ahierro.es/wp-content/uploads/2018/12/php_info_php73-300x168.jpg 300w, https://blog.ahierro.es/wp-content/uploads/2018/12/php_info_php73-267x150.jpg 267w" sizes="auto, (max-width: 650px) 100vw, 650px" /></figure>



<h3 class="wp-block-heading">Instalamos y configuramos MariaDB</h3>



<p>Una vez que php está instalado, continuamos con la base de datos:</p>


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


<p>Durante el proceso de instalación deberemos responder responder a algunas preguntas que sin complicación alguna.</p>



<p>El primer paso tras la instalación será configurar MariaDB para que podamos acceder remotamente, pues por defecto solo acepta conexiones desde el propio host:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
</pre></div>


<p>Esfe archivo puede cambiar en función de tu distribución y de la versión de MariaDB. En ocasiones puedes encontrarlo en /etc/mysql/my.cnf, en /etc/mysql/mysql.conf.d/mysqld.cnf, etc.</p>



<p>Localizamos la siguiente línea:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
bind-address  = 127.0.0.1
</pre></div>


<p>La sustituimos por:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
bind-address  = 0.0.0.0
</pre></div>


<p>Y reiniciamos la base de datos:</p>


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


<p>Con esto hemos habilitado el acceso remoto a MariaDB. Ahora crearemos un nuevo usuario para evitar trabajar con root. Para ello accedemos a la consola de MariaDB:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
sudo mysql -u root -p
</pre></div>


<p>Una vez en la consola de MariaDB creamos nuestro usuario:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
CREATE USER &#039;usuario&#039; IDENTIFIED BY &#039;contraseña&#039;;
</pre></div>


<p>Y concedemos acceso remoto y a todas las bases de datos al usuario que acabamos de crear:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
GRANT USAGE ON *.* TO &#039;usuario&#039;@&#039;%&#039; IDENTIFIED BY &#039;contraseña&#039;;
</pre></div>


<p>En este punto es buena idea comprobar que todo ha salido bien. Podemos hacerlo abriendo una conexión al servidor de bases desde nuestro equipo de trabajo con alguna herramienta como MySQL Workbench.</p>



<h3 class="wp-block-heading">Instalamos phpMyAdmin</h3>



<p>Esta es una herramienta que siempre me gusta instalar a pesar de que en la mayoría de situaciones trabajo con MySql Workbenck. Para instalar basta con:</p>


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


<p>Y una vez instalado podremos acceder a ella mediante <em>http://192.168.1.10/phpmyadmin</em>.</p>





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



<p>Ya tenemos un servidor web completamente funcional corriendo sobre nuestra Rasperri PI, sencillo, económico y funcional. Ahora solo hay que usarlo.</p>



<p>¿Y tú?, ¿Crees que necesitamos aplicar alguna otra configuración? ¿Haces algo distinto? ¿Echas en falta algún paso? o simplemente ¿te ha servido de ayuda? Comparte tu experiencia y aprendamos todos.</p>La entrada <a href="https://blog.ahierro.es/servidor-web-en-raspberry-pi-y-ubuntu-mate/">Servidor Web en Raspberry PI y Ubuntu Mate</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/servidor-web-en-raspberry-pi-y-ubuntu-mate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
