Next Previous Contents

6. Serveur WEB

6.1 Introduction

Nos besoins

Pour tenir informés nos utilisateurs des modifications et des nouveautés apportées au serveur, nous allons créer une interface web accessible depuis un simple navigateur internet.

Pour cela, nous utilisons un éditeur de blogs très connu, DotClear. Ce dernier nécessite pour fonctionner l'utilisation d'un serveur web (nous choisissons Apache), d'un interpréteur de scripts PHP et d'une base de données MySQL.

Nous allons donc installer ces différents programmes sur notre serveur.

Un serveur LAMP

Nous avons finalement besoin d'un serveur LAMP = Linux + Apache + MySQL + Php.

C'est un terme consacré dans le monde des serveurs web !

Sécurité

Comme pour le serveur FTP défini au chapitre précédent, nous allons utiliser une transmission sécurisée par canal crypté en utilisant la technologie SSL. Cette dernière rend très difficile l'interception sur internet des communications entre notre serveur et les ordinateurs qui s'y connectent.

Cependant, la technologie SSL telle que nous l'utilisons (sans échange de clefs de confiance) ne permet pas de restreindre l'accès au serveur qu'à ces membres. Pour cela, nous utiliserons un système d'authentification par login et mot-de-passe.

Ces deux aspects de la sécurité de notre serveur seront mis en place au niveau du serveur web Apache.

6.2 Configuration d'Apache

Installation des paquets nécessaires

Nous avons besoin des paquets DEBIAN suivants : apache2 et apache2-common. Pour cela, en tant que superutilisateur (utilisateur root), entrez les commandes suivantes dans une console :

# aptitude install apache2 apache2-common
et suivez les instructions.

Pour activer l'utilisation de l'encodage des caractères UTF8, il faut rajouter la ligne suivante dans le fichier de configuration du serveur Apache, /etc/apache2/apache2.conf :

addDefaultCharset UTF-8
Normalement, c'est la seule modification que nous apporterons au fichier /etc/apache2/apache2.conf.

Pour que le serveur Apache prenne en compte cette modification, il faut le "forcer" à relire ses fichiers de configuration :

# /etc/init.d/apache2 force-reload

Installation des modules complémentaires

Nous allons avoir besoin du support SSL pour crypter la connexion et du support PAM pour l'authentification des utilisateurs.

Le support SSL est maintenant intégré par défaut dans le paquet apache2. Nous devons juste rajouter le module mod_auth_pam comme suit :

# aptitude install libapache2-mod-auth-pam
et créer le lien suivant:
# ln -s /etc/pam.d/apache2 /etc/pam.d/httpd
Il nous faut aussi permettre à l'utilisateur d'Apache qui est en fait www-data de lire le fichier /etc/shadow en rajoutant l'utilisateur www-data au groupe shadow :
# adduser www-data shadow

Ensuite nous devons activer ces deux modules :

# a2enmod ssl
# a2enmod auth_pam
et "forcer" le serveur Apache à relire ses fichiers de configuration :
# /etc/init.d/apache2 force-reload

Création du certificat de sécurité

Apache2 possède sa propre commande pour créer un certificat auto-signé : apache2-ssl-certificate.

Si le script apache2-ssl-certificate n'est pas présent, voir plus loin pour une autre possibilité de créer un certificat de sécurité.

Si le script apache2-ssl-certificate est présent, faire :

# apache2-ssl-certificate

creating selfsigned certificate
replace it with one signed by a certification authority (CA)

enter your ServerName at the Common Name prompt

If you want your certificate to expire after x days call this programm
with -days x
Generating a 1024 bit RSA private key
...................................++++++
...................++++++
writing new private key to '/etc/apache2/ssl/apache.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Plaisir
Organization Name (eg, company; recommended) []:www.nuts.fr
Organizational Unit Name (eg, section) []:Serveur web
Email Address []:webmaster@nuts.fr
Ce dernier génère en fonction des informations que vous stipulez un fichier de clefs : /etc/apache2/ssl/apache.pem.

Si le script apache2-ssl-certificate n'est pas présent, il y a une autre possibilité de créer un certificat de sécurité en utilisant le script make-ssl-cert du paquet DEBIAN ssl-cert :

# aptitude install ssl-cert
# make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
et suivez les instructions comme précédemment.

Configuration du site www.nuts.fr

Le fichier de configuration

Editons un nouveau fichier /etc/apache2/sites-available/nuts comme suit :

