Htop

Aperçu de htop

htop est un petit outils qui permet d’avoir une vue globale sur l’état du serveur. C’est une version plus jolie de top donnant accès à l’utilisation des processeurs et de la mémoire. On visualise également tous les processus actif sur le serveur. Il est possible de les classer en fonction de différents critères et aussi de les tuer.

Pour installer htop :

# apt-get install htop

Et ensuite pour le lancer :

# htop

htop est complètement configurable en tapant sur « F2 » (SETUP).

Il y aurait beaucoup de choses à dire sur htop. Une chose peut-être plus utile : la signification de Load average. Le premier nombre indique la moyenne de la charge sur une minute, le second sur cinq minutes et le troisième sur quinze minutes. En gros il faut s’inquiéter si le Load average est supérieur au nombre de processeurs.

Sources

Load averge – Wikipedia

Supprimer les services inutiles

Utilisation de sysv-rc-conf

Lorsqu’on installe une Debian, il y a des certains services donc nous n’avons pas besoin. J’ai pour le moment supprimé nfs, portmap et bind. Je n’ai pas besoin de bind car j’utilise les DNS de mon registrar.

D’abord on stoppe les démons correspondants :

# /etc/init.d/portmap stop
# /etc/init.d/nfs-common stop
# /etc/init.d/bind9 stop

Puis ensuite on empêche que ces services soient relancés au démarrage.

# update-rc.d -f portmap remove
# update-rc.d -f nfs-common remove
# update-rc.d -f bind9 remove

Pour aller plus loin, il existe deux utilitaires « graphiques » permettant de gérer les services lancés au démarrage : rcconf et sysv-rc-conf.

Sources

Theos.in

Minifier le CSS et le JS

Aperçu de CleanCss.com

Minifier son code CSS ou Javascript permet d’alléger le poids des fichiers envoyés par le serveur, et donc d’avoir une page qui se charge plus rapidement. J’ai une préférence pour les minifieurs peu intrusifs, c’est-à-dire qui enlève les espaces, les commentaires et font des modifications basiques. Cela évite d’avoir des mauvaises surprises, mais bien sur le gain n’est que de l’ordre de 25%.

Il est possible d’utiliser en local ou sur le serveur un programme comme YUI Compressor pour faire cela. Mais je me suis limité à une minification en ligne avec ces deux sites :

À chaque fois que je modifie un fichier js ou css, je le fais passer par l’un de ces outils avant de l’envoyer sur le serveur en production.

PS : en cas de perte du fichier non-compressé, il est possible de faire le processus inverse avec le compresseur CSS. Et pour le js, il est possible d’utiliser un service de « beautification » comme par exemple jsbeautifier.org.

Installer Awstat sur Debian squeeze

Traffic horaire avec Awstats

Awstats est un logiciel qui génère des statistiques web à partir des logs du serveur. Contrairement à un analyseur basé sur JavaScript (comme Google Analytics ou Xiti) Awstats ne rate aucun visiteur, il donne des informations exhaustives. Contrairement à un analyseur php (comme phpMyVisit)  il n’est pas une charge supplémentaire pour votre serveur puisque vous le faites travailler quand vous voulez et de manière très brève (moins de 30 secondes par jour pour un site raisonnable).

De plus Awstats donne des informations plus orientées serveur (hits, types de fichiers, bande passante, erreurs 404…) il est donc très utile pour un administrateur.

Bien sur il est toujours utile d’avoir simultanément un analyseur Javascript pour avoir des informations plus élaborées mais le fait d’avoir son analyseur en local est tout de même rassurant.

Nous allons donc installer Awstats sur une Debian Squeeze. Nous supposons que le domaine qui nous intéresse est domaine.tld et que notre site est situé dans le répertoire /var/www/domaine.tld/.

On suppose également que vos fichiers log sont dans le répertoire /var/log/apache2/ et qu’ils sont sous la forme domaine.access.log avec le format combined.

Installation

