Serveur Web sous Debian Sarge (Apache 2, PHP 5, MySQL, SSL, Virtual Hosts)

Ce tutoriel explique comment mettre en place un serveur web sous Debian Sarge avec Apache 2, PHP 4, SSL, MySQL, et les Virtual Hosts

Installation

Installons les paquets requis :

aptitude install apache2 mysql-server libapache2-mod-php5 php5 php5-mysql

Activons le support de PHP5 dans Apache 2 et relançons Apache :

a2enmod php5
/etc/init.d/apache2 reload

Tests

Pour vérifier le bon fonctionnement d’apache, il suffit d’ouvrir votre navigateur et de taper l’url : http://localhost/

Si vous avez la page d’accueil d’Apache, c’est bon !

Pour vérifier le bon fonctionnement de php, créez le fichier phpinfo.php suivant dans /var/www/apache2-default/

<? phpinfo(); ?>

... et appelez le dans votre navigateur : http://localhost/apache2-default/phpinfo.php

Si vous avez un beau logo PHP qui apparait avec toutes les infos de compilation de php, c’est bon !

Allons un peu plus loin

Vous avez vu que quand vous avez tapé http://localhost/, le serveur web vous a renvoyé sur http://localhost/apache2-default/, qui ne présente en fait que les fichiers présents dans /var/www/apache2-default. Hors la racine du serveur est bien /var/www/

Pour supprimer cette redirection, éditez /etc/apache2/sites-available/default et supprimmez ou commentez la ligne :

RedirectMatch ^/$ /apache2-default/

Il vous suffit alors de relancez apache et d’appeler http://localhost pour voir que la modification a été apportée.

Installation de phpMyAdmin

PHPMyAdmin est un gestionnaire de base de données MySQL écrit en PHP.

Récupérez la dernière version stable sur le site officiel et décompressez là dans /var/www/

Généralement, je renommes le dossier de phpMyAdmin pour qu’il soit plus court et moins complexe à taper :

mv phpMyAdmin-votre_version phpmyadmin

Tapez ensuite : http://localhost/phpmyadmin/

Vous devriez alors accéder à l’interface de PHPMyAdmin :-)

Mise en place du HTTPS/SSL

Créons un certificat via la commande :

apache2-ssl-certificate

Cette commande génère automatiquement pour vous les certificats de votre site.

Apache 2 est installé avec le module ssl mais celui-ci n’est pas activé par défaut :

a2enmod ssl

Il vous faut ensuite éditer le fichier /etc/apache2/mods-available/ssl.conf. Ajouter simplement une ligne à la fin du fichier :

SSLCertificateFile /etc/apache2/ssl/apache.pem

Ensuite, ajoutez au fichier /etc/apache2/ports.conf la ligne suivante :

Listen 443

car le protocole https fonctionne sur le port 443 et non sur le port 80 comme http.

Pour finir, adaptez votre virtual host dans /etc/apache2/sites-available/default en ajoutant la directive SSLEngine on

NameVirtualHost \*:443
<VirtualHost \*:443>
    ServerAdmin yourmail@mail.com
    SSLEngine on

    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/
    </Directory>
</VirtualHost>

Relancez Apache et lancez https://localhost/. Votre navigateur vous dira que le certificat n’est pas signé, ce qui est normal et en cliquant sur continuer, vous devriez avoir accès au contenu de votre serveur web mais en mode https:-)

Gestion des hôtes virtuels (virtual hosts)

Supposons que votre serveur héberge plusieurs sites. Vous avez envie que chacun soit disponible en tapant une adresse plus simple que http://localhost/titi/ ou http://localhost/toto/ mais plutot : http://titi/ et http://toto/

Ces deux sites sont stockés respectivement dans /var/www/titi et /var/www/toto

Allez dans /etc/apache2/sites-available/ et faites les copies suivantes :

cp default toto
cp default titi

Attention : un seul fichier de conf doit avoir la directive NameVirtualHost VotreIP:Port, pour les autres, vous n’aurez que des fichiers commençant par la directive VirtualHost

Editez toto :

# Nom du Virtualhost : ici : ip et l'ajout du port est obligatoire et comme on y accède en http, c'est le port 80
<VirtualHost xxx.xxx.xxx.xxx:80>
    ServerAdmin webmaster@localhost
    # Nom du server
    ServerName toto

    # Définition du répertoire racine du site toto
    DocumentRoot /var/www/toto/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    # Définition du répertoire racine du site toto
    <Directory /var/www/toto/>
        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/
    </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>

    # Si on veut par ex des logs propre à toto
    ErrorLog /var/log/apache2/error_toto.log

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

    # Si on veut par ex des logs propre à toto
    CustomLog /var/log/apache2/access_toto.log combined
    ServerSignature On
</VirtualHost>

J’ai précédé mes modifications d’un # suivi d’un commentaire.

Une fois que cela est fait, sauvegardez votre fichier toto.

Pour activer ce site :

a2ensite toto

Lancez : http://toto/ et... cela ne marche pas !

Normal, car votre ordinateur ne sait pas comment résoudre toto pour le rediriger vers son adresse ip.

Il vous suffit d’éditer /etc/hosts :

Avant :

127.0.0.1 localhost

Après :

127.0.0.1 localhost toto

Relancez Apache et cela devrait marcher :-)

Il ne vous reste plus qu’à faire pareil pour le site titi ;-)