Tag Archive for Apache

Comment ça marche un site ouaibe ?

Ce article peut paraître un peu bas niveau, mais finalement on est pas tous des professionnels de l’informatique. Alors cela ne fait pas de mal de temps a autres d’expliquer comment ça marche !

On va la faire simple et pédagogique.

Vous avez sous la main un ordinateur non ? Sisi, je vous ai grillé, vous êtes en train de l’utiliser là :

Et bien cet ordinateur, il sert aux webmasters, ingénieurs systèmes et autres développeurs à mettre en place des sites webs. alors bien entendu, ils n’ont pas toutes la même forme et la même puissance, mais la base est la même. De la mémoire, un disque dur et un ou des processeurs.

Cet ordinateur, quel qu’il soit, a partir du moment ou il est relié a un réseau et à internet (ou a internet directement), dispose de portes. Par défaut, et surtout par sécurité, toutes ces portes sont fermées. Alors pour mettre a disposition un site web, il faut commencer par ouvrir une de ces porte. En l’occurrence ici, la porte n°80. On pourrait en ouvrir d’autres, mais la porte 80 c’est celle qui est utilisée par défaut par tous les navigateurs.

Des portes, il y en a plein d’autres. En voici quelques unes :

  • 21 : FTP, pour partager des fichiers
  • 8080 : En général pour les fichiers en « streaming » ou en temps réel quoi, les webradios etc.
  • 22 : Pour se connecter à un ordinateur qui utilise linux
  • 25 : SMTP : Pour envoyer des mails
  • 443 : Ah ! Une porte sécurisée pour accéder à un site ouaibe
  • etc. etc.

Alors une fois qu’on a ouvert cette porte, qu’est-ce qui se passe ?

Et bien là, il faut un logiciel pour accueillir notre visiteur ! Une sorte de domestique genre Ted Cassidy :

Bon ok.. pas très accueillant. Alors on va plutôt prendre le plus connu de ces domestiques, Apache :

Ce logiciel vous permet de dire que pour un nom de domaine : www.exemple.com (les pages blanches (DNS), sont là pour dire que le nom de domaine correspond a votre adresse IP), il faut montrer les fichiers et sous dossiers qui se trouvent dans un dossier precis On pourrait dire Mes Documents par exemple. En sachant ça, vous êtes déjà à même de créer vous même un site ouaibe ! Bon ok.. pas des pages très lisibles ni quoi que ce soit, mais un site web quand même !

Alors comment font les webmaster pour afficher des belles pages avec des images toussa toussa ?

Et bien ils utilisent un language, qui s’appelle « HTML ». C’est une langue qui est comprise par tous les navigateurs ainsi que par ceux qui l’écrivent et qui permet à ce fameux navigateur (Firefox, Chrome, Internet Explorer, Netscape…) de mettre en forme les pages pour qu’elles soit lisibles par un humain.

Si vous voulez en savoir plus sur l’HTML, vous pouvez faire un petit tour ici : http://fr.wikipedia.org/wiki/Hypertext_Markup_Language

Très bien me direz vous.. Mais comment des sites comme Facebook, Amazon ou autres font pour avoir autant des pages ? ils ne les écrivent pas toutes à la main !

Et bien ce sont encore d’autres logiciels qui interviennent et qui permettent de calculer les pages. Ces logiciels sont nombreux : Java, PHP, Perl, ASP

Et ces logiciels utilisent a leur tour, des bases de données : Oracle, Mysql..

et la combinaison de ces données, avec un peu de logique, donne… des sites web. Finalement, c’est pas si éloigné de l’utilisation de word et excel quand vous faites un publipostage ! Excel est la base de données et Word l’application qui présente les données.

Bien sûr, c’est a une autre échelle, il y a beaucoup plus de données et elles sont beaucoup plus compliquées. Mais peu importe, le principe reste le même.

Alors pour schématiser :

  • Un visiteur passe chez vous. Les pages blanches (un DNS), lui donnent votre adresse : 77.34.56.12 (par exemple)
  • Le visiteur sonne a votre porte (vous savez, la numéro 80 : 77.34.56.12:80)
  • Ted cassidy (apache) lui répond : Vous voulez quoi ???
  • Le visiteur, par le biais de son navigateur, lui demande : La page qui présente des oranges (GET /oranges)
  • Ted Cassidy (apache) appelle son pote PHP : Tu connais Oranges ?
  • PHP dit : Attends, je regarde dans le frigo (Mysql)… A oui !! J’en ai une !! Tiens, prend ça !
  • Ted Cassidy (apache) se retourne et marmone a votre navigateur <orange rel= »juice »></orange>
  • Votre navigateur vous traduit : Jus d’orange !

Et voilà ! Le tour est joué !

c’est plutôt simpliste, mais ça peut en aider certain. Si ça ne sert a personne… tant pis !

Bon courage à ceux qui se lancent.

Bien configurer son serveur Apache pour éviter le duplicate content

Bien que je sois loin d’être un professionnel de la configuration Apache (chacun son métier), a plusieurs reprises, j’ai pu constater des serveurs web mal configurés, qui donnaient l’opportunité a des personnes mal intentionnées de faire du SEO Négative.

Avec l’avènement des serveurs dédiés à bas prix (Dedibox, Kimsufi…), il devient aisé de prendre un hébergement dédié qui permettra à vos utilisateur d’obtenir une navigation de qualité. Sans compter que pour le référencement, un serveur dédié est toujours mieux qu’un serveur mutualisé.

Cependant, il faut savoir le configurer. Et là, on tombe sur deux cas : L’admin système qui ne connait pas le référencement, ou le SEO qui ne connait pas le système. Dans les deux cas, ça peut donner lieux à des catastrophes.

