<?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>Shakaran &#187; Apache</title> <atom:link href="http://shakaran.net/blog/category/open-source/apache/feed/" rel="self" type="application/rss+xml" /><link>http://shakaran.net/blog</link> <description>Blog de un estudiante de ingeniería informática y sysadmin</description> <lastBuildDate>Sun, 29 Aug 2010 04:21:39 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <image><link>http://shakaran.net/blog</link> <url>http://www.shakaran.net/blog/wp-content/favicon.png</url><title>Shakaran</title> </image> <item><title>Apache checker: un script comprobador de Apache en bash</title><link>http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/</link> <comments>http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/#comments</comments> <pubDate>Fri, 12 Feb 2010 15:13:12 +0000</pubDate> <dc:creator>shakaran</dc:creator> <category><![CDATA[Apache]]></category> <category><![CDATA[Cpanel]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Servidores]]></category> <category><![CDATA[administracion]]></category> <category><![CDATA[bc]]></category> <category><![CDATA[centos]]></category> <category><![CDATA[checker]]></category> <category><![CDATA[consumo]]></category> <category><![CDATA[crontab]]></category> <category><![CDATA[eficiencia]]></category> <category><![CDATA[gestion]]></category> <category><![CDATA[limite]]></category> <category><![CDATA[memoria]]></category> <category><![CDATA[mutt]]></category> <category><![CDATA[optimizar]]></category> <category><![CDATA[quijost]]></category> <category><![CDATA[servidor]]></category><guid isPermaLink="false">http://shakaran.net/blog/?p=867</guid> <description><![CDATA[jQuery(document).ready(function($) { window.setTimeout('loadDigg_867()',5000);window.setTimeout('loadReddit_867()',5000);window.setTimeout('loadGBuzz_867()',5000);window.setTimeout('loadDzone_867()',5000);window.setTimeout('loadTwitter_867()',5000);window.setTimeout('loadFBShare_867()',5000);window.setTimeout('loadFBShareMe_867()',5000);window.setTimeout('loadFBLike_867()',5000);window.setTimeout('loadDelicious_867()',5000);$('.delicious-normal-img,.delicious-compact-img').hide(); }); function loadDigg_867(){ jQuery(document).ready(function($) { $('.dd-digg-867').remove();$('.DD_DIGG_AJAX_867').attr('href','http://digg.com/submit?url=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&#38;title=Apache+checker%3A+un+script+comprobador+de+Apache+en+bash');$.getScript('http://widgets.digg.com/buttons.js'); }); } function loadReddit_867(){ jQuery(document).ready(function($) { $('.dd-reddit-867').remove();$('.DD_REDDIT_AJAX_867').attr('width','51');$('.DD_REDDIT_AJAX_867').attr('height','69');$('.DD_REDDIT_AJAX_867').attr('src','http://www.reddit.com/static/button/button2.html?width=51&#38;url=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&#38;title=Apache+checker%3A+un+script+comprobador+de+Apache+en+bash&#38;newwindow=1'); }); } function loadGBuzz_867(){ jQuery(document).ready(function($) { $('.dd-gbuzz-867').remove();$.getScript('http://www.google.com/buzz/api/button.js'); }); } function loadDzone_867(){ jQuery(document).ready(function($) { $('.dd-dzone-867').remove();$('.DD_DZONE_AJAX_867').attr('width','52');$('.DD_DZONE_AJAX_867').attr('height','68');$('.DD_DZONE_AJAX_867').attr('src','http://widgets.dzone.com/links/widgets/zoneit.html?url=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&#038;title=Apache+checker%3A+un+script+comprobador+de+Apache+en+bash&#038;t=1'); }); } function loadTwitter_867(){ jQuery(document).ready(function($) { $('.dd-twitter-867').remove();$('.DD_TWITTER_AJAX_867').attr('width','50');$('.DD_TWITTER_AJAX_867').attr('height','61');$('.DD_TWITTER_AJAX_867').attr('src','http://api.tweetmeme.com/button.js?url=VOTE_URL&#038;source=VOTE_SOURCE&#038;style=normal&#038;service=VOTE_SERVICE_NAME&#038;service_api=VOTE_SERVICE_API'); }); } function loadFBShare_867(){ jQuery(document).ready(function($) { $('.dd-fbshare-867').remove(); $.getScript('http://static.ak.fbcdn.net/connect.php/js/FB.Share'); }); } function loadFBShareMe_867(){ jQuery(document).ready(function($) { $('.dd-fbshareme-867').remove();$('.DD_FBSHAREME_AJAX_867').attr('width','53');$('.DD_FBSHAREME_AJAX_867').attr('height','69');$('.DD_FBSHAREME_AJAX_867').attr('src','http://widgets.fbshare.me/files/fbshare.php?url=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&#038;size=large'); }); } function [...]<br /><div><img src="http://shakaran.net/blog/wp-content/plugins/gd-star-rating/gfx.php?value=10.0" /></div><div>Rating: 10.0/<strong>10</strong> (2 votes cast)</div><br />Entradas relacionadas:<ol><li><a href='http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/' rel='bookmark' title='Permanent Link: Apache ignora archivos .htaccess en Ubuntu'>Apache ignora archivos .htaccess en Ubuntu</a></li><li><a href='http://shakaran.net/blog/2010/08/solucionar-error-pdo_sqlite-so-undefined-symbol-sqlite3_libversion-2/' rel='bookmark' title='Permanent Link: Solucionar error pdo_sqlite.so: undefined symbol: sqlite3_libversion'>Solucionar error pdo_sqlite.so: undefined symbol: sqlite3_libversion</a></li></ol>]]></description> <content:encoded><![CDATA[<div class="wpbuzzer_button" style="float: right"><a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="normal-button" data-url="http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/" data-imageurl=""></a><script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div><script type="text/javascript">jQuery(document).ready(function($){window.setTimeout('loadDigg_867()',5000);window.setTimeout('loadReddit_867()',5000);window.setTimeout('loadGBuzz_867()',5000);window.setTimeout('loadDzone_867()',5000);window.setTimeout('loadTwitter_867()',5000);window.setTimeout('loadFBShare_867()',5000);window.setTimeout('loadFBShareMe_867()',5000);window.setTimeout('loadFBLike_867()',5000);window.setTimeout('loadDelicious_867()',5000);$('.delicious-normal-img,.delicious-compact-img').hide();});</script><script type="text/javascript">/*<![CDATA[*/function loadDigg_867(){jQuery(document).ready(function($){$('.dd-digg-867').remove();$('.DD_DIGG_AJAX_867').attr('href','http://digg.com/submit?url=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&amp;title=Apache+checker%3A+un+script+comprobador+de+Apache+en+bash');$.getScript('http://widgets.digg.com/buttons.js');});}function loadReddit_867(){jQuery(document).ready(function($){$('.dd-reddit-867').remove();$('.DD_REDDIT_AJAX_867').attr('width','51');$('.DD_REDDIT_AJAX_867').attr('height','69');$('.DD_REDDIT_AJAX_867').attr('src','http://www.reddit.com/static/button/button2.html?width=51&amp;url=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&amp;title=Apache+checker%3A+un+script+comprobador+de+Apache+en+bash&amp;newwindow=1');});}function loadGBuzz_867(){jQuery(document).ready(function($){$('.dd-gbuzz-867').remove();$.getScript('http://www.google.com/buzz/api/button.js');});}function loadDzone_867(){jQuery(document).ready(function($){$('.dd-dzone-867').remove();$('.DD_DZONE_AJAX_867').attr('width','52');$('.DD_DZONE_AJAX_867').attr('height','68');$('.DD_DZONE_AJAX_867').attr('src','http://widgets.dzone.com/links/widgets/zoneit.html?url=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&title=Apache+checker%3A+un+script+comprobador+de+Apache+en+bash&t=1');});}function loadTwitter_867(){jQuery(document).ready(function($){$('.dd-twitter-867').remove();$('.DD_TWITTER_AJAX_867').attr('width','50');$('.DD_TWITTER_AJAX_867').attr('height','61');$('.DD_TWITTER_AJAX_867').attr('src','http://api.tweetmeme.com/button.js?url=VOTE_URL&source=VOTE_SOURCE&style=normal&service=VOTE_SERVICE_NAME&service_api=VOTE_SERVICE_API');});}function loadFBShare_867(){jQuery(document).ready(function($){$('.dd-fbshare-867').remove();$.getScript('http://static.ak.fbcdn.net/connect.php/js/FB.Share');});}function loadFBShareMe_867(){jQuery(document).ready(function($){$('.dd-fbshareme-867').remove();$('.DD_FBSHAREME_AJAX_867').attr('width','53');$('.DD_FBSHAREME_AJAX_867').attr('height','69');$('.DD_FBSHAREME_AJAX_867').attr('src','http://widgets.fbshare.me/files/fbshare.php?url=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&size=large');});}function loadFBLike_867(){jQuery(document).ready(function($){$('.dd-fblike-867').remove();$('.DD_FBLIKE_AJAX_867').attr('width','450');$('.DD_FBLIKE_AJAX_867').attr('height','25');$('.DD_FBLIKE_AJAX_867').attr('src','http://www.facebook.com/plugins/like.php?href=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&amp;show_faces=false');});}function loadDelicious_867(){jQuery(document).ready(function($){$('.dd-delicious-867').remove();$('.delicious-normal-img,.delicious-compact-img').show();$.getJSON('http://feeds.delicious.com/v2/json/urlinfo/data?url=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/&amp;callback=?',function(data){var msg='';var count=0;if(data.length>0){count=data[0].total_posts;if(count==0){msg='Save';}else if(count==1){msg='1 save';}else{msg=count+' saves'}}else{msg='Save';}$('#DD_DELICIOUS_AJAX_867').text(msg);});});}/*]]>*/</script><div class="mceTemp mceIEcenter"><dl id="attachment_868" class="wp-caption aligncenter" style="width: 210px;margin:auto"><dt class="wp-caption-dt"><a href="http://shakaran.net.nyud.net/blog/wp-content/uploads/2010/02/apache-checker-logo.png"><img class="size-full wp-image-868" title="apache-checker-logo" src="http://shakaran.net.nyud.net/blog/wp-content/uploads/2010/02/apache-checker-logo.png" alt="apache-checker-logo" width="200" height="150" /></a></dt></dl></div><p>La<strong> gestión de servidores </strong>es un tema apasionante, pero exige mucho control sobre los sistemas a administrar. Personalmente en la empresa de hospedaje que administro llamada <a title="Quijost: servicio de hospedaje manchego" href="http://www.quijost.com" target="_blank">Quijost</a> necesitamos un <strong>riguroso control</strong> de los servicios para detectar cualquier mal funcionamiento o sobrecarga y obtener una solución de forma casi inmediata.</p><p>Uno de los principales problemas es la gestión de <strong>recursos de memoria</strong> en servidores con Apache y que por lo general suelen usar <a title="Cpanel" href="http://www.cpanel.net" target="_blank">Cpanel</a>.</p><p>Cpanel es un buen sistema de <strong>panel de administración</strong>, pero es muy exigente en recursos y a veces consume demasiada memoria llegando a colapsar sus propios procesos e invocando a daemons encargados de reiniciarlo.</p><p>El problema viene cuando Cpanel además provoca un <strong>mal funcionamiento</strong> de Apache o bien tenemos un exceso de consumo en servidor por algún efecto <a title="Efecto barrapunto" href="http://es.wikipedia.org/wiki/Barrapunto#Efecto_Barrapunto" target="_blank">Barrapunto</a>, <a title="Efecto menéame" href="http://es.wikipedia.org/wiki/Men%C3%A9ame#Efecto_Men.C3.A9ame" target="_blank">Menéame</a>, <a title="Efecto Digg o Slashdot" href="http://en.wikipedia.org/wiki/Slashdot_effect">Digg</a>, etc.</p><p>En esos casos Apache atenderá todas las peticiones posibles dada la memoria de la que dispongamos. Normalmente y como referencia unas <strong>200 peticiones por segundo</strong> con 1 GB de RAM (aunque tened presente que esta cifra puede variar bastante según configuraciones y hardware).</p><p>Cuando el servidor se quede sin memoria, las <strong>peticiones no se atenderán</strong> incluso otros servicios como emails (exim) pueden colapsar. Para evitar estas situaciones, he desarrollado un script que se encarga de <strong>comprobar</strong> periodicamente mediante una tarea cron, los recursos del sistema, la disponibilidad de Apache y la memoria disponible en el servidor, para actuar en consecuencia y reiniciar si es necesario, además de notificar a los administradores y mantener un log.</p><p>El script llamado <em>Apache Checker</em> está escrito en bash y tiene el siguiente aspecto:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=867&amp;download=apache_checker.sh">apache_checker.sh</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8675"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
</pre></td><td class="code" id="p867code5"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Apache Checker: a script for check resources on apache servers</span>
<span style="color: #666666; font-style: italic;"># Author: Shakaran (http://www.shakaran.net)</span>
<span style="color: #666666; font-style: italic;"># License: GPLv3</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># For CentOs servers require bc and mutt:</span>
<span style="color: #666666; font-style: italic;"># yum install bc</span>
<span style="color: #666666; font-style: italic;"># yum install mutt</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Uses:</span>
<span style="color: #666666; font-style: italic;"># Add this script to a cron's task with crontab -e</span>
<span style="color: #666666; font-style: italic;"># For example: For run the checking every minute</span>
<span style="color: #666666; font-style: italic;"># */1 * * * * /apache_check.sh &amp;&gt; /dev/null </span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Exit immediately if a simple command exits with a non-zero status</span>
<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-e</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Number of current apache2 processes.</span>
<span style="color: #007800;">N_CURRENT</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(ps aux | grep apache2 | wc -l)</span>&quot;</span>
<span style="color: #007800;">N_MIN</span>=<span style="color: #ff0000;">&quot;1&quot;</span>
<span style="color: #007800;">DESTINY_EMAIL</span>=<span style="color: #ff0000;">&quot;your-server-admin-address@domain.com&quot;</span>
<span style="color: #007800;">USER</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">id</span> -un<span style="color: #000000; font-weight: bold;">`</span> <span style="color: #666666; font-style: italic;"># For example: root</span>
<span style="color: #007800;">HOST</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">hostname</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">USERHOST</span>=<span style="color: #007800;">$USER</span><span style="color: #000000; font-weight: bold;">@</span><span style="color: #007800;">$HOST</span>
&nbsp;
<span style="color: #007800;">THRESHOLD</span>=<span style="color: #000000;">90</span> <span style="color: #666666; font-style: italic;"># Max threshold for restart apache</span>
<span style="color: #007800;">TOTAL_MEMORY</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">free</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;Mem:&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $2}'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">REMAINING_MEMORY</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">free</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;Mem:&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $4}'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">CURRENT_MEMORY</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;(<span style="color: #007800;">$REMAINING_MEMORY</span>/<span style="color: #007800;">$TOTAL_MEMORY</span>)*100.0&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">bc</span> -l<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #007800;">MAX_NPROCESS_APACHE</span>=<span style="color: #000000;">5</span>
<span style="color: #007800;">NPROCESS_APACHE</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ps</span> fu <span style="color: #007800;">$USERNAME</span>  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'/processname/ { x++ } END{print x}'</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$N_CURRENT</span>&quot;</span> <span style="color: #660033;">-lt</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$N_MIN</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    apachectl restart
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: The Apache process is not working and it has been restarted.&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: The Apache process is not working and it has been restarted.&quot;</span> \
    <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache_restarter.log
    <span style="color: #007800;">SUBJECT</span>=<span style="color: #ff0000;">&quot;Script Apache checker: start&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: The Apache process is not working and it has been restarted.&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> mutt <span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$SUBJECT</span>&quot;</span> <span style="color: #007800;">$DESTINY_EMAIL</span>
