Forum OVH  

Précédent   Forum OVH > Hébergements mutualisés > HOW-TO
S'inscrire FAQ Guides Recherche Messages du jour Marquer les forums comme lus

Réponse
 
Outils de la discussion
Vieux 19/08/2006, 01h08   #1
jalol
Membre
 
Date d'inscription: août 2006
Messages: 85
AWStats en multi domaine (offre PLAN)

Bonjour à tous !

Les offres PLAN permettent d'héberger plusieurs domaines, et donc plusieurs sites, sur votre hébergement principal.
Comme beaucoup, je me suis demandé si je pouvais avoir des statistiques distinctes pour chacun des sites que j'héberge, et si possible avec AWStats (très complet). Par défaut, les statistiques proposées par OVH ne concernent que le domaine principal et tout ce qui est hébergé dessus.

J'ai donc longuement épluché ce thread pour trouver une solution à mon problème : http://forum.ovh.com/showthread.php?...9&pagenumber=1.
Cependant, il a fallu que je compile toutes les informations données ici pour réussir à faire ce que je voulais, à savoir pouvoir consulter les statistiques de chacun de mes domaines hébergés sur mon compte OVH 90Plan (option multi-domaine).

Vous trouverez ci-dessous la marche à suivre :


D'abord, téléchargez et décompressez les fichiers de configuration que je vais utiliser dans ce HOWTO : ftp://ftp2.lolart.net/lolart/awstats_config.zip.
  • Dans votre dossier www, créez un dossier "stats" en chmod 755.
  • Dans ce dossier "stats", uploadez le fichier apachelogs.log contenu dans l'archive.