Avant toute chose, nous allons créer un sous-dossier par lequel nous allons accéder aux statistique Awstats :

# mkdir /var/www/domaine.tld/stats/

Puis, il faut installer le paquet Awstats :

# apt-get install awstats

Ensuite, on crée un fichier de configuration à partir d’un modèle :

# cp /etc/awstats/awstats.conf /etc/awstats/awstats.domaine.tld.conf

On édite ce fichier de conf :

# vi /etc/awstats/awstats.domaine.tld.conf

On y change les lignes suivantes (les trouver dans le fichier) :

LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/apache2/domaine.access.log.1 /var/log/apache2/domaine.access.log |"
LogFormat=1
SiteDomain="domaine.tld"
HostAliases="localhost 127.0.0.1 www.domaine.tld domaine.tld"
DNSLookup=0
DirIcons="awstats-icon"

Ici, Awstats va analyser le fichier de log courant ainsi que le précédent. Ça double le temps d’analyse, mais ça permet d’éviter de perdre des lignes de log au moment de la rotation. c’est pas très fin, mais c’est simple et infaillible.
On décommente également les lignes suivantes (vers la fin du fichier) :

LoadPlugin="decodeutfkeys"
LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"

Le premier plugin permet de gérer l’UTF-8 et le deuxième permet de connaître le pays d’origine de vos visiteurs.
On fait un lien pour avoir les images d’Awstats :

# ln -s /usr/share/awstats/icon/ /var/www/domaine.tld/stats/awstats-icon

On installe le module perl geo-ip et aussi celui pour décoder l’utf-8 :

# apt-get install libgeo-ip-perl liburi-perl

On récupère la base de données Geo-ip :

# cd /usr/share/GeoIP
# wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
# gunzip -f GeoIP.dat.gz

Voilà, Awstats est près à fonctionner, il ne reste plus qu’à savoir s’en servir.

Utilisation

Pour utiliser Awstats, il faut passer par deux étapes :

  1. Mettre à jour la base d’Awstats à partir des fichiers de Log.
  2. Générer les pages HTML pour visualiser les stats.

Première grosse mise à jour (à ne faire qu’une fois, ça peut prendre plusieurs minutes) :

# perl /usr/lib/cgi-bin/awstats.pl -config=domaine.tld -LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/log/apache2/domaine.access.log* |" -update

Pour les mises à jour quotidiennes :

# perl /usr/lib/cgi-bin/awstats.pl -config=domaine.tld -update

Pour construire les pages :

# perl /usr/share/awstats/tools/awstats_buildstaticpages.pl -config=domaine.tld -lang=fr -awstatsprog=/usr/lib/cgi-bin/awstats.pl -dir=/var/www/domaine.tld/stats/

Voilà, maintenant vous avez vos stats qui vous attendent à l’adresse suivante : http://domaine.tld/stats/awstats.domaine.tld.html

Pour finir, on automatise tout ça en créant une tâche cron qui fait ça toutes les nuits.

Automatisation

On crée un fichier update-awstats.sh pour regrouper les deux commandes de mise à jour :

# vi /root/script/update-awstats.sh

(Si vous n’avez pas de répertoire script, créez-le)
Dans ce fichier on met les deux commandes suivantes :

perl /usr/lib/cgi-bin/awstats.pl -config=domaine.tld -update
perl /usr/share/awstats/tools/awstats_buildstaticpages.pl -config=domaine.tld -lang=fr -awstatsprog=/usr/lib/cgi-bin/awstats.pl -dir=/var/www/domaine.tld/stats/

On rend le fichier exécutable :

# chmod +x /root/script/update-awstats.sh

Et enfin on crée une tâche cron pour exécuter cette commande toutes les nuits :

# crontab -e

Et dans le fichier rentrer les lignes suivantes :

# Awstats : tous les jours à 5h00
00 5 * * * /root/script/update-awstats.sh

Normalement vous aurez maintenant toujours des stats à jour.