<span style="color: #000000; font-weight: bold;">fi</span> 
&nbsp;
<span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-fea</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;/usr/sbin/apache2&quot;</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #007800;">$?</span> <span style="color: #660033;">-eq</span> <span style="color: #000000;">0</span> <span style="color: #000000; font-weight: bold;">then</span>
    apachectl start
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: Apache has stopped and it has been reactivated.&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: Apache has stopped and it has been reactivated.&quot;</span> \
    <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache_restarter.log
    <span style="color: #007800;">SUBJECT</span>=<span style="color: #ff0000;">&quot;Script Apache checker: restart&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: Apache has stopped and it has been reactivated.&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> mutt <span style="color: #007800;">$DESTINY_EMAIL</span>
<span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$SUBJECT</span>&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$CURRENT_MEMORY</span> <span style="color: #660033;">-gt</span> <span style="color: #007800;">$THRESHOLD</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
    apachectl restart
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: Restarted apache on <span style="color: #780078;">`date +'%Y-%m-%d %H:%M:%S'`</span>. RAM utilization at
<span style="color: #007800;">${CURRENT_MEMORY}</span>%&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: Restarted apache on <span style="color: #780078;">`date +'%Y-%m-%d %H:%M:%S'`</span>. RAM utilization at
<span style="color: #007800;">${CURRENT_MEMORY}</span>%&quot;</span> \
    <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache_restarter.log
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Restarted apache on <span style="color: #780078;">`date +'%Y-%m-%d %H:%M:%S'`</span>. RAM utilization at
<span style="color: #007800;">${CURRENT_MEMORY}</span>%&quot;</span> \
    <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache_restarter.log
    <span style="color: #007800;">SUBJECT</span>=<span style="color: #ff0000;">&quot;Script Apache checker: restart&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: Restarted apache on <span style="color: #780078;">`date +'%Y-%m-%d %H:%M:%S'`</span>. RAM utilization at