Téléchargez également la dernière distribution de AWStats (la 6.5 à l'heure de l'écriture de ce HOWTO). Décompressez-la. Vous obtiendrez 3 répertoires : docs, wwwroot et tools.
  • A l'intérieur du dossier wwwroot, dans le dossier cgi-bin, copiez le fichier awstats.www.votresite.com.conf (contenu dans l'archive awstats_config.zip).
  • Nommez le en fonction de votre domaine (ex. toto.com => awstats.www.toto.com.conf).
  • Ouvrez le avec un éditeur texte
  • Ligne 51 : renseignez le chemin absolu du fichier des logs (que l'on a déjà uploadé dans le répertoire www/stats/)
  • Ligne 153 : renseignez le domaine dont vous voulez visualiser les statistiques (ex. => SiteDomain="www.toto.com")
  • Ligne 168 : renseignez les alias que pourraient taper les visiteurs de ce site (ex. => HostAliases="www.toto.com toto.com sousdomaine.toto.com". Bien sûr, sousdomaine.toto.com n'est utile que si vous avez un sous-domaine nommé ainsi )
  • Ligne 258 : Mettez la valeur de AllowFullYearView à 3 si vous voulez consulter les stats annuelles
  • Pour chacun des domaines que vous hébergez, faites un fichier conf séparé nommé de la même manière (ex. awstats.www.toto2.com.conf et les lignes 153 et 168 correctement adaptées à chaque domaine)
  • Editez le fichier update_awstats.sh de l'archive awstats_config.zip, dans répertoire cgi-bin en y mettant le chemin absolu qui correspond à votre domaine, du type /home.5/login/. Pour le connaître, utilisez la fonction PHP realpath() ou connectez-vous en SSH et tapez la commande pwd . Ne remplacez que /home/login avec vos valeurs.
  • Uploadez la totalité du contenu du répertoire cgi-bin ainsi que le fichier update_awstats.sh de l'archive awstats_config.zip dans le dossier cgi-bin de votre serveur. Uploadez également le contenu du dossier wwwroot (sauf le dossier cgi-bin bien sûr ) dans votre répertoire www/stats
  • Sur votre serveur, dans le dossier cgi-bin (une fois que tout est uploadé), mettez des droits d'accès 755 pour tous les fichier *.pl et au fichier .sh

Voilà, à priori notre installation de AWStats est configurée. Nous allons maintenant récupérer les derniers logs via notre script PHP copie_log_local.php5
  • Ouvrez le fichier copie_log_local.php5 avec un éditeur texte et éditez les premières lignes avec votre domaine, votre nic-handle et votre mot de passe, tout ça entre les guillemets.
  • Sauvegardez ce fichier et uploadez-le dans votre dossier www/stats/
  • Une fois uploadé, ouvrez votre navigateur et exécutez-le à l'adresse http://www.votredomaine.com/stats/copie_log_local.php5 . Cela aura pour effet de copier tous les logs du jour précédent dans le fichier www/stats/apachelogs.log et de vous envoyer un mail sur postmaster@votredomaine.com pour vous dire si la copie des logs s'est bien déroulée

Citation:
EDIT 31-12-2006 (Merci à Shun pour sa contribution )
Vous pouvez également récupérer d'anciens logs grâce au script copie_log_local_full.php5. Mettez le script PHP copie_log_local_full.php5 ainsi que le fichier apachelogsfull.log dans le répertoire www/stats/ que nous avons créé et allez exécuter le script en mettant en paramètre le nombre de jours que vous voulez récupérer. Par ex. : http://www.votresite.tld/stats/copie...l.php5?jour=30 . => Ici on récupère les stats depuis 30 jours

NB : Si vous avez déjà compilé des statistiques pour un mois donné et qu'il vous manque celles du début du mois, effacer les fichiers awstats<mois><annee>*.txt dans cgi-bin avant de relancer update_awstats.sh

Reste maintenant à mettre à jour AWStats pour prendre en compte les logs que nous venons de mettre à jour
  • Dans le répertoire d'AWStats (sur votre disque dur), dans le dossier tools, vous avez un fichier awstats_updateall.pl. Uploadez-le dans votre répertoire cgi-bin et mettez le en chmod 755.
  • Vérifiez que vous avez bien uploadé le fichier update_awstats.sh en chmod 755 dans le répertoire cgi-bin
  • Rendez-vous sur l'interface web d'awstats en se rendant à l'adresse http://www.domaineprincipal.tld/cgi-...g=www.toto.com et en cliquant sur "Mettre à jour maintenant"
  • Vos statistiques sont prêtes à être utilisées ! Vous n'avez plus qu'à vous rendre à l'adresse http://www.votredomaineprincipal.tld...g=www.toto.com pour consulter les stats du site toto.com !
  • Pour consulter les stats de votre domaine principal, tapez simplement l'adresse http://www.votredomaineprincipal.tld/cgi-bin/awstats.pl . La procédure est la même pour mettre à jour.


Maintenant, pour que les statistiques soient en permanence à jour, il faut exécuter périodiquement les scripts http://www.votredomaine.tld/stats/copie_log_local.php5 et /home/votrelogin/cgi-bin/update_awstats.sh. Pour cela, vous pouvez soit demander à OVH de mettre ces scripts en CRON (par l'interface de contact de votre domaine (le plus simple), soit passer par Webcron et SSH (ce que je recommande si vous voulez avoir les mains libre, mais nécessite une manipulation par SSH en ligne de commande). Webcron est un service gratuit permettant d'exécuter périodiquement vous scripts. Ouvrez-vous un compte puis ajoutez vos tâches très simplement.


VOUS ETES DEBUTANTS, SSH VOUS FAIT PEUR

Demandez à OVH l'ajout de vos scripts à la crontab. Il est mieux de leur donner l'adresse absolue de vos scripts, à savoir sous le format /home/votrelogin/www/stats/copie_log_local.php5 et /home/votrelogin/cgi-bin/update_awstats.sh. Vérifiez d'abord si ces scripts fonctionnent via l'interface web pour le fichier php5 (http://www.domaineprincipal.tld/stat...log_local.php5) et via SSH pour le fichier .sh .
Précision supplémentaire, si vous souhaitez connaître l'adresse exacte de votre chemin absolue, connectez-vous en SSH avec Putty (Guide Putty) et tapez la commande pwd
Autre chose, demandez d'exécuter d'abord copie_log_local.php5 et ensuite update_awstats.sh, et ce à au moins une heure d'intervalle, et de préférence la nuit, par exemple à 2h00 et 3h00 du matin


UTILISATEURS AVANCES
Si vous préférez gérer vous-même la crontab, sachez qu'en mutualisé c'est possible, mais avec certaines restrictions qui vous empêchent de récupérer les logs avec le script PHP. Il faudra donc éditer la crontab pour lancer périodiquement le script .sh et utiliser webcron pour la récupération des logs.
Pour la suite, je vous suggère vivement de consulter le guide OVH sur la crontab.
Connectez-vous en SSH et tapez
Code PHP:
crontab -
pour éditer la crontab et y ajouter le script /home/votrelogin/cgi-bin/update_awstats.sh à l'heure que vous souhaitez (de préférence la nuit).
Exemple :
Code PHP:
05 3 * * * /home.10/votrelogin/cgi-bin/update_awstats.sh 
pour une exécution tous les jours à 03h05 du matin

N'oubliez pas d'exécuter régulièrement le script PHP de récupération des logs (http://www.domaineprincipal.tld/stat...log_local.php5) par Webcron, A UNE HEURE ANTERIEURE de l'heure d'exécution du script update_awstats.sh (une heure avant, c'est bien ).
Note : J'ai remarqué que l'exécution du script copie_log_local.php5 posait problème avant 2h00 du matin. Faites le donc vers 2h...


J'espère que ce HOWTO pourra aider... N'hésitez pas à faire des retours d'utilisation !

Dernière modification par jalol 17/03/2007 à 12h13
jalol est déconnecté   Réponse avec citation
Vieux 26/08/2006, 22h39   #2
Daniel60
Membre
 
Date d'inscription: mars 2004
Messages: 2 277
Tout d'abord un grand merci pour le travail accompli.

J'ai scrupuleusement suivi la procédure mais j'obtiens ce message d'erreur à l'exécution de update_awstats.php5 :

Error: Can't scan directory /etc/awstats.

Il faut signaler par ailleurs que ce même fichier doit aussi être édité avec le chemin absolu.

D'autre part je pense qu'il faudrait inclure un tri par heure, cf

Cordialement

Dernière modification par Daniel60 27/08/2006 à 09h50
Daniel60 est déconnecté   Réponse avec citation
Vieux 29/08/2006, 10h10   #3
jalol
Membre
 
Date d'inscription: août 2006
Messages: 85
Désolé d'avoir mis du temps à répondre .
Je viens de mettre à jour le HOWTO. En fait, il se trouve que les commandes Shell ne fonctionnent pas bien en appel depuis PHP. J'ai donc fait un script Shell (update_awstats.sh) à la place du script PHP.
jalol est déconnecté   Réponse avec citation
Vieux 30/08/2006, 09h59   #4
Daniel60
Membre
 
Date d'inscription: mars 2004
Messages: 2 277
Bonjour,
Cette procédure bash m'a l'air compliquée à mettre en oeuvre...
J'avais résolu le problème en modifiant $DIRCONFIG dans awstats_updateall.pl, en indiquant le répertoire '.' .
Mais si le job est indiqué 'running' , la mise à jour ne se fait pas

J'ai remarqué aussi qu'il fallait tranférer le répertoire /icon/ dans www/stats/ pour avoir une meilleure présentation.

Enfin je confirme qu'il faut bien trier les logs par heure sinon le résultat est tronqué.

Voici une version de copie_log_local.php modifiée, inpirée de Kerfred :


Code PHP:
#!/usr/local/bin/php#!/usr/local/bin/php
<?php
$domaine_ovh   
'mondomaine.com'// Votre domaine principal. Ne pas mettre les www
$nichandle_ovh 'monhandle'// Votre Nic-Handle OVH
$pass_ovh      'monpass'// Votre mot de passe OVH (celui qui vous permet d'aller à l'admin OVH
$log_local     'apachelogs.log'// Le nom du fichier local qui contiendra le dernier log à jour. C'est le nom de ce fichier qu'il faut renseigner dans le fichier conf de AWStats awstats.votresite.com.conf

$log strftime($domaine_ovh."-%d-%m-%Y.log",mktime(-1)); // Nom du log de la veille (mktime(-1) pour le jour précédent)
$replog strftime("logs-%m-%Y",mktime(-1)); // Répertoire du mois en cours
$reposl "osl";

// Les adresses pour récupérer les logs bruts à jour
// Ces adresses sont sous la forme [url]http://votrenichandle:votrepass@logs.ovh.net/votredomaine.com/repertoire/fichier_log[/url]
$urllog "http://".$nichandle_ovh.':'.$pass_ovh."@logs.ovh.net/".$domaine_ovh."/".$replog."/".$log.'.gz';
$urlosl "http://".$nichandle_ovh.':'.$pass_ovh."@logs.ovh.net/".$domaine_ovh."/".$reposl."/".$log;
$urlstats "./".$log_local// Le fichier log qui sera stocké en local sur le serveur

// Ouverture des fichiers logs distants. Les logs archivés sont au format gz
$fdistlog = @gzopen($urllog"r"); // Le log archivé
$fdistosl = @fopen($urlosl"r"); // Le log OSL

$error false;

if(
$fdistlog) { // Si on arrive à ouvrir le fichier archivé
  
$url  $fdistlog;
  
$type 'gz';
} elseif(
$fdistosl) { // Si on arrive à ouvrir le fichier OSL
  
$url  $fdistosl;
  
$type 'f';
} else 
$error true// On arrive à ouvrir aucun des 2 fichiers

if(!$error) { // S'il n'y a pas d'erreur, on parcourt le fichier
  
$i=0;
  
$tabligne=array();
  if (
$type == 'gz') { // On travaille sur l'archive, il faut donc utiliser gz
    
while (!gzeof($url)) {
      
$ligne = @gzgets($url2048);
      list(
$IP$host$user$date$other)=split(" "$ligne);
      
$tabligne[$date.':'.sprintf("%05d"$i)]=$ligne;
      
$i++;
    }
  } 
  elseif (
$type == 'f') { // On travaille sur le fichier OSL
    
while (!feof($url)) {
      
$ligne = @fgets($url,2048) ;
      list(
$IP$host$user$date$other)=split(" "$ligne);
      
$tabligne[$date.':'.sprintf("%05d"$i)]=$ligne;
      
$i++;
    }
  }
  
ksort($tabligne) ;
  
$floc = @fopen($log_local,"w+") ;
  foreach(
$tabligne as $ligne) {// On écrit la totalité du log dans le fichier log local
    
fputs($floc,$ligne) ;
  }
  @
mail("postmaster@".$domaine_ovh,"[ OK ] CRON Stats-OVH --> OK","Stats OVH OK exécutées correctement"); // Envoi d'un mail de confirmation
}
else { 
// Erreur, on n'a pas réussi à ouvrir un seul fichier log distant
  
@mail("postmaster@".$domaine_ovh,"[ ERREUR ] CRON Stats-OVH --> ERREUR EXECUTION","Stats OVH non exécutées, erreur dans le script...");
}
// On ferme les fichiers
@gzclose($fdistlog);
@
fclose($fdistosl);
@
fclose($floc) ;
?>
Bonne journée !

Dernière modification par Daniel60 30/08/2006 à 10h01
Daniel60 est déconnecté   Réponse avec citation
Vieux 30/08/2006, 10h14   #5
jalol
Membre
 
Date d'inscription: août 2006
Messages: 85
Hello
Citation:
Cette procédure bash m'a l'air compliquée à mettre en oeuvre...
Effectivement, cela peut effrayer, mais il n'y a rien de sorcier... En fait, le problème vient du fait que l'appel de la ligne de commande awstats_update.pl now ne fonctionne pas si on l'appelle depuis la fonction shell_exec() de PHP... Du coup, on est obligé de passer par SSH pour la config

Effectivement, j'ai dû oublier de dire qu'il fallait transférer le dossier /icon dans www/stats, dsl, je mets à jour le HOWTO.

Je viens de mettre à jour l'archive du HOWTO, les logs sont donc maintenant triés par date. Cela dit, je n'avais pas de problème de logs corrompus, mais on ne sait jamais...

J'ai également mis à jour le HOWTO pour simplifier la procédure de première mise à jour via l'interface web de Awstats, moins austère que la ligne de commande en SSH .

Dernière modification par jalol 30/08/2006 à 10h38
jalol est déconnecté   Réponse avec citation
Vieux 31/08/2006, 08h32   #6
epikto
Membre
 
Date d'inscription: mai 2006
Messages: 86
Merci pour ce superbe tuto!
j'ai réussi du premier coup !!
reste un truc qui est dommage: pourquoi OVHY n'autorise pas d'executer le script en php en cron ... ça simplifierait les choses et permettrait une grande autonomie (trop sans doute avec des risques de sécu?)

Bref, merci encore!
__________________
epikto
de retour chez ovh? sans doute, mais en dédié
epikto est déconnecté   Réponse avec citation
Vieux 31/08/2006, 09h21   #7
jalol
Membre
 
Date d'inscription: août 2006
Messages: 85
Mais il n'y a pas de quoi . Il est normal de faire partager ses expériences... En ce qui concerne le CRON avec les fichiers PHP, ce n'est pas que cela ne fonctionne pas, car l'exécution de php en ligne de commande marche très bien, mais avec des restrictions, et notamment sur les fichiers. En fait, il est impossible de récupérer les logs depuis la ligne de commande. J'ai trouvé ça bizarre aussi, mais bon, la hotline m'a répondu que c'était une question de sécurité donc je ne discute pas même si je trouve ça dommage.

Ceci dit, si tu veux être entièrement autonome, tu peux toujours utiliser Webcron
jalol est déconnecté   Réponse avec citation
Vieux 31/08/2006, 09h31   #8
epikto
Membre
 
Date d'inscription: mai 2006
Messages: 86
Yep, mais il y a récemment eu des prbl avec webcron.

Donc bon, au final j'ai coupé la poire en deux, comme tu le suggère: SSH et Webcron.

Une idée sinon pour récupérer les logs antérieurs à J-1 pour reconstituer l'historique le plus complet possible?
__________________
epikto
de retour chez ovh? sans doute, mais en dédié
epikto est déconnecté   Réponse avec citation
Vieux 31/08/2006, 09h33   #9
jalol
Membre
 
Date d'inscription: août 2006
Messages: 85
Pour ça il faudrait modifier le fichier copie_log_local.php5 et le configurer pour récupérer les logs antérieurs... Tu voudrais récupérer quoi? Un mois ou depuis la création de ton plan? lol
jalol est déconnecté   Réponse avec citation
Vieux 31/08/2006, 09h43   #10
epikto
Membre
 
Date d'inscription: mai 2006
Messages: 86
heu .... LOL depuis la création de mon plan ... mais rassure-toi il ne date que de 2 semaines

Une idée sur la méthode?
__________________
epikto
de retour chez ovh? sans doute, mais en dédié
epikto est déconnecté   Réponse avec citation
Réponse

Outils de la discussion

Règles de messages
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is oui
Les smileys sont activés : oui
La balise [IMG] est activée : non
Le code HTML peut être employé : non



Fuseau horaire GMT +2. Il est actuellement 17h01.


© OVH 1999-2010