Apache-status, hvad er det og hvordan virker det?

Apachestatus er et sødt lille værktøj der kan vise dig, realtime, hvad der sker i maven på din Apache, det er det mest detaljerede værktøj primært fordi det ligger som en del af Apache og kan derfor vise hvilke tråde der laver hvad, det er meget rart når man fejlfinder spidsbelastede servere.

Værktøjet virker faktisk out of the box på nyinstallerede Debian maskiner, typisk går det dog ret hurtigt til i andre konfigurationer primært fordi det konflikter med både VirtualHosts og mod_rewrite, hvilket nok bruges på 80% af alle installationer i verden.

For at omgå virtualhosts, skal du tage din default-virtualhosts (den som vises når du indtaster din servers ip i browseren) og indsætte flg. stump kode: (udskift v.z.y.x med din egen ip adresse)

<Location /server-status>
     SetHandler server-status
     Order deny,allow
     Allow from 127.0.0.1 ::1 v.x.y.z
 #    Allow from 192.0.2.0/24
 </Location>
Resultatet kan se ud som flg:
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName lab1.dk
        ServerAlias *.lab1.mikjaer.com
        DocumentRoot /var/www
 
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
 
        <Location /server-status>
                SetHandler server-status
                Order deny,allow
                Allow fro 127.0.0.1 ::1 v.x.y.z
        </Location>
 
</VirtualHost>

Genstart apache:

root@lab1:~# /etc/init.d/apache2 reload
Reloading web server config: apache2.

Og tjek http://lab1.mikjaer.com/server-status i en browser, hvis ikke du får noget resultat skyldtes det sikkert mod_rewrite, f.eks. er WordPress kendt for at hijacke /server-status, det kan fixes ved at tilføje flg. linie 5, i WordPress’ .htaccess fil.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Hvis du løbende ønsker at blive opdateret på Apache-status kan du åbne flg. url i din browser: http://lab1.mikjaer.com/server-status?refresh=1 så vil den automatisk reloade hvert sekund, alternativt kan du også køre flg. kommando:

root@lab1:~# watch -n 1 apachectl status
Hvilket har samme effekt, blot i en consol.

Happy tuning ?

Dette indlæg blev udgivet i Apache, Knowledge Base, Old Base. Bogmærk permalinket.

Skriv et svar