<span style="color: #007800;">${CURRENT_MEMORY}</span>%&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> mutt <span style="color: #007800;">$DESTINY_EMAIL</span> <span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$SUBJECT</span>&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ps</span> fu <span style="color: #007800;">$USERNAME</span>  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'/processname/ { x++ } END{print x}'</span><span style="color: #000000; font-weight: bold;">`&gt;</span>
<span style="color: #007800;">$MAX_NPROCESS_APACHE</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">then</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: max number of apache process = <span style="color: #007800;">${MAX_NPROCESS_APACHE}</span> <span style="color: #780078;">`date
+'%Y-%m-%d %H:%M:%S'`</span>. RAM utilization at <span style="color: #007800;">${CURRENT_MEMORY}</span>% &quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: max number of apache process = <span style="color: #007800;">${MAX_NPROCESS_APACHE}</span> <span style="color: #780078;">`date
+'%Y-%m-%d %H:%M:%S'`</span>. RAM utilization at <span style="color: #007800;">${CURRENT_MEMORY}</span>% &quot;</span> \
    <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache_restarter.log
    <span style="color: #007800;">SUBJECT</span>=<span style="color: #ff0000;">&quot;Script Apache checker: max number of apache process&quot;</span>
    <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$HOST</span>: max number of apache process = <span style="color: #007800;">${MAX_NPROCESS_APACHE}</span> <span style="color: #780078;">`date
