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:
Dans le fichier, décommentez ou rajoutez les lignes suivantes:
Elles nous permettront d'utiliser des raccourcis, et modifiez aussi le 'PS1'
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:
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
puis
répondez oui si il vous ai demandé d'installer les dernières versions des logiciels et enfin
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.
Ajoutez ou décommentez les lignes suivantes:
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:
Installez les librairies de bases:
Installation et configuration d'Apache 2
Commençons déjà par installer apache2, le serveur web.
Répondez oui pour installer les packages dépendants:
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:
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:
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.
Ajoutez la ligne suivante en spécifiant les types de fichier index à prendre en compte:
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:
Sauvegardez et quittez.
Dans la version 2.2 d'apache, il faut activer le module userdir, tapez:
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:
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.
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.
Puis mettez une balise de titre juste pour tester si la redirection du domaine est bien effectuée.
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):
Et entrez les lignes suivantes:
(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:
Et enfin, comme apache2 n'a pas pris en compte nos modifications, on le 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:
Ajoutez un # devant RedirectMatch (Ligne 17) pour ne pas être redirigé systématiquement sur le répertoire apache2-default/
On re reboot !
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.
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
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'
Code:
PS1="\u [\w] > "
Il faut que la console actuelle prenne en compte nos modifications, tapez la commande suivante:
Code:
[i]root$[/i] source .bashrc
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
Code:
root [~] > apt-get upgrade
Code:
root [~] > apt-get dist-upgrade
Ensuite, nous allons renseigner les sources des dépôts que l'on va utiliser plus tard.
Code:
root [~] > nano /etc/apt/sources.list
Code:
deb http://ftp.easynet.be/ftp/debian/ etch main non-free contrib
deb http://security.debian.org/ etch/updates main contrib non-free
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
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
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
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
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
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
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
Dans la version 2.2 d'apache, il faut activer le module userdir, tapez:
Code:
root [/var/www] > a2enmod userdir
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
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
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
Code:
<h1>Bienvenue sur mon nouveau site !</h1>
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
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>
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
Code:
root [/etc/apache2/sites-enabled] > apache2 -k restart
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/
On re reboot !
Code:
root [/etc/apache2/sites-enabled] > apache2 -k restart
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.