Installation d'un serveur Web

Pourquoi un serveur Web

Le serveur Web est la brique la plus commune dans une infrastructure Linux. De ce fait, les système de package ont automatisé au maximum le déploiement et la configuration d'une stack web complète (Apache / PHP / Mysql)

Installation d'un serveur Web

Le serveur web que nous allons installer est Apache.

apt-get install apache2

Les fichiers de configuration de Apache se trouve dans /etc/apache2/

Le fichier de configuration global de Apache se trouve dans le fichier apache2.conf. Comme la majorité des fichiers de configuration des applications installés par apt, de nombreux commentaires nous indiquent les possibilités du fichier. Dans une situation classique, vous n'aurez pas à modifier ce fichier.

Le répertoire sites-available contient les fichiers de configuration de chacun des sites configurés sur votre serveur. Un premier fichier 000-default.conf contient la configuration du site par défaut. Ses fichiers sont stockés dans /var/www/html/. Le site n'est pas actif tant qu'un lien symbolique n'est pas créé dans le répertoire sites-enabled. Pour créé ce lien symbolique Apache offre la commande a2ensite

Un deuxième fichier de configuration default-ssl.conf est lui réservé aux sites en HTTPS.

Installation d'un serveur de base de données

MySQL est un serveur simple de gestion de base de données. Pour l'installé nous avons besoin d'installer la partie serveur qui và être le moteur de données répondant à nos requêtes et lisant/écrivant sur le disque dur. Nous avons également besoin de la partie client qui nous permettra de nous connecter au serveur et d'envoyer les commandes pour par exemple créer des bases ou récupérer des informations dans celles-ci.

Il est a noter que le client peut être installé sur une autre machine, mais dans ce cas, il faudra modifier la configuration par défaut de MySQL pour qu'il accepte les connexions réseau.

apt-get install mysql-server mysql-client

Durant l'installation vous aurez à saisir un mot de passe qui sera utilisé pour l'administrateur de la base de données.

Les étapes suivantes nous permettront :

  • De se connecter au serveur avec le client
  • De créé une base de données
  • De créé un utilisateur pour la base de données
  • De créé une table dans la base
  • D'insérer quelques données dans la base (notez que nous mettrons la valeur id à 0 car c'est un champs auto_increment. MySQL s'occupera donc d'incrémenter la valeur)
  • D'afficher les données insérées
mysql -u root -pMOT_DE_PASSE
create database NOM_DE_BASE;
grant all on NOM_DE_BASE.* to LOGIN_UTILISATEUR@localhost identified by 'MOT_DE_PASSE';
use NOM_DE_BASE;
create table eleve(id int auto increment, login text, primary key(id));
insert into eleve values(0,'utilisateur1');
insert into eleve values(0,'utilisateur2');
select * from eleve;

Vous disposez maintenant d'une base de données avec une table élève.

Installation de PHP

PHP est un language de script qui peut être utilisé pour faire des applications Web mais également des scripts en mode console.

Pour que notre serveur web soit complet il va devoir savoir interpréter nos scripts PHP et nous générer les pages HTML résultantes.

Nous installerons donc le language PHP et le module pour Apache qui lui permettra de parser les scripts PHP. Sans ce module, Apache sera incapable de comprendre ce qu'est un script PHP.

apt-get install php5 libapache2-mod-php5

Enfin nous installerons un module pour PHP qui lui permettra de se connecter à une base de données MySQL.

apt-get install php5-mysql

Nous allons maintenant créer deux pages PHP dans le répertoire /var/www/html/

  • info.php : nous donnera des informations sur PHP et nous permettra de valider que tout est bien installé.
  • mysql.php : nous affichera le contenu de la table eleve et nous permettra d'apprendre à nous connecter à une base de données avec PHP.

info.php

<?php
    phpinfo();
?>

mysql.php

<?php
    $con =
    mysqli_connect('locahost','LOGIN_UTILISATEUR','MOT_DE_PASSE','test');
    $sql = "SELECT * FROM eleve";
    $query = mysqli_query($con, $sql);
    while($result = mysqli_fetch_array($query)){
        echo('<pre>');
        print_r($result);
        echo('</pre>');
    }
?>

Félicitations, vous avez maintenant configuré un serveur complet Apache/Mysql/PHP