Configuration Système

TD 9 - Le serveur HTTP Apache

C. Drocourt
I.U.T. Amiens
drocourt AT iut-amiens DOT fr

Apache


Points de cours abordés  :

– Statistiques Apache/IIS : Netcraft, Woozweb,
– Installation de MySQL et configuration initiale,
– Le fichier de configuration,
– Les principales directives,
– Document root,
– Le public_html,
– Les cgi,
– Les modules DSO (Dynamic Shared Object),
– L'indexation (restriction, authorisation et personnalisation),
– Les virtualhost,
– Le module rewrite,
– La gestion des logs,

Et de configurer MySQL (voir annexe MySQL en bas de page).

Exercice  :

1 – Installez si besoin les packages correspondant à apache, mysql et php.
2 – Configurez mysql en vous aidant de l'annexe donné en bas de cette page.
3 –Assurez vous que les pages se trouvent dans /var/www/html, les scripts cgi dans /var/www/cgi-bin et que Apache s'execute sous l’utilisateur apache, groupe apache.
4 – Créez une page index.html que vous allez placer dans le répertoire /var/www/html et vérifier avec votre navigateur que l'accès fonctionne,
5 – Assurez vous que les scripts php fonctionnent, au besoin installez les packages nécessaires.
6 – Chaque machine à deux noms DNS :
tpY-pcXX.prive.iut-amiens.fr : 172.20.Y.XX
tpY-pc1XX.prive.iut-amiens.fr : 172.20.Y.XX
    Ou Y représente le numéro de la salle de TP, et XX représente le numéro de votre machine. Ainsi par exemple si vous avez la machine 3 de la salle tp4 vous aurez les adresses suivantes :
tp4-pc03.prive.iut-amiens.fr : 172.20.4.3
tp4-pc103.prive.iut-amiens.fr : 172.20.4.3

Vous allez gérer deux virtualhosts associés à vos deux adresses :
- Vous allez créer un répertoire /var/www/vhosts,
- Dans ce répertoire, vous aurez autant de sous-répertoires que de VirtualHost, par exemple /var/www/vhost/tpY-pcXX.prive.iut-amiens.fr,
- Dans chacun de ces sous-répertoires vous allez créer un répertoire html qui sera le DocumentRoot, et un répertoire log qui servira pour les logs,
- Le serveurs apache donnera une page html différente en fonction du domaine demandé,
- Le serveurs apaches utilisera deux fichiers de logs d'accès pour ces deux zones qu'il placera dans le sous répertoire log de chacun des sites créé précédemment,

7 – Activer la possibilitée pour les utilisateurs d'avoir un répertoire personnel, de plus, le répertoire utilisateur sera différents pour les deux virtualhost.
8 – Pour chacun de ces sites web, le répertoire /private sera protégé par le login "patrick", mot de passe "saumon",
9 – Pour chacun de ces sites web, l'alias /cgi-bin/ contiendra un script cgi appelé "liste.cgi qui affichera un message quelconque. Le programme sera réalisé en C :
#include <stdio.h>
#include <stdlib.h>
int main () {
  char * page = "Content-type: text/html\n\n<html><body>Bonjour</body></html>";
  printf("%s\n",page);
  exit(0);
}
10 – Lorsque apache ne trouve pas de page d'index dans un repertoire, soit il affiche un message d'erreur, soit le contenu du répertoire suivant ce qui est spécifié dans son fichier de configuration. De plus lorsque le contenu du répertoire peut être affiché, apache peut ajouter une entete et un pied de page personnalisé a travers deux fichiers configurés pas Headername et readname, Vous allez donc réalisez la configuration suivante :
11 – Utilisez les règles de réécriture (rewrite) pour rediriger les requêtes et sous requêtes de tpY-pc1XX.prive.iut-amiens.fr/redirect/ sur tpY-pcXX.prive.iut-amiens.fr/.
12 – Vous allez maintenant récupérer un logiciel d'analyse de fichiers d'access logs pour Apache, l'installer et le configurer pour avoir une analyse de vos logs par virual host, les statistiques de chaque site seront accessibles par l'adresse "http://.../stats/". Vous pouvez utiliser au choix : webalizer, awstats ou analog.

