Créer un serveur web complet sous debian - #1 Apache

Statut
N'est pas ouverte pour d'autres réponses.

Xavier Mustin

Administrator
Staff member
#1
Tutorial: Créer un serveur web complet sous debian - #1 Apache

Voici un nouveau tutorial qui vous sera sans doute utile si vous venez d'installer la distribution linux Debian (Ou Ubuntu) sur votre serveur.

Introduction

Objectif de ce tutorial


L'objectif du tutorial est d'obtenir un serveur linux debian permettant d'héberger et de gérer vos sites web PHP / MySQL à distance, uniquement avec un accès SSH.

Pré requis


Pour réaliser ce tutorial, vous devrez au préalable avoir des connaissances en ligne de commande linux (Au moins les commandes basiques: cd, mkdir, mv ...).

Disposer d'un client SSH (Comme Putty), d'un client FTP (Comme FileZilla), et bien sûr de votre serveur avec une Debian fraichement installée.

Vous aurez aussi besoin d'au moins un nom de domaine pointant sur votre serveur.

 
configuration de Debian


Ca y'est on entre dans le vif du sujet.


Votre distribution Debian est correctement installée (Pas besoin d'installer d'environnement graphique).

Ouvrez votre client SSH (Putty ou autre), et connectez-vous à votre serveur en mode root

(Note aux puristes: Je suis un fainéant, je n'utilise pas sudo, mais je vous recommande de ne pas faire comme moi pour éviter les bêtises irréversibles)

Une fois connecté, je vous conseille de modifier directement le fichier .bashrc pour plus de confort:
Code:
[i]root$[/i] nano .bashrc
Dans le fichier, décommentez ou rajoutez les lignes suivantes:
Code:
if [ "$TERM" != "dumb" ]; then
eval "`dircolors -b`"
alias ls='ls --color=auto'
fi

# ls Aliases
alias ll='ls -alL'
alias la='ls -A'
alias l='ls -CF'
Elles nous permettront d'utiliser des raccourcis, et modifiez aussi le 'PS1'
Code:
PS1="\u [\w] > "
Ctrl + X pour quitter nano, puis O (ou Y suivant la langue) pour sauvegarder et entrer pour valider le nom du fichier.

Il faut que la console actuelle prenne en compte nos modifications, tapez la commande suivante:
Code:
[i]root$[/i] source .bashrc
Et vous remarquerez que le curseur de votre console à changé. Il affichera désormais l'utilisateur logué en premier puis entre crochet, le chemin du répertoire où vous vous trouvez.

Nous sommes prêts désormais à attaquer la configuration !
Mise à jour de la distribution et sources.list


Votre distribution de Debian n'est peut être pas la dernière version, nous allons donc tout mettre à jour maintenant.

Nous allons utiliser le plus bel outil de Debian: apt-get
Code:
root [~] > apt-get update
puis
Code:
root [~] > apt-get upgrade
répondez oui si il vous ai demandé d'installer les dernières versions des logiciels et enfin
Code:
root [~] > apt-get dist-upgrade
Mettez tout à jour si vous en avez besoin.

Ensuite, nous allons renseigner les sources des dépôts que l'on va utiliser plus tard.
Code:
root [~] > nano /etc/apt/sources.list
Ajoutez ou décommentez les lignes suivantes:
Code:
deb http://ftp.easynet.be/ftp/debian/ etch main non-free contrib
deb http://security.debian.org/ etch/updates main contrib non-free
Vous pouvez choisir d'autres dépôts officiels.

Assurez-vous surtout de ne pas avoir uniquement la source CD-Rom comme dépot.

Après modifications du fichier sources.list, mettez à jour la liste des dépôts:
Code:
root [~] > apt-get update
Installez les librairies de bases:
Code:
root [~] > apt-get install build-essential
 

 
Installation et configuration d'Apache 2


Commençons déjà par installer apache2, le serveur web.
Code:
root [~] > apt-get install apache2
Répondez oui pour installer les packages dépendants:
Code:
The following extra packages will be installed:
  apache2-mpm-worker apache2-utils apache2.2-common libapr1 libaprutil1
  libexpat1 libmagic1 libpcre3 libpq4 libsqlite3-0 mime-support
Et voilà, apache2 est prêt à emploi ! Pour vérifier si tout s'est bien passé, ouvrez votre navigateur préféré et entrez l'IP de votre serveur. Vous devriez avoir le message suivant:

It works!

 
Un petit tour dans le fichier de config d'apache


Nous allons faire quelques petites modifications dans la configuration de base d'apache2:
Code:
root [/var/www] > nano /etc/apache2/apache2.conf
1) Changement du Charset

Si vous souhaitez que votre serveur web prenne en charge par défaut le charset ISO-8859-1, je vous recommande de décommenter la ligne suivante:
Code:
AddDefaultCharset ISO-8859-1
Supprimez simplement le # devant la ligne.

Sauvegardez et quittez.

 

2) Fichiers index

Il faut spécifier à Apache les fichiers qu'il doit considérer comme des fichiers index et qui seront donc automatiquement appelés.

Pour faire plus propre, nous mettrons tous nos ajouts en terme de configuration dans le fichier httpd.conf automatiquement chargé par apache2.
Code:
root [/var/www] > nano /etc/apache2/httpd.conf
Ajoutez la ligne suivante en spécifiant les types de fichier index à prendre en compte:
Code:
DirectoryIndex index.html index.htm index.xhtml index.php
 

3) Dossiers web personnels