Mais pour que ce soit plus parlant, nous allons prendre l’exemple d’un blog réputé, au classement de Wikio en septembre : The Trendy Girl.

C’est quoi le problème ?
Le site est accessible depuis 2 domaines (peut-être que ce ne sera plus le cas quand vous consulterez les url’s):

Quelles sont les conséquences ?

Google indexe les pages en duplicate content sur les deux domaines :

site:www.eazyfood.com :

site:www.thetrendygirl.net

On voit bien dans les deux cas qu’il s’agit du même site, The Trendy Girl. Je ne reviendrais pas sur la problématique du duplicate content.

Pire encore, on trouve beaucoup de sites connus accessibles via leur adresse IP :
http://78.40.125.95/ (RWW, on trouve même http://rww.bearstech.com/ dans leur cas),
http://87.98.158.229/ (Presse Citron).
Dans ces deux cas, ils ont la chance que Google n’ai pas indexé leurs adresses IP, car j’ai déjà vu le cas se produire, et en masse. Il leur suffira donc de correctement configurer le serveur.

Je précise que pour chaque IP et domaine différent, j’ai testé les robots.txt pour voir si ils différaient, mais ce n’est pas le cas.

Comment se prémunir de ce problème ?
La ça se corse un peu, chacun pourra voir midi à sa porte. Le principe de base est de ne rien laisser au hasard. Personnellement, j’ai une configuration crade, mais qui fonctionne, et je l’ai faite appliquer à plusieurs endroits.

Je configure une première Vhost avec un wildcar en lieu et place du domaine :

NameVirtualHost *
<VirtualHost *>

Cette première Vhost récupère absolument tout, et le dirige soit sur un dossier bidon, soit vers une authentification http, soit en 301 vers un autre domaine.

Ensuite, je configure de la même façon toutes les autres Vhost (une Vhost = Un dossier racine).

Ce qui diffère dans chaque Vhost, c’est le ServerName et le ServerAlias qui permet à Apache de savoir vers quel dossier racine diriger l’utilisateur. Tous les domaines qui ne sont pas configurés dans ces Vhost tomberont dans la première.

Un exemple simple de configuration sera plus concret (peut être séparé : une Vhost par fichier) :

NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName server.domain.tld
# répertoire par défaut
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# Authentification peut etre ?
AuthUserFile /var/www/.htpasswd
AuthName « Accès protégé »
AuthType Basic
<Limit GET POST>
Require valid-user
</Limit>
</Directory>
# On créé des logs spécifique pour cette vhost, histoire de savoir ce qui s’y passe
ErrorLog /var/log/apache2/default-error.log
LogLevel warn
CustomLog /var/log/apache2/default-access.log combined
ServerSignature On
</VirtualHost>
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName monsite.tld
ServerAlias www.monsite.tld
DocumentRoot /var/www/monsite/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/monsite/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# Autant rediriger la racine vers le www. pour éviter les domaines multiples
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.monsite.tld
RewriteRule ^(.*)$ http://www.monsite.tld/$1 [R=301,L]
</Directory>
# Des fichiers de log spécifique pour monsite.
ErrorLog /var/log/apache2/monsite-error.log
LogLevel warn
CustomLog /var/log/apache2/monsite-access.log combined
ServerSignature On
</Virtualhost>

Avec cette configuration, normalement, plus de risques qu’un gus fasse pointer 35 domaines et sous domaines vers l’adresse IP de votre serveur pour les faire indexer et donc pourrir votre référencement jusqu’à plus soif !

J’insiste, cette configuration n’est pas forcément la meilleure, un admin système saura sûrement vous conseiller mieux que moi. Mais l’idée de base est là : Faire tomber tout ce que vous ne connaissez pas comme domaines dans une Vhost par défaut.

Bon courage à tous !

p.s. : bien configurer webmaster tools doit egalement aider a éviter ce genre de problèmes.

Parser ses logs apache pour analyser GoogleBot

Un article de mon ancien blog qui rencontrait un franc succès était un simple parseur php qui permet de lire les logs apache d’un serveur web pour en extraire les informations essentielles, les entrer en base etc.

Comme tout SEO qui se respecte le sait, analyser des logs apache et le comportement de GoogleBot (ou Yahoo Slurp! etc.) est essentiel. lorsque j’ai démarré, j’ai mis du temps a apprendre à lire et utiliser correctement des logs apache.

Voici donc un petit script d’une simplicité ultime qui pourra aider ceux qui débutent à découvrir le monde merveilleux des robots d’indexation ! Ce script peut aussi être utilisé pour analyser les visites …

Pré-requis :

  • Un serveur dédié sous linux (ou un accès SSH à l’hébergement et aux logs apache)
  • Php 4 ou 5 installé en mode client (sudo apt-get install php5-cli…) , mais peut aussi fonctionner avec apache (en supposant que ce dernier ai les droits de lecture sur les fichiers de log)
  • L’accès au dossier contenant les logs apache et au format combined (logique jusque là…)
  • Un peu de patience !

Commencez par téléchargez le script ici, décompressez le et copiez le sur votre hébergement. Vous devez alors renseigner les 2 variables suivantes avec vos propres informations :

  • $folder= »/var/log/apache2/ »; // Chemin complet vers le dossier de vos logs
  • $mask= »blog-access »; // Masque de vos fichier (il peut y avoir plusieurs sites)

Une fois que c’est fait, lancez simplement le script en l’appelant via apache ou en mode client (prefered) :
php log_parser.php

Vous pouvez alors modifier à loisir le script pour insérer vos hits sous mysql et faire des comptages plus précis etc.

Amusez vous bien !