+'%Y-%m-%d %H:%M:%S'`</span>. RAM utilization at <span style="color: #007800;">${CURRENT_MEMORY}</span>% &quot;</span> <span style="color: #000000; font-weight: bold;">|</span> mutt <span style="color: #007800;">$DESTINY_EMAIL</span>
<span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$SUBJECT</span>&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></td></tr></table></div><p>El script esta basado en bash y ha sido probado en <strong>servidores GNU/Linux CentOs 5.4</strong>, pero debería funcionar en cualquier distribución que soporte bash. Como únicos requisitos necesita tener instalados los programas mutt (para enviar correo) y bc (para calcular datos). En CentOs puedes instalarlos con:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=867&amp;download=instalar.txt">instalar.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8676"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p867code6"><pre class="shell" style="font-family:monospace;"># yum install bc mutt</pre></td></tr></table></div><p>Además para su instalación necesitas añadir <strong>una tarea cron</strong> que ejecute el script periodicamente, por ejemplo para cada minuto, abre tu editor de cron con:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=867&amp;download=editar.txt">editar.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8677"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p867code7"><pre class="text" style="font-family:monospace;"># crontab -e</pre></td></tr></table></div><p>Y suponiendo que pones el script en / escribe:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=867&amp;download=editar-cron.txt">editar-cron.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p8678"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p867code8"><pre class="text" style="font-family:monospace;">*/1 * * * * /apache_check.sh &amp;&gt; /dev/null</pre></td></tr></table></div><p><span style="text-decoration: underline;"><strong>Nota</strong></span>: se asume que el usuario que ejecuta el script tiene <strong>permisos de ejecución </strong>para Apache y programas bc y mutt que se utilizan (normalmente root), de lo contrario no funcionará correctamente.</p><h2><span style="color: #993300;">¿como funciona?</span></h2><p>El script necesita que configures una <strong>dirección de envío</strong> para los mails de notificación, que puedes cambiar en el valor de la variable DESTINY_EMAIL.</p><p>La primera comprobación que hace el script es para<strong> evitar ataques DDOS</strong> en los que se intentan que Apache haga muchos procesos hijos y sature el servidor (esto puede ser limitado en Apache) pero por si hubiese alguna manera de que el atacante lo incrementara o superase, el script reiniciará apache en caso de que haya muchos procesos y de esta manera se pueda liberar memoria. Para establecer el numero minimo y máximo, se pueden configurar las variables N_MIN y MAX_NPROCESS_APACHE respectivamente.</p><p>La segunda comprobación consiste en comprobar si <strong>apache esta funcionando</strong>, por si hubiese colapsado podamos volverlo a su ejecución normal.</p><p>La tercera comprobación establece un <strong>límite de consumo de memoria</strong> en el servidor, para que en tal caso (suponiendo que es Apache en que la consume) se reinicie apache y se liberen recursos. Por defecto este limite es el 90% de memoria del servidor y puede ser cambiado con la variable THRESHOLD.</p><p>De esta manera se puede conseguir tener un servidor un poco <strong>más optimizado</strong> al uso de memoria y tener constancia de cuando se producen picos debidos a Apache.</p><p>El script lo libero con <strong>licencia GPLv3</strong> para todos aquellos que lo necesiten y quieran hacer uso de él.</p><p>Puedes descargarlo comprimido aquí: <a class="downloadlink" href="http://shakaran.net/blog/downloads/apache_checker.sh.tar.gz" title="Versión1.0 descargado 37 veces" >Apache Checker (37)</a></p><p>Todas la mejoras, sugerencias, fallos y críticas son bien recibidas.</p><div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><div class='dd-digg-ajax-load dd-digg-867'></div><a class='DiggThisButton DD_DIGG_AJAX_867 DiggCompact'></a></div><div class='dd_button'><div class='dd-reddit-ajax-load dd-reddit-867'></div><iframe class='DD_REDDIT_AJAX_867' src='#' height='0' width='0' scrolling='no' frameborder='0'></iframe></div><div class='dd_button'><div class='dd-dzone-ajax-load dd-dzone-867'></div><iframe class='DD_DZONE_AJAX_867' src='#' height='0' width='0' scrolling='no' frameborder='0'></iframe></div><div class='dd_button'><div class='dd-fbshare-ajax-load dd-fbshare-867'></div><a class='DD_FBSHARE_AJAX_867' name='fb_share' type='button_count' share_url='http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/' href='http://www.facebook.com/sharer.php'></a></div><div class='dd_button'><div class='dd-fblike-ajax-load dd-fblike-867'></div><iframe class="DD_FBLIKE_AJAX_867" src='#' height='0' width='0' scrolling='no' frameborder='0' allowTransparency='true'></iframe></div><div class='dd_button'><div class='dd-delicious-ajax-load dd-delicious-867'></div><a href='http://delicious.com/save' onclick="window.open('http://delicious.com/save?v=5&amp;noui&amp;jump=close&amp;url='+encodeURIComponent('http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/')+'&amp;title='+encodeURIComponent('Apache+checker%3A+un+script+comprobador+de+Apache+en+bash'),'delicious', 'toolbar=no,width=550,height=550'); return false;"><div class='delicious-compact-img'><img src='http://shakaran.net/blog/wp-content/plugins/digg-digg/image/delicious-compact.png' alt='Delicious' /></div><span id='DD_DELICIOUS_AJAX_867'></span></a></div><div class='dd_button'><script src='http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/'></script></div></div></div><div style='clear:both'></div><br /><div><img src="http://shakaran.net/blog/wp-content/plugins/gd-star-rating/gfx.php?value=10.0" /></div><div>Rating: 10.0/<strong>10</strong> (2 votes cast)</div><br /><div class="sociable"><div class="sociable_tagline"> <strong>Comparte, descargalo en pdf, imprimelo o enviaselo a un amigo!</strong></div><ul><li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F&amp;partner=sociable" title="Print"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F&amp;title=Apache%20checker%3A%20un%20script%20comprobador%20de%20Apache%20en%20bash&amp;bodytext=%0D%0ALa%20gesti%C3%B3n%20de%20servidores%20es%20un%20tema%20apasionante%2C%20pero%20exige%20mucho%20control%20sobre%20los%20sistemas%20a%20administrar.%20Personalmente%20en%20la%20empresa%20de%20hospedaje%20que%20administro%20llamada%20Quijost%20necesitamos%20un%20riguroso%20control%20de%20los%20servicios%20para%20detectar%20cual" title="Digg"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F&amp;title=Apache%20checker%3A%20un%20script%20comprobador%20de%20Apache%20en%20bash&amp;notes=%0D%0ALa%20gesti%C3%B3n%20de%20servidores%20es%20un%20tema%20apasionante%2C%20pero%20exige%20mucho%20control%20sobre%20los%20sistemas%20a%20administrar.%20Personalmente%20en%20la%20empresa%20de%20hospedaje%20que%20administro%20llamada%20Quijost%20necesitamos%20un%20riguroso%20control%20de%20los%20servicios%20para%20detectar%20cual" title="del.icio.us"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F&amp;t=Apache%20checker%3A%20un%20script%20comprobador%20de%20Apache%20en%20bash" title="Facebook"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F&amp;title=Apache%20checker%3A%20un%20script%20comprobador%20de%20Apache%20en%20bash&amp;annotation=%0D%0ALa%20gesti%C3%B3n%20de%20servidores%20es%20un%20tema%20apasionante%2C%20pero%20exige%20mucho%20control%20sobre%20los%20sistemas%20a%20administrar.%20Personalmente%20en%20la%20empresa%20de%20hospedaje%20que%20administro%20llamada%20Quijost%20necesitamos%20un%20riguroso%20control%20de%20los%20servicios%20para%20detectar%20cual" title="Google Bookmarks"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://barrapunto.com/submit.pl?subj=Apache%20checker%3A%20un%20script%20comprobador%20de%20Apache%20en%20bash&amp;story=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F" title="BarraPunto"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/barrapunto.png" title="BarraPunto" alt="BarraPunto" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F" title="Bitacoras.com"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F" title="Meneame"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F&amp;partner=sociable" title="PDF"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://shakaran.net/blog/feed/" title="RSS"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F&amp;title=Apache%20checker%3A%20un%20script%20comprobador%20de%20Apache%20en%20bash" title="StumbleUpon"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li><li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fshakaran.net%2Fblog%2F2010%2F02%2Fapache-checker-un-script-comprobador-de-apache-en-bash%2F" title="Technorati"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li></ul></div><p>Entradas relacionadas:<ol><li><a href='http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/' rel='bookmark' title='Permanent Link: Apache ignora archivos .htaccess en Ubuntu'>Apache ignora archivos .htaccess en Ubuntu</a></li><li><a href='http://shakaran.net/blog/2010/08/solucionar-error-pdo_sqlite-so-undefined-symbol-sqlite3_libversion-2/' rel='bookmark' title='Permanent Link: Solucionar error pdo_sqlite.so: undefined symbol: sqlite3_libversion'>Solucionar error pdo_sqlite.so: undefined symbol: sqlite3_libversion</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Apache ignora archivos .htaccess en Ubuntu</title><link>http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/</link> <comments>http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/#comments</comments> <pubDate>Sat, 27 Jun 2009 20:34:51 +0000</pubDate> <dc:creator>shakaran</dc:creator> <category><![CDATA[Apache]]></category> <category><![CDATA[Open Source]]></category> <category><![CDATA[Ubuntu]]></category><guid isPermaLink="false">http://shakaran.net/blog/?p=455</guid> <description><![CDATA[jQuery(document).ready(function($) { window.setTimeout('loadDigg_455()',5000);window.setTimeout('loadReddit_455()',5000);window.setTimeout('loadGBuzz_455()',5000);window.setTimeout('loadDzone_455()',5000);window.setTimeout('loadTwitter_455()',5000);window.setTimeout('loadFBShare_455()',5000);window.setTimeout('loadFBShareMe_455()',5000);window.setTimeout('loadFBLike_455()',5000);window.setTimeout('loadDelicious_455()',5000);$('.delicious-normal-img,.delicious-compact-img').hide(); }); function loadDigg_455(){ jQuery(document).ready(function($) { $('.dd-digg-455').remove();$('.DD_DIGG_AJAX_455').attr('href','http://digg.com/submit?url=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&#38;title=Apache+ignora+archivos+.htaccess+en+Ubuntu');$.getScript('http://widgets.digg.com/buttons.js'); }); } function loadReddit_455(){ jQuery(document).ready(function($) { $('.dd-reddit-455').remove();$('.DD_REDDIT_AJAX_455').attr('width','51');$('.DD_REDDIT_AJAX_455').attr('height','69');$('.DD_REDDIT_AJAX_455').attr('src','http://www.reddit.com/static/button/button2.html?width=51&#38;url=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&#38;title=Apache+ignora+archivos+.htaccess+en+Ubuntu&#38;newwindow=1'); }); } function loadGBuzz_455(){ jQuery(document).ready(function($) { $('.dd-gbuzz-455').remove();$.getScript('http://www.google.com/buzz/api/button.js'); }); } function loadDzone_455(){ jQuery(document).ready(function($) { $('.dd-dzone-455').remove();$('.DD_DZONE_AJAX_455').attr('width','52');$('.DD_DZONE_AJAX_455').attr('height','68');$('.DD_DZONE_AJAX_455').attr('src','http://widgets.dzone.com/links/widgets/zoneit.html?url=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&#038;title=Apache+ignora+archivos+.htaccess+en+Ubuntu&#038;t=1'); }); } function loadTwitter_455(){ jQuery(document).ready(function($) { $('.dd-twitter-455').remove();$('.DD_TWITTER_AJAX_455').attr('width','50');$('.DD_TWITTER_AJAX_455').attr('height','61');$('.DD_TWITTER_AJAX_455').attr('src','http://api.tweetmeme.com/button.js?url=VOTE_URL&#038;source=VOTE_SOURCE&#038;style=normal&#038;service=VOTE_SERVICE_NAME&#038;service_api=VOTE_SERVICE_API'); }); } function loadFBShare_455(){ jQuery(document).ready(function($) { $('.dd-fbshare-455').remove(); $.getScript('http://static.ak.fbcdn.net/connect.php/js/FB.Share'); }); } function loadFBShareMe_455(){ jQuery(document).ready(function($) { $('.dd-fbshareme-455').remove();$('.DD_FBSHAREME_AJAX_455').attr('width','53');$('.DD_FBSHAREME_AJAX_455').attr('height','69');$('.DD_FBSHAREME_AJAX_455').attr('src','http://widgets.fbshare.me/files/fbshare.php?url=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&#038;size=large'); }); } function [...]<br /><div><img src="http://shakaran.net/blog/wp-content/plugins/gd-star-rating/gfx.php?value=2.0" /></div><div>Rating: 2.0/<strong>10</strong> (1 vote cast)</div><br />Entradas relacionadas:<ol><li><a href='http://shakaran.net/blog/2009/06/habilitar-un-dominio-local-en-ubuntu/' rel='bookmark' title='Permanent Link: Habilitar un dominio local en Ubuntu'>Habilitar un dominio local en Ubuntu</a></li><li><a href='http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/' rel='bookmark' title='Permanent Link: Apache checker: un script comprobador de Apache en bash'>Apache checker: un script comprobador de Apache en bash</a></li><li><a href='http://shakaran.net/blog/2008/07/cumplir-estandar-w3c-con-target-blank-utilizando-mootools/' rel='bookmark' title='Permanent Link: Cumplir estandar W3C con target=&#8221;_blank&#8221; utilizando Mootools'>Cumplir estandar W3C con target=&#8221;_blank&#8221; utilizando Mootools</a></li></ol>]]></description> <content:encoded><![CDATA[<div class="wpbuzzer_button" style="float: right"><a title="Post on Google Buzz" class="google-buzz-button" href="http://www.google.com/buzz/post" data-button-style="normal-button" data-url="http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/" data-imageurl=""></a><script type="text/javascript" src="http://www.google.com/buzz/api/button.js"></script></div><script type="text/javascript">jQuery(document).ready(function($){window.setTimeout('loadDigg_455()',5000);window.setTimeout('loadReddit_455()',5000);window.setTimeout('loadGBuzz_455()',5000);window.setTimeout('loadDzone_455()',5000);window.setTimeout('loadTwitter_455()',5000);window.setTimeout('loadFBShare_455()',5000);window.setTimeout('loadFBShareMe_455()',5000);window.setTimeout('loadFBLike_455()',5000);window.setTimeout('loadDelicious_455()',5000);$('.delicious-normal-img,.delicious-compact-img').hide();});</script><script type="text/javascript">/*<![CDATA[*/function loadDigg_455(){jQuery(document).ready(function($){$('.dd-digg-455').remove();$('.DD_DIGG_AJAX_455').attr('href','http://digg.com/submit?url=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&amp;title=Apache+ignora+archivos+.htaccess+en+Ubuntu');$.getScript('http://widgets.digg.com/buttons.js');});}function loadReddit_455(){jQuery(document).ready(function($){$('.dd-reddit-455').remove();$('.DD_REDDIT_AJAX_455').attr('width','51');$('.DD_REDDIT_AJAX_455').attr('height','69');$('.DD_REDDIT_AJAX_455').attr('src','http://www.reddit.com/static/button/button2.html?width=51&amp;url=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&amp;title=Apache+ignora+archivos+.htaccess+en+Ubuntu&amp;newwindow=1');});}function loadGBuzz_455(){jQuery(document).ready(function($){$('.dd-gbuzz-455').remove();$.getScript('http://www.google.com/buzz/api/button.js');});}function loadDzone_455(){jQuery(document).ready(function($){$('.dd-dzone-455').remove();$('.DD_DZONE_AJAX_455').attr('width','52');$('.DD_DZONE_AJAX_455').attr('height','68');$('.DD_DZONE_AJAX_455').attr('src','http://widgets.dzone.com/links/widgets/zoneit.html?url=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&title=Apache+ignora+archivos+.htaccess+en+Ubuntu&t=1');});}function loadTwitter_455(){jQuery(document).ready(function($){$('.dd-twitter-455').remove();$('.DD_TWITTER_AJAX_455').attr('width','50');$('.DD_TWITTER_AJAX_455').attr('height','61');$('.DD_TWITTER_AJAX_455').attr('src','http://api.tweetmeme.com/button.js?url=VOTE_URL&source=VOTE_SOURCE&style=normal&service=VOTE_SERVICE_NAME&service_api=VOTE_SERVICE_API');});}function loadFBShare_455(){jQuery(document).ready(function($){$('.dd-fbshare-455').remove();$.getScript('http://static.ak.fbcdn.net/connect.php/js/FB.Share');});}function loadFBShareMe_455(){jQuery(document).ready(function($){$('.dd-fbshareme-455').remove();$('.DD_FBSHAREME_AJAX_455').attr('width','53');$('.DD_FBSHAREME_AJAX_455').attr('height','69');$('.DD_FBSHAREME_AJAX_455').attr('src','http://widgets.fbshare.me/files/fbshare.php?url=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&size=large');});}function loadFBLike_455(){jQuery(document).ready(function($){$('.dd-fblike-455').remove();$('.DD_FBLIKE_AJAX_455').attr('width','450');$('.DD_FBLIKE_AJAX_455').attr('height','25');$('.DD_FBLIKE_AJAX_455').attr('src','http://www.facebook.com/plugins/like.php?href=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&amp;show_faces=false');});}function loadDelicious_455(){jQuery(document).ready(function($){$('.dd-delicious-455').remove();$('.delicious-normal-img,.delicious-compact-img').show();$.getJSON('http://feeds.delicious.com/v2/json/urlinfo/data?url=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/&amp;callback=?',function(data){var msg='';var count=0;if(data.length>0){count=data[0].total_posts;if(count==0){msg='Save';}else if(count==1){msg='1 save';}else{msg=count+' saves'}}else{msg='Save';}$('#DD_DELICIOUS_AJAX_455').text(msg);});});}/*]]>*/</script><p>Si os gusta el<strong> desarrollo web</strong> y usáis Ubuntu, lo más normal es que tengáis un <strong>servidor local</strong> que ejecute Apache para realizar vuestras webs y ver los resultados en local sin necesidad de tener conexión a Internet o usar un hosting.</p><p>Suele ser común utilizar archivos <strong>.htaccess</strong> para definir páginas de error 404, habilitar compresión GZip, etc.</p><p>Pero en Ubuntu, la instalación por defecto <strong>ignorará todas las directivas</strong> que se encuentren en archivos .htacces, porque generalmente <strong>no está recomendado</strong> utilizarlos si no eres un proveedor de hosting y de ahí que no se active por defecto. Pero que no cunda el pánico, esto tiene fácil solución.</p><p>Lo único que necesitamos es <strong>modificar una directiva</strong> de Apache en un archivo de configuración.</p><p>Por tanto abrimos el archivo <tt>/etc/apache2/sites-available/default </tt>con un editor de texto (Gedit o Geany por ejemplo):</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=455&amp;download=editar.txt">editar.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45514"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p455code14"><pre class="shell" style="font-family:monospace;">$ sudo gedit /etc/apache2/sites-available/default</pre></td></tr></table></div><p>Busca lo siguiente:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=455&amp;download=allow-override-none.txt">allow-override-none.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45515"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p455code15"><pre class="shell" style="font-family:monospace;">AllowOverride None</pre></td></tr></table></div><p>Y sustituyelo por:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=455&amp;download=allow-override-all.txt">allow-override-all.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45516"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p455code16"><pre class="shell" style="font-family:monospace;">AllowOverride All</pre></td></tr></table></div><p>Esto le dirá a Apache que permita que los archivos .htacces <strong>sobreescriban</strong> a declaraciones previas.</p><p>Ahora ya sólo queda <strong>recargar Apache</strong> para que tenga en cuenta la nueva configuración:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=455&amp;download=reload.txt">reload.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45517"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p455code17"><pre class="shell" style="font-family:monospace;">sudo /etc/init.d/apache2 reload</pre></td></tr></table></div><p>O bien, de manera más corta, pero reiniciando:</p><div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Descargar <a href="http://shakaran.net/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=455&amp;download=restart.txt">restart.txt</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p45518"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p455code18"><pre class="shell" style="font-family:monospace;">sudo apache2ctl restart</pre></td></tr></table></div><p style="text-align: right;">Más info: <a title="EnablingUseOfApacheHtaccessFiles" href="https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles" target="_blank">EnablingUseOfApacheHtaccessFiles</a></p><div class='dd_post_share'><div class='dd_buttons'><div class='dd_button'><div class='dd-digg-ajax-load dd-digg-455'></div><a class='DiggThisButton DD_DIGG_AJAX_455 DiggCompact'></a></div><div class='dd_button'><div class='dd-reddit-ajax-load dd-reddit-455'></div><iframe class='DD_REDDIT_AJAX_455' src='#' height='0' width='0' scrolling='no' frameborder='0'></iframe></div><div class='dd_button'><div class='dd-dzone-ajax-load dd-dzone-455'></div><iframe class='DD_DZONE_AJAX_455' src='#' height='0' width='0' scrolling='no' frameborder='0'></iframe></div><div class='dd_button'><div class='dd-fbshare-ajax-load dd-fbshare-455'></div><a class='DD_FBSHARE_AJAX_455' name='fb_share' type='button_count' share_url='http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/' href='http://www.facebook.com/sharer.php'></a></div><div class='dd_button'><div class='dd-fblike-ajax-load dd-fblike-455'></div><iframe class="DD_FBLIKE_AJAX_455" src='#' height='0' width='0' scrolling='no' frameborder='0' allowTransparency='true'></iframe></div><div class='dd_button'><div class='dd-delicious-ajax-load dd-delicious-455'></div><a href='http://delicious.com/save' onclick="window.open('http://delicious.com/save?v=5&amp;noui&amp;jump=close&amp;url='+encodeURIComponent('http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/')+'&amp;title='+encodeURIComponent('Apache+ignora+archivos+.htaccess+en+Ubuntu'),'delicious', 'toolbar=no,width=550,height=550'); return false;"><div class='delicious-compact-img'><img src='http://shakaran.net/blog/wp-content/plugins/digg-digg/image/delicious-compact.png' alt='Delicious' /></div><span id='DD_DELICIOUS_AJAX_455'></span></a></div><div class='dd_button'><script src='http://www.stumbleupon.com/hostedbadge.php?s=1&amp;r=http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/'></script></div></div></div><div style='clear:both'></div><br /><div><img src="http://shakaran.net/blog/wp-content/plugins/gd-star-rating/gfx.php?value=2.0" /></div><div>Rating: 2.0/<strong>10</strong> (1 vote cast)</div><br /><div class="sociable"><div class="sociable_tagline"> <strong>Comparte, descargalo en pdf, imprimelo o enviaselo a un amigo!</strong></div><ul><li class="sociablefirst"><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F&amp;partner=sociable" title="Print"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F&amp;title=Apache%20ignora%20archivos%20.htaccess%20en%20Ubuntu&amp;bodytext=Si%20os%20gusta%20el%20desarrollo%20web%20y%20us%C3%A1is%20Ubuntu%2C%20lo%20m%C3%A1s%20normal%20es%20que%20teng%C3%A1is%20un%20servidor%20local%20que%20ejecute%20Apache%20para%20realizar%20vuestras%20webs%20y%20ver%20los%20resultados%20en%20local%20sin%20necesidad%20de%20tener%20conexi%C3%B3n%20a%20Internet%20o%20usar%20un%20hosting.%0D%0A%0D%0ASuele%20ser%20c" title="Digg"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F&amp;title=Apache%20ignora%20archivos%20.htaccess%20en%20Ubuntu&amp;notes=Si%20os%20gusta%20el%20desarrollo%20web%20y%20us%C3%A1is%20Ubuntu%2C%20lo%20m%C3%A1s%20normal%20es%20que%20teng%C3%A1is%20un%20servidor%20local%20que%20ejecute%20Apache%20para%20realizar%20vuestras%20webs%20y%20ver%20los%20resultados%20en%20local%20sin%20necesidad%20de%20tener%20conexi%C3%B3n%20a%20Internet%20o%20usar%20un%20hosting.%0D%0A%0D%0ASuele%20ser%20c" title="del.icio.us"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F&amp;t=Apache%20ignora%20archivos%20.htaccess%20en%20Ubuntu" title="Facebook"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F&amp;title=Apache%20ignora%20archivos%20.htaccess%20en%20Ubuntu&amp;annotation=Si%20os%20gusta%20el%20desarrollo%20web%20y%20us%C3%A1is%20Ubuntu%2C%20lo%20m%C3%A1s%20normal%20es%20que%20teng%C3%A1is%20un%20servidor%20local%20que%20ejecute%20Apache%20para%20realizar%20vuestras%20webs%20y%20ver%20los%20resultados%20en%20local%20sin%20necesidad%20de%20tener%20conexi%C3%B3n%20a%20Internet%20o%20usar%20un%20hosting.%0D%0A%0D%0ASuele%20ser%20c" title="Google Bookmarks"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://barrapunto.com/submit.pl?subj=Apache%20ignora%20archivos%20.htaccess%20en%20Ubuntu&amp;story=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F" title="BarraPunto"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/barrapunto.png" title="BarraPunto" alt="BarraPunto" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F" title="Bitacoras.com"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F" title="Meneame"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://www.printfriendly.com/print?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F&amp;partner=sociable" title="PDF"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://shakaran.net/blog/feed/" title="RSS"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></li><li><a rel="nofollow"  target="_blank" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F&amp;title=Apache%20ignora%20archivos%20.htaccess%20en%20Ubuntu" title="StumbleUpon"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li><li class="sociablelast"><a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fshakaran.net%2Fblog%2F2009%2F06%2Fapache-ignora-archivos-htaccess-en-ubuntu%2F" title="Technorati"><img src="http://shakaran.net/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li></ul></div><p>Entradas relacionadas:<ol><li><a href='http://shakaran.net/blog/2009/06/habilitar-un-dominio-local-en-ubuntu/' rel='bookmark' title='Permanent Link: Habilitar un dominio local en Ubuntu'>Habilitar un dominio local en Ubuntu</a></li><li><a href='http://shakaran.net/blog/2010/02/apache-checker-un-script-comprobador-de-apache-en-bash/' rel='bookmark' title='Permanent Link: Apache checker: un script comprobador de Apache en bash'>Apache checker: un script comprobador de Apache en bash</a></li><li><a href='http://shakaran.net/blog/2008/07/cumplir-estandar-w3c-con-target-blank-utilizando-mootools/' rel='bookmark' title='Permanent Link: Cumplir estandar W3C con target=&#8221;_blank&#8221; utilizando Mootools'>Cumplir estandar W3C con target=&#8221;_blank&#8221; utilizando Mootools</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://shakaran.net/blog/2009/06/apache-ignora-archivos-htaccess-en-ubuntu/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 45/159 queries in 8.526 seconds using disk
Object Caching 3234/3267 objects using disk
Content Delivery Network via shakaran.net.nyud.net

Served from: shakaran.net @ 2010-09-03 11:15:00 -->