Annexe Mysql :

mysql Pour Mysql, il faut récuperer les archives mysql et mysql-server au format rpm et les installer. Apres l'installation, il faut securiser un peu mysql.
Deux comptes MySQL root sont créés en tant qu'administrateurs ayant tous les droits. Le mot de passe de l'utilisateur initial root  est vide, ce qui permet à n'importe qui de se connecter en tant que root sans mot de passe, pour profiter de tous les droits.
    o Sous Windows, un compte root permet de se connecter depuis l'hôte local, et l'autre depuis n'importe quel hôte.
    o Sous Unix, les deux comptes root sont destinés à être utilisés depuis le compte local. Les connexions doivent être faîtes en spécifiant le nom d'hôte localhost, ou le véritable nom d'hôte, ou l'adresse IP.
 
Deux comptes utilisateur anonyme sont créés, qui peuvent faire ce qu'ils veulent avec toutes les tables dans la base de données 'test' ou commençant par 'test_' . Cela signifie qu'un utilisateur peut se connecter sans mot de passe et être traité comme un utilisateur anonyme.
    o Sous Windows, un compte anonyme sert depuis l'hôte local. Ce compte a tous les droits, comme root. L'autre sert aux connexions depuis les hôtes, et a tous les droits pour les bases test ou commençant par test.
    o Sous Unix, les deux comptes anonymes servent depuis l'hôte local. Les connexions doivent être faîtes en spécificant le nom d'hôte localhost, ou le véritable nom d'hôte, ou l'adresse IP. Ces comptes ont tous les droits dans les bases test ou dont le nom commence par test_.
 
Etapes de securisation : (Ce qui est a taper est en gras)
 
[root@mamachine root]# mysql -u root
 
mysql> SELECT Host,User FROM mysql.user;
+--------------------------------+------+
| Host                           | User |
+--------------------------------+------+
| localhost                      |      |
| localhost                      | root |
| mamachine.prive.iut-amiens.fr  |      |
| mamachine
.prive.iut-amiens.fr  | root |
+--------------------------------+------+
4 rows in set (0.00 sec)
 
mysql> DELETE FROM mysql.user WHERE User = '';
Query OK, 2 rows affected (0.00 sec)
 
mysql> SELECT Host,User FROM mysql.user;
+-------------------------------------+------+
| Host                                | User |
+-------------------------------------+------+
| localhost                           | root |
| mamachine
.prive.iut-amiens.fr       | root |
+-------------------------------------+------+
2 rows in set (0.00 sec)
 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
 
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('nouveau_mot');
Query OK, 0 rows affected (0.00 sec)
 
mysql> SET PASSWORD FOR 'root'@'mamachine.prive.iut-amiens.fr' = PASSWORD('nouveau_mot');
Query OK, 0 rows affected (0.00 sec)
 
mysql> quit

Autres commandes utiles :

Outil d'administration de mysql : mysqladmin

[root@mamachine root]# mysqladmin status
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user: 'root@localhost' (Using password: NO)'
[root@mamachine root]# mysqladmin status -u root -p
Enter password:
Uptime: 1738  Threads: 1  Questions: 504  Slow queries: 0  Opens: 18  Flush tables: 1  Open tables: 2 Queries per second avg: 0.290
[root@skarsnik root]#

Pour voir la structure d'une base : mysqlshow
Sans argument donne les bases disponibles, exemple : mysqlshow mysql, mysqlshow mysql user.
 
Pour la gestion des bases, des tables et des utilisateurs vous pouvez utiliser le logiciel phpMyAdmin, qui permet ce type de gestion via un portail web en php.