<?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>Alexander Garzon &#187; linux</title>
	<atom:link href="http://agarzon.php.com.ve/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://agarzon.php.com.ve</link>
	<description>... porque no todo es PHP.</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:57:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>How to uninstall APF (Advanced Policy Firewall)</title>
		<link>http://agarzon.php.com.ve/how-to-uninstall-apf-advanced-policy-firewall/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-uninstall-apf-advanced-policy-firewall</link>
		<comments>http://agarzon.php.com.ve/how-to-uninstall-apf-advanced-policy-firewall/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 18:02:07 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[plesk]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=416</guid>
		<description><![CDATA[No más&#8230; por muchos años usé el APF firewall el cual fue en su tiempo bastante útil y poderoso. Pero últimamente ha sido un terrible dolor de cabeza, en especial al trabajar con FTP en modo pasivo; y como hasta la fecha no han dado solución al bug, pues he decidido desinstalarlo. Pero como el [...]]]></description>
			<content:encoded><![CDATA[<p>No más&#8230; por muchos años usé el <a href="http://www.rfxn.com/projects/advanced-policy-firewall/">APF firewall</a> el cual fue en su tiempo bastante útil y poderoso.</p>
<p>Pero últimamente ha sido un terrible dolor de cabeza, en especial al trabajar con FTP en modo pasivo; y como hasta la fecha no han dado solución al bug, pues he decidido desinstalarlo.</p>
<p>Pero como el APF no fue instalado por repositorio sino compilado, desinatalarlo puede ser algo complicado&#8230; es por ello que he creado este script para desinstalar el APF, sin dolores de cabeza.</p>
<pre class="brush: shell; ">

#!/bin/bash
echo &quot;APF Uninstaller&quot;

#stoping APF
/etc/rc.d/init.d/apf stop

#bye bye daemon
chkconfig --del apf
rm -f /etc/rc.d/init.d/apf

#au revoir configs
rm -rf /etc/apf

#no more cron
rm -f /etc/cron.d/refresh.apf
rm -f /etc/cron.daily/apf

#adios, log rotations
rm -f /etc/logrotate.d/apf

#sayonara, executable
rm -f /usr/local/sbin/apf

# Arrivederci! logs
rm -f /var/log/apf_log*

echo &quot;Done!&quot;
</pre>
<p>Espero les sea de ayuda ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/how-to-uninstall-apf-advanced-policy-firewall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script bash para obtener un reporte de consumo de disco por dominio en plesk</title>
		<link>http://agarzon.php.com.ve/script-bash-para-obtener-un-reporte-de-consumo-de-disco-por-dominio-en-plesk/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=script-bash-para-obtener-un-reporte-de-consumo-de-disco-por-dominio-en-plesk</link>
		<comments>http://agarzon.php.com.ve/script-bash-para-obtener-un-reporte-de-consumo-de-disco-por-dominio-en-plesk/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 17:15:10 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[plesk]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=410</guid>
		<description><![CDATA[No soy muy dado a hacer scripts shell de Linux, prefiero hacerlos en PHP. Pero necesitaba algo simple y rápido para obtener reportes de consumo de disco por dominio en un servidor Linux con PLESK. #!/bin/bash echo &#34;***Correos***&#34; cd /var/qmail/mailnames/$1 du -csk * &#124; sort -n echo &#34;***Web***&#34; cd /var/www/vhosts/$1/httpdocs/ du -csk * &#124; sort [...]]]></description>
			<content:encoded><![CDATA[<p>No soy muy dado a hacer scripts shell de Linux, prefiero hacerlos en PHP. Pero necesitaba algo simple y rápido para obtener reportes de consumo de disco por dominio en un servidor Linux con PLESK.</p>
<pre class="brush: shell; ">

#!/bin/bash

echo &quot;***Correos***&quot;
cd /var/qmail/mailnames/$1
du -csk * | sort -n
echo &quot;***Web***&quot;
cd /var/www/vhosts/$1/httpdocs/
du -csk * | sort -n
echo &quot;FIN&quot;
</pre>
<p>Y allí lo tienen, nada del otro mundo&#8230; sólo deben pasar como parámetro el dominio que desean evaluar por ejemplo:<br />
<strong>./reporte.sh dominioaevaluar.com</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/script-bash-para-obtener-un-reporte-de-consumo-de-disco-por-dominio-en-plesk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar y configurar monit para linux</title>
		<link>http://agarzon.php.com.ve/instalar-y-configurar-monit-para-linux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instalar-y-configurar-monit-para-linux</link>
		<comments>http://agarzon.php.com.ve/instalar-y-configurar-monit-para-linux/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 20:15:58 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=274</guid>
		<description><![CDATA[No hace mucho puse en marcha en varios servidores un interesante monitor de servicios que es capaz de ejecutar comandos y lanzar alertas que nosotros programemos ante determinadas condiciones que fijemos. Es capaz de monitorizar cualquier tipo de servicio o demonio, archivos de disco o sistema, vigilar espacios de discos, identificadores de proceso PID, realizar [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-286  aligncenter" title="monit-logo" src="http://agarzon.php.com.ve/wp-content/uploads/2010/07/monit-logo.jpg" alt="Monit" width="243" height="147" /></p>
<p>No hace mucho puse en marcha en varios servidores un interesante monitor de servicios que es capaz de ejecutar comandos y lanzar alertas que nosotros programemos ante determinadas condiciones que fijemos.</p>
<p>Es capaz de monitorizar cualquier tipo de servicio o demonio, archivos de disco o sistema, vigilar espacios de discos, identificadores de proceso PID, realizar checksum y muchísimas cosas más, su forma de configurar es tan potente que configurarlo resulta en casi un lenguaje de programación.</p>
<p>Sin embargo no hay que asustarse, ya que es tremendamente intuitivo.</p>
<p>La maravilla de que les hablo se llama <a href="http://mmonit.com/monit/">MONIT</a> y es de licencia libre.</p>
<p><strong>Advertencia</strong>: Este artículo es para profesionales  que están plenamente familiarizados con servidores Linux. No me hago responsable de ningún daño en su sistema.</p>
<p>Lo primero es bajarnos una copia del programita, al momento de redactar este tutorial la versión estable es la 5.1.1. (no olvides que todo esto has de realizarlo como ROOT del sistema)</p>
<pre class="brush: shell; ">

wget http://mmonit.com/monit/dist/monit-5.1.1.tar.gz
tar zxvf monit-*
cd monit*
./configure --without-ssl
make &amp;amp;&amp;amp; make install
</pre>
<p>Bien, ya lo hemos instalado&#8230; la opción  <strong>&#8211;without-ssl</strong> es opcional pero yo la prefiero para evitar que el monitor web que veremos más adelante tenga que necesariamente usar un protocolo HTTPS.</p>
<p>Bien, ya está instalado pero debemos saber que aunque esté instalado faltan 2 cosas: el archivo de configuración y colocarlo como demonio (servicio que se auto-ejecuta cada vez que arranquemos nuestro servidor).</p>
<p>Primero, vamos a preparar a monit como un servicio activo:</p>
<pre class="brush: shell; ">

cp contrib/rc.monit /etc/init.d/monit
chmod 755 /etc/init.d/monit
ln -s /usr/local/bin/monit /usr/bin/monit
chkconfig --add monit
chkconfig monit on
</pre>
<p>Y ahora nuestro archivo de configuración principal <strong>/etc/monitrc</strong> y la carpeta <strong>/etc/monit</strong> donde colocaremos de forma ordenada e independiente cada &#8216;monitor&#8217; que deseamos establecer :</p>
<pre class="brush: shell; ">

touch /etc/monitrc
chmod 700 /etc/monitrc
mkdir /etc/monit
</pre>
<p>Y nuestro archivo de configuración <strong>/etc/monitrc</strong>:</p>
<pre class="brush: shell; ">

# Monit control file
# ==================

# Monit global settings:
# ----------------------
set daemon  60
set logfile syslog facility log_daemon
set mailserver localhost
set alert usuario@dominio.com # direccion a donde enviaremos las alertas del sistema
set mail-format {
from: monit@localhost
subject: $SERVICE $EVENT
message: $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
}

set httpd port 2812 and
allow xxx.xxx.xxx.xxx # La IP remota que tendrá permiso para poder ver el monitor web
allow usuario:clave #pues eso... los permisos que necesitas para poder entrar al monitor vía web

include /etc/monit/server.monit
include /etc/monit/httpd.monit
include /etc/monit/mysqld.monit
</pre>
<p>Como podrán ver este archivo de configuración permite establecer cada cuanto tiempo realizar la revisión, el formato de correo, remitente y destinatario, servicios que activaremos (con include), y acceso al puerto 2812 vía web con usuario y clave (no olvides abrir este puerto en tu firewall)</p>
<p>Listo, ahora vienen los archivos de configuración de cada servicio:</p>
<p><strong>server.monit:</strong></p>
<pre class="brush: shell; ">

# Monit Server  settings:
# ----------------------
check system xxx.xxx.xxx.xxx #IP de tu host
if loadavg (1min) &gt; 5 then alert
if loadavg (5min) &gt; 10 for then alert
if memory usage &gt; 90% then alert
if cpu usage (user) &gt; 70% for 3 cycles then alert
if cpu usage (system) &gt; 30% for 3 cycles then alert
if cpu usage (wait) &gt; 20% for 3 cycles then alert
</pre>
<p><strong>httpd.monit:</strong></p>
<pre class="brush: shell; ">

#
# Monitor Apache (httpd)
#
check process httpd with pidfile /var/run/httpd.pid
start program = &quot;/etc/init.d/httpd start&quot;  with timeout 60 seconds
stop program  = &quot;/etc/init.d/httpd stop&quot;
if totalcpu &gt; 90% for 3 cycles then restart
if totalmem &gt; 95% for 3 cycles then restart
if children &gt; 250 for 3 cycles then restart
if cpu &gt; 70% for 3 cycles then restart
if failed host xxx.xxx.xxx port 80 protocol http then restart #IP de tu host
</pre>
<p><strong>mysqld.monit:</strong></p>
<pre class="brush: shell; ">

check process mysql with pidfile  /var/run/mysqld/mysqld.pid
group database
start program = &quot;/etc/init.d/mysqld start&quot;
stop program = &quot;/etc/init.d/mysqld stop&quot;
if cpu &gt; 95% for 2 cycles then restart
if memory usage &gt; 75% then restart
if failed host xxx.xxx.xxx port 3306 protocol mysql then restart #IP de tu host
</pre>
<p>Listo, cada quien se puede ajustar sus monitores a su gusto, hay muy buena <a href="http://mmonit.com/monit/documentation/monit.html">documentación</a> y muchos <a href="http://mmonit.com/wiki/Monit/ConfigurationExamples">ejemplos</a></p>
<p>Respecto a monit, sólo resta ponerlo a andar:</p>
<pre class="brush: shell; ">

/etc/init.d/monit restart
</pre>
<p>Verificar las sintaxis de nuestros archivos de configuración:</p>
<pre class="brush: shell; ">

monit -t
</pre>
<p>Y si queremos &#8220;recargar&#8221; nuestro monitor para releer los archivos de configuración sin necedad de parar el servicio, podemos hacer:</p>
<pre class="brush: shell; ">

monit reload
</pre>
<p>Ce tout !, para ver nuestro monitor vía web: http://xxx.xxx.xxx.xxx:2812 (IP del servidor)</p>
<p>Lo demás es lectura, experimentación y curiosidad&#8230; las posibilidades son casi infinitas !</p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/instalar-y-configurar-monit-para-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Buscar en archivos .htaccess por contenido y en forma recursiva</title>
		<link>http://agarzon.php.com.ve/buscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=buscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva</link>
		<comments>http://agarzon.php.com.ve/buscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 21:49:42 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=234</guid>
		<description><![CDATA[Hace poco me vi en la necesidad de buscar entre todos los dominios de un servidor, determinada &#8220;cadena&#8221; contenida entre todos los archivos .htaccess que pudieran existir. Como muchos saben un archivo con la forma .xxx en Linux representa a un archivo &#8220;oculto&#8221; y por tanto una simple instrucción GREP o FIND no nos servirían [...]]]></description>
			<content:encoded><![CDATA[<p>Hace poco me vi en la necesidad de buscar entre todos los dominios de un servidor, determinada &#8220;cadena&#8221; contenida entre todos los archivos .htaccess que pudieran existir.</p>
<p>Como muchos saben un archivo con la forma <strong>.xxx</strong> en Linux representa a un archivo &#8220;oculto&#8221; y por tanto una simple instrucción GREP o FIND no nos servirían de mucho a no ser que las usemos combinadas.</p>
<p>Así pues que la solución la dejo por acá en forma de nota mental para mis usos futuros (y el de ustedes).</p>
<pre class="brush: perl; ">

find . -name &quot;.htaccess&quot; -exec grep -r -n -H -I &#039;cadena-a-buscar&#039; {} \;
</pre>
<p>Esta instrucción la ejecutamos desde luego desde el directorio donde deseamos iniciar la recursividad, en mi caso:<br />
<strong>/var/www/vhosts</strong> (plesk)</p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/buscar-en-archivos-htaccess-por-contenido-y-en-forma-recursiva/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deshabilitar mod_security por dominio</title>
		<link>http://agarzon.php.com.ve/deshabilitar-mod_security-por-dominio/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=deshabilitar-mod_security-por-dominio</link>
		<comments>http://agarzon.php.com.ve/deshabilitar-mod_security-por-dominio/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 18:14:38 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=228</guid>
		<description><![CDATA[El mod_security es un gran addon a nuestro Apache para ayudarnos a proteger nuestros dominios hospedados en el servidor contra ataques DDOS, inyección de SQL, y muchos otros más, pero &#8230; Sucede mucho que ante ciertos CMS como foros, blogs, portales, etc&#8230; el mod_security dispara incómodos falsos-positivos, y por ende dichos sistemas instalados dejan de [...]]]></description>
			<content:encoded><![CDATA[<p>El mod_security es un gran addon a nuestro Apache para ayudarnos a proteger nuestros dominios hospedados en el servidor contra ataques DDOS, inyección de SQL, y muchos otros más, pero &#8230;</p>
<p>Sucede mucho que ante ciertos CMS como foros, blogs, portales, etc&#8230; el mod_security dispara incómodos falsos-positivos, y por ende dichos sistemas instalados dejan de funcionar como esperamos que lo hagan.</p>
<p>La solución es simple: Analizar los logs en búsqueda de la razón de estos falsos positivos y ajustar las reglas del mod_security pero, siempre hay una opción mucho más rápida: deshabilitar el mod_security (Aunque evidentemente esto deja sin protección al sistema)</p>
<p>Pero ¿cómo hacemos esto si el mod_security al ser un plugin del Apache que afecta en general y por igual a todos los dominios hospedados en un mismo servidor?</p>
<p>Pues fácil:<br />
Creamos (o editamos) el archivo <strong>.htaccess</strong> el cual está en la raíz del dominio que queremos deshabilitarle el mod_security y ya está:</p>
<pre class="brush: perl; ">

&lt;IfModule mod_security.c&gt;
SecFilterEngine Off
&lt;/IfModule&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/deshabilitar-mod_security-por-dominio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimizar automáticamente todas las tablas de un servidor MySQL</title>
		<link>http://agarzon.php.com.ve/optimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=optimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql</link>
		<comments>http://agarzon.php.com.ve/optimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 23:14:21 +0000</pubDate>
		<dc:creator>Alexander Garzon</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plesk]]></category>

		<guid isPermaLink="false">http://agarzon.php.com.ve/?p=193</guid>
		<description><![CDATA[En los servidores de VeneHosting.com ejecutamos semanalmente un proceso que optimiza &#8216;a juro&#8217; todas las tablas, de todas las bases de datos MySQL de todo el servidor (que vienen siendo un montón enorme!); con el fin de ayudar a mantener un buen nivel de rendimiento. Como no somos egoístas, compartimos este simple script con el [...]]]></description>
			<content:encoded><![CDATA[<p>En los servidores de <a href="http://www.venehosting.com/">VeneHosting.com</a> ejecutamos semanalmente un proceso que optimiza &#8216;a juro&#8217; todas las tablas, de todas las bases de datos MySQL de todo el servidor (que vienen siendo un montón enorme!); con el fin de ayudar a mantener un buen nivel de rendimiento.</p>
<p>Como no somos egoístas, compartimos este simple script con el resto de la comunidad y ¿porqué no?, hasta la competencia podría aprender algo más de nosotros !</p>
<pre class="brush: php; ">

&lt;?php
/* modifica estos valores según tu servidor.*/
$host=&quot;localhost&quot;;
$usuario=&quot;admin&quot;; //Tu super usuario
$pasword=&quot;xxxxx&quot;; //La clave del super-usuario

/*no modifiques nada más*/
$link=mysql_connect($host,$usuario,$pasword);

$dbs=mysql_list_dbs($link);
while ($db=mysql_fetch_object($dbs))
{
        echo &quot;$db-&gt;Database\n&quot;;
        $tablas = mysql_db_query($db-&gt;Database, &quot;SHOW TABLES&quot;, $link);
        while ($tabla=mysql_fetch_array($tablas)) {
                mysql_db_query($db-&gt;Database, &quot;OPTIMIZE TABLE &quot;.$tabla[0], $link);
                echo &quot;$tabla[0]\n&quot;;
        }
}
?&gt;
</pre>
<p>Sólo resta programar este script con CRON para que se ejecute cada X tiempo (recomendado 1 vez a la semana) y listo !</p>
]]></content:encoded>
			<wfw:commentRss>http://agarzon.php.com.ve/optimizar-automaticamente-todas-las-tablas-de-un-servidor-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