# Le port 443 est le port pour l'accès sécurisé par HTTPS.
NameVirtualHost *:443
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        
        DocumentRoot /var/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        <\/Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                RedirectMatch ^/$ /apache2-default/
        
                # PAM authentification module
                AuthType Basic
                AuthName "PAM"
                AuthPAM_Enabled On
                AuthPAM_FallThrough off
                AuthBasicAuthoritative off
                Require valid-user
                Require group ftp
        <\/Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        <\/Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature Off

        # Secure socket layer
        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/apache.pem

    Alias /ftp/ "/var/ftp/"
    <Directory "/var/ftp/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order allow,deny
        allow from all
        # PAM authentification module
        AuthType Basic
        AuthName "PAM"
        AuthPAM_Enabled On
        AuthPAM_FallThrough off
        AuthBasicAuthoritative off
        Require valid-user
        Require group ftp
    <\/Directory>

<\/VirtualHost>
La ligne ServerSignature Off permet de masquer les informations relatives à la version du serveur, notamment sur la page d'erreur 404.

Sécurisation de la connexion

Remarquons dans le fichier de configuration les lignes qui définissent l'utilisation d'un canal sécurisé par SSL et certificat de sécurité :

        # Secure socket layer
        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/apache.pem
On retrouve ici l'emplacement de notre fichier de clefs généré par apache2-ssl-certificate ou make-ssl-cert.

Il faut aussi modifier le fichier /etc/apache2/ports.conf comme suit :

#Listen 80
Listen 443
pour interdire l'utilisation du canal non crypté et autoriser l'utilisation du https.

Authentification des utilisateurs

Remarquons dans le fichier de configuration les lignes suivantes qui définissent l'authentification des utilisateurs par le système PAM - Pluggable Authentication Module :

                # PAM authentification module
                AuthType Basic
                AuthName "PAM"
                AuthPAM_Enabled On
                AuthPAM_FallThrough off
                AuthBasicAuthoritative off
                Require valid-user
                Require group ftp
Pour les versions d'Apache supérieures à 2.1, les lignes AuthPAM_FallThrough off et AuthBasicAuthoritative off sont obligatoires pour faire fonctionner le module PAM et le module authz_user doit être activé.

Accès au répertoire FTP

Remarquons aussi le paragraphe concernant /var/ftp qui nous permet d'accéder depuis l'interface web au répertoire FTP. Il faut pour cela, que l'utilisateur www-data ait accès en lecture au répertoire /var/ftp/ en rajoutant l'utilisateur www-data au groupe ftp :

# adduser www-data ftp

Activer le site

Pour activer ce site sur le serveur Apache, nous devons entrer les commandes suivantes :

# a2ensite nuts
# /etc/init.d/apache2 force-reload

Pour désactiver le site par défaut, faire :

# a2dissite default
# /etc/init.d/apache2 force-reload

Test du bon fonctionnement du serveur Apache

Depuis un autre ordinateur, entrez l'adresse suivante dans votre navigateur favori : https://www.nuts.fr/. Vous devriez voir apparaître la page d'acceuil du serveur Apache.

Si ce n'est pas la cas, c'est qu'il y a un problème. Pour connaître l'origne de ce problème consultez les logs du serveur dans les deux fichiers : /var/log/apache2/error.log et /var/log/apache2/access.log.

6.3 Configuration du support PHP

Installation de l'interpréteur PHP

Nous avons besoin des paquets DEBIAN suivants : php5 et php5-mysql. Pour cela, en tant que superutilisateur (utilisateur root), entrez les commandes suivantes dans une console :

# aptitude install php5 php5-mysql
et suivez les instructions.

Installation du module complémentaire pour Apache

Nous avons besoin du paquet DEBIAN suivant : libapache2-mod-php5. Pour cela, en tant que superutilisateur (utilisateur root), entrez les commandes suivantes dans une console :

# aptitude install libapache2-mod-php5
et suivez les instructions.

Ensuite nous devons activer ce module dans Apache :

# a2enmod php5
et "forcer" le serveur Apache à relire ses fichiers de configuration :
# /etc/init.d/apache2 force-reload

Configuration de PHP

Là, il y a normalement rien à faire, l'installation par défaut des paquets DEBIAN fait tout ce dont nous avons besoin à notre place.

Vérification de l'installation

Editions un nouveau fichier /var/www/info.php comme suit :

<?php
print phpinfo();
?>
et accédons-y depuis un autre poste par notre navigateur web préféré à l'adresse https://www.nuts.fr/info.php.

Un tableau montrant les divers paramètres de la configuration de PHP devrait apparaître...

6.4 Configuration du support MySQL

Installation de MySQL

Nous avons besoin des paquets DEBIAN suivants : mysql-server et mysql-client. Pour cela, en tant que superutilisateur (utilisateur root), entrez les commandes suivantes dans une console :

# aptitude install mysql-server mysql-client
et suivez les instructions.

Configuration de MySQL

Ici encore, il y a normalement rien à faire, l'installation par défaut des paquets DEBIAN fait tout ce dont nous avons besoin à notre place.

Sécurisation de la base de données

Pour tester le fonctionnement de MySQL, lancez la commande :

# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 4.0.24_Debian-10sarge2-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
Tapez quit pour sortir du gestionnaire.

Vous constaterez que l'accès au gestionnaire de base de donnée en tant qu'administrateur n'est pas sécurisé, puisque vous n'avez pas eu à rentrer de mot-de-passe. Nous allons y remédier tout de suite. Entrez la commande suivante :

# mysqladmin password 'mot-de-passe en clair'
Maintenant l'accès au gestionnaire de la base de données est contrôlé par un mot-de-passe. Pour y accéder vous devrez désormais utiliser l'option -p comme ceci :
# mysql -u root -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 4.0.24_Debian-10sarge2-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Interface d'administration phpMyAdmin

Pour faciliter l'administration de la base de données, nous allons utiliser un outil dédié qui a le bon gout d'avoir une interface graphique et d'être accessible depuis n'importe quel poste. Vous l'aurez compris, il s'agit de phpMyAdmin.

Nous avons besoin du paquet DEBIAN suivant : phpmyadmin. Pour cela, en tant que superutilisateur (utilisateur root), entrez les commandes suivantes dans une console :

# aptitude install phpmyadmin
et suivez les instructions.

Pour accéder à l'interface d'utilisation de phpMyAdmin, entrez l'URL suivante dans votre navigateur : https://www.nuts.fr/phpmyadmin/ depuis n'importe quel poste ayant un accès au serveur www.nuts.fr.

Création de la base de données pour DotClear

Depuis l'interface d'administration phpMyAdmin, il ne nous reste plus qu'à créer une base de données et un utilisateur pour DotClear.

Pour créer un nouvelle base de donnée, rentrez son nom (par exemple : "dotclear") dans le champs "Créer une base de données" et cliquez sur le bouton "Créer". Voilà, c'est aussi simple que ça !

Pour ajouter un nouvel utilisateur, cliquez sur le lien "Privilèges" de la page principale. Ensuite, cliquez sur le lien : "Ajouter un utilisateur".

Donnez lui un nom et un mot-de-passe, spécifiez le serveur de connexion (ici localhost) et accordez lui tous les privilèges des colonnes "Données" et "Structure" et les privilèges "Super", "Process" et "Lock tables" de la colonne "Administration". Puis appuyez sur le bouton "Exécuter".

Votre base de données est maintenant prête pour une utilisation avec DotClear.

6.5 Configuration de DotClear

Installation de Dotclear

Pour installer Dotclear, il faut récupérer l'archive sur le site http://www.dotclear.net/ et la décompresser dans le répertoire /var/www/ :

# cd /var/www/
# wget http://www.dotclear.net/download/dotclear-1.2.5.tar.gz
# tar -zxvf dotclear-1.2.5.tar.gz

Configuration de DotClear

Dans un navigateur internet depuis un autre poste, entrez l'URL suivante : https://www.nuts.fr/dotclear/install.

Entrez les informations demandées et spécifiez les données pour la base MySQL, telles que vous les avez définies dans la section Création de la base de données pour DotClear.

Cliquez sur le bouton "Terminer l'installation". Voilà, c'est fini...

Voir le blog

Pour voir le blog, toujours depuis un autre poste, entrez l'URL suivante dans votre navigateur internet : https://www.nuts.fr/dotclear/.

Ecrire un nouveau billet

Pour écrire un nouveau billet, entrez l'URL suivante : https://www.nuts.fr/dotclear/ecrire.

L'interface est très claire et est en français, alors laissez-vous guidé !

Accéder directement à DotClear

Maintenant, paramétrons Apache pour qu'il nous redirige directement sur la page de notre blog depuis l'adresse https://www.nuts.fr/.

Pour cela il suffit de remplacer dans le fichier de configuration de notre site /etc/apache2/sites-available/nuts la ligne suivante :

                RedirectMatch ^/$ /apache2-default/
par celle-ci :
                RedirectMatch ^/$ /dotclear/
et de recharger la configuration du serveur Apache :
# /etc/init.d/apache2 force-reload
Et le tour est joué !

Voilà, notre serveur WEB est maintenant opérationel !


Next Previous Contents