Optionnellement, si vous souhaitez que chaque utilisateur de votre serveur linux dispose d'un espace web, vous pouvez ajouter la ligne suivante:
Code:
UserDir www
Sauvegardez et quittez.

Dans la version 2.2 d'apache, il faut activer le module userdir, tapez:
Code:
root [/var/www] > a2enmod userdir
Ainsi vous pourrez accéder au contenu de l'espace web /home/NOMUSER/www/ à partir de l'adresse http://www.votredomaine.com/~NOMUSER/

 

4) Reboot du serveur web

Pour qu'apache prenne en compte ces modifications, nous rebootons le serveur web:
Code:
root [/var/www/] > apache2 -k restart
Si tout s'est correctement déroulé, vous ne devriez avoir aucuns messages et votre serveur web devrait toujours être accessible.

Nous aurons sans doute à retourner dans ces fichiers de configuration plus tard, pour le moment, passons aux virtuals host.

 
Configuration des vHosts et répertoires web


Apache créé le dossier /var/www/ où seront stockés vos sites web.

Nous allons créer le répertoire où sera stocké notre site.
Code:
root [/var/www] > mkdir lafermeduweb
J'utiliserais lafermeduweb comme nom de répertoire dans tout le tutorial, dès que vous verrez ce nom de dossier, remplacez le par le nom de votre site.

Bon, notre serveur marche bien, mais pour le moment, nous ne pouvons que y accéder à partir de son IP. Pas très pratique !

Nous allons créer des virtuals hosts dans apache pour que notre nom de domaine pointe directement sur le répertoire que nous venons de créer sur le serveur.

Créez un fichier index.html dans le répertoire que vous venez de créer.
Code:
root [/var/www/lafermeduweb] > nano index.html
Puis mettez une balise de titre juste pour tester si la redirection du domaine est bien effectuée.
Code:
<h1>Bienvenue sur mon nouveau site !</h1>
Sauvegardez (CTRL+X, Y ou O, Entrée) et quittez l'édition du fichier.
Comment faire pour afficher l'index.html lorsque l'on entre mon domaine ?


(1) L'utilisateur va entrer l'adresse de notre site dans son navigateur.

(2) Les serveurs DNS vont être interrogés pour connaître l'IP associée

(3) Notre serveur web est interrogé

(4) Les fichiers vHosts sont analysés par Apache, s'il trouve une correspondance avec l'adresse demandée, il appelle le fichier index du répertoire associé. Et la page est affichée au visiteur.

 
Créer les fichiers vHosts apache


Rendez-vous dans le répertoire /etc/apache2/sites-enabled puis créer le fichier vHost (Pour rester clair, il est conseillé de faire un fichier vHost par domaine):
Code:
root [/etc/apache2/sites-enabled] > nano lafermeduweb.net
Et entrez les lignes suivantes:
Code:
<VirtualHost *>
ServerAdmin postmaster [b][ at ][/b] lafermeduweb.net
ServerName www.lafermeduweb.net
ServerAlias *.lafermeduweb.net
DocumentRoot /var/www/lafermeduweb/
<Directory /var/www/lafermeduweb/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
ServerSignature Off
</VirtualHost>
(Remplacez le [ at ] par un @ naturellement)

Sauvegardez et quittez.
Explications


ServerAdmin S'il y'a un problème, le serveur écrit un message à cette adresse.

ServerNameLe nom doit domaine que vous souhaitez associer au serveur. Il doit être dans les DNS du serveur.Si aucun nom n'est spécifié, alors le serveur tente de déduire un nomen procédant à un "lookup inverse" à partir de l'adresse IP.

ServerAliasCette instruction permet d'ajouter d'autres domaines ou sous domaines qui prendront en compte le même fichier vHost.

DocumentRootLe répertoire sur lequel apache redirigera les addresses spécifiées plus haut.

DirectoryCette instruction permet d'ajouter des options et règles au répertoire web.Les options:-Indexes -> Permet de désactiver le listing des fichiers si un utilisateur entre le nom d'un dossier sans index dans votre répertoire web.FollowSymLinks -> Active le suivis des liens symboliques dans ce répertoire.MultiViews -> Permet de dire à apache de chercher s'il existe des fichiers du même nom dans le répertoire en cas d'erreur 404.

 

Notre vHost est disponible mais il n'est pour le moment pas activé. Pour l'activer, il faut créer un lien symbolique dans le répertoire des sites activés d'apache:
Code:
root [/etc/apache2/sites-enabled] > a2ensite lafermeduweb.net
Et enfin, comme apache2 n'a pas pris en compte nos modifications, on le restart:
Code:
root [/etc/apache2/sites-enabled] > apache2 -k restart
C'est l'heure du test !

Tapez votre nom de domaine dans votre navigateur web favoris:

It works!

Même résultat que tout à l'heure, le domaine pointe bien sur le serveur mais pas sur le bon répertoire.

C'est normal, il faut commenter une ligne dans le vHost par défaut:
Code:
root [/etc/apache2/sites-enabled] > nano /etc/apache2/sites-enabled/000-default 
Code:
#RedirectMatch ^/$ /apache2-default/
Ajoutez un # devant RedirectMatch (Ligne 17) pour ne pas être redirigé systématiquement sur le répertoire apache2-default/

On re reboot !
Code:
root [/etc/apache2/sites-enabled] > apache2 -k restart
Et on re test:

Bienvenue sur mon nouveau site!

Ca marche !

 
Conclusion de cette partie 1


Votre serveur web est opérationnel !

Dans le prochain épisode, nous verrons comment installer et configurer PHP5 et MySQL.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut