Installation d’un serveur Web sur Debian GNU/Linux

Nous allons aborder l’installation d’un serveur web complet sur un système d’exploitation libre  » Debian Linux  » .

debian-logo13Je ne vous parlerai pas de l’installation du système d’exploitation Debian.
Vous pourrez néanmoins trouver en téléchargement libre et gratuit, ce merveilleux système d’exploitation dans sa dernière version à l’adresse suivante : distributions Debian Linux
pour la partie installation , vous trouverez votre bonheur dans la documentation officielle du site : Manuel d’installation Debian.

Si ce n’est pas encore fait, installez le serveur OpenSSH pour accéder en toute sécurité à votre console de commande shell.

Le protocole SSH permet de crypter les données qui transitent sur le réseau entre votre machine et le serveur distant. grâce à ce système de chiffrage, vos mots de passe et identifiants seront un peu plus à l’abri des attaques réseaux, contrairement aux protocoles FTP ou Telnet encore énormément utilisés, mais très peu sécurisés voir pas du tout.
SSH vous donnera également la possibilité de créer des tunnels sécurisés. J’aborderai SSH et sa configuration plus en détail dans un prochain article.

En attendant installez OpenSSH :

 aptitude install openssh-server 

apache-logo1Nous allons maintenant rentrer dans le vif du sujet et installer tous les outils essentiels à votre serveur :

  • Apache qui est le serveur HTTP.
  • Le langage PHP 5
  • Serveur MySQL
  • L ‘outil d’administration de bases de données PhpMyAdmin
  • Le serveur de DNS Bind

et tout ça en une seule commande 🙂 :

aptitude install apache2 php5 php5-mysql bind9 mysql-server phpmyadmin 

Configuration d’apache 2 sur Debian

Aujourd’hui, nous allons faire le tour de quelques paramètres de configuration pour vos sites internet, sur un serveur HTTP Apache 2.
Si vous n’avez pas encore installé Apache 2 sur votre serveur Debian, vous pouvez vous référer au tutorial précédent « installation d’un serveur web ».

Activer / désactiver un module apache 2

La plupart des fonctionnalités sont implémentées dans des modules externes que le serveur Apache charge pendant sont initialisation.
Par défaut, seul les modules les plus courants et les plus utilisés sont activés.
Deux commandes sont disponibles, pour activer ou désactiver les modules supplémentaires. La première commande qui permet d’activer un module est

a2enmod nomDuModule

et la commande qui permet de désactiver un module

a2dismod nomDuModule

Module de réécriture d’url

a2enmod rewrite

on recharge la configuration d’apache :

 invoke-rc.d apache2 reload

Hôtes virtuels

Chaque hôte virtuel est décrit par un fichier placé dans le répertoire /etc/apache2/sites-available/ .

Créez un fichier dans ce répertoire nommé de la façon suivante : nomdedomaine.com
Le nom de domaine, ainsi que les chemins de log sont à modifier, en fonction de la configuration de votre serveur.Le fichier doit être de la forme suivante :

ServerAdmin postmaster@nomdedomaine.com
ServerName www.nomdedomaine.com
ServerAlias nomdedomaine.com *.nomdedomaine.com
DocumentRoot /var/www/monsite/

Options -Indexes FollowSymLinks MultiViews
AllowOverride All

ErrorLog /var/log/apache2/site/nomdedomaine/error.log
LogLevel warn
CustomLog /var/log/apache2/site/nomdedomaine/access.log combined
ServerSignature Off

on active avec

ln -s /etc/apache2/sites-available/nomdedomaine.com /etc/apache2/sites-enabled/nomdedomaine.com

on redémarre le serveur :

 invoke-rc.d apache2 restart

voilà c’est fini, vous pourrez tester le nom de domaine dans votre navigateur préféré Firefox ou Chrome ! 🙂
( à conditions que votre serveur de DNS soit également configuré ) à voir dans le prochain tutorial « Configuration du serveur de DNS Bind »

Configuration des DNS dans Bind

Le service de gestion des noms de domaine est essentiel sur internet. Il permet d’associer des noms à des adresses IP, ce qui permet de saisir www.google.fr au lieu de 173.194.67.94, dans la barre d’adresse URL de votre navigateur.

Les informations DNS sont regroupées par zone, correspondant chacune à un domaine ou une plage d’IP.Le serveur primaire est prioritaire sur le contenu d’une zone. Le serveur secondaire qui doit être de préférence sur un autre serveur, n’est qu’ une copie du primaire.

Chaque zone peut contenir différents types d’enregistrement :
A : attribution d’une adresse IP v4.
CNAME : définition d’un alias.
MX : définition d’un serveur de courrier.
NS : correspondance du nom de domaine vers le serveur.

Nous allons voir comment configurer un nouveau nom de domaine sous Bind :
Si ce n’est pas déjà fait installez Bind

 aptitude install bind

pour un nom de domaine mondomaine.com.
Le @ fait référence à mondomaine.com.
Le mail doit être un mail valide et le @ est remplacé par un . exemple : admin.mondomaine.com correspond au mail admin@mondomaine.com.
ns1 = serveur primaire de nom
ns2 = serveur secondaire de nom
ns0 = serveur de messagerie
173.194.67.94 = ip de votre serveur

creation du fichier db.mondomaine.com dans /etc/bind/

nano db.mondomaine.com
$ttl 86400
@   IN SOA mondomaine.com. admin.mondomaine.com.(
2012041201 ;serial
21600 ;refresh
3600 ;retry
604800 ;expire
86400 ) ; negative  cache TTL
@       IN      NS      ns1
@       IN      NS      ns2
@       IN      MX      10 mail
@       IN      A       173.194.67.94
www             IN      A       173.194.67.94
mail            IN      CNAME   ns0
smtp            IN      CNAME   ns0
pop             IN      CNAME   ns0
pop3            IN      CNAME   ns0
imap            IN      CNAME   ns0
sql             IN      A       173.194.67.94
mysql           IN      A      173.194.67.94

Editez les deux fichiers suivant :

nano named.conf.local

et

nano zones.conf

puis ajouter en fin de fichier :

zone "mondomaine.com" {
type master;
file "/etc/bind/db.mondomaine.com";
};

on redémarre Bind :

invoke-rc.d bind9 restart

voila vous n’avez plus qu’ à configurer le domaine sous apache si ce n’est pas déjà fait, comme dans le tutorial précédent : configuration d’un site sous apache