Serveur Web LINUX Ubuntu
Serveur Web LINUX Ubuntu
Serveur Web LINUX Ubuntu
Se connecter en r oot
Sous Debian, root correspond à l'administrateur du serveur, il est le seul à pouvoir manipuler
celui-ci. Pensez donc à bien protéger son mot de passe.
On commence par mettre à jour la liste des fichiers disponibles dans les dépôts APT présents
dans le fichier de configuration /etc/apt/sources.list . L'exécuter régulièrement est une
bonne pratique, afin de maintenir à jour votre liste de paquets disponibles.
apt-get update
L'option upgrade met à jour tous les paquets installés vers les dernières versions.
apt-get upgrade
I nstallation d'Apache 2
Il nous faut installer un serveur HTTP qui va s'occuper d'afficher nos différentes pages. Pour
cela, je vous propose d'installer l'un des serveurs les plus utilisés et les plus connus : Apache.
Nous installerons ici sa version 2.
Pour vérifier que l'installation s'est bien effectuée, entrez l'adresse suivante dans votre
Vous devriez obtenir le résultat suivant :
It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.
I nstallation de PHP 5
Actuellement, notre serveur peut nous afficher des pages statiques au format HTML. La
plupart des sites que vous voudrez installer disposeront d'une partie dynamique. C'est
pourquoi nous poursuivons par l'installation de PHP 5 sur le serveur.
PHP est très très souvent couplé à un système de base de données : Mysql. Nous installons ici
la dernière version de Mysql-server. Vous verrez ci-après que nous allons également installer
PHPMyAdmin. Il s'agit d'un script PHP qui permet de gérer ses bases de données Mysql de
facon très simple.
mysql -p
mot de passe
Exit
Installation de PHPMyAdmin :
ln -s /usr/share/phpmyadmin /var/www/phpmyadmin
http://IP_DE_VOTRE_SERVEUR/phpmyadmin/
Si le formulaire ne s'affiche pas et que vous avez une erreur 404, il se peut que ça vienne du
fichier /etc/apache2/sites-available/000-default.conf. Dans ce cas modifiez DocumentRoot
/var/www/html par DocumentRoot /var/www/ puis relancez le serveur apache,
et réactualisez http://IP_DE_VOTRE_SERVEUR/phpmyadmin/ .
I nstallation du FTP (VSFTPD)
Avoir un site disponible sur le net, c'est bien. Pouvoir y mettre des fichiers, c'est mieux ;). Et
c'est le but de VSFTPD qui est un serveur FTP très sécurisé.
Pour commencer, il faut installer un serveur web au sens premier. C'est lui qui va nous
permettre d'interpréter nos pages HTML, PHP, etc. Apache 2 est le serveur http le plus utilisé
sur les serveurs. Il dispose d'un bon niveau de sécurité et de beaucoup de documentations
disponibles sur le net.
D'autre part, il permet de gérer des sites virtuels. Et c'est de cette manière que nous allons le
configurer. En effet, le but étant de disposer de plusieurs sites sur notre serveur, il nous faut
pouvoir les contacter directement avec une URL propre. Notre serveur ne dispose
évidemment pas d'une adresse IP pour chaque site installé. Ce serait beaucoup trop complexe
du point de vue physique à mettre en place. Et surtout, avec le système d'IPV4 utilisé
actuellement, c'est impensable. Pour la petite histoire, le système IPV4 utilise 4 nombres de 0
à 255 sous la forme xxx.xxx.xxx.xxx. Cette série de nombres représente de manière unique
chaque ordinateur connecté physiquement à Internet.
Certaines plages IP sont réservées pour des réseaux locaux (192.168.x.x ou 10.x.x.x par
exemple). Mais ce souci va être prochainement résolu avec l'utilisation de l'IPV6 qui est en
train de s'implémenter. Cette nouvelle notation permet de passer de 2puissance32 à
2puissance128 IP différentes. Ce qui permettra d'en attribuer plusieurs à un même serveur,
dans le futur.
Comme actuellement, c'est le protocole IPV4 qui est le plus utilisé, nous ne disposons en
conséquence qu'une seule adresse IP pour 10 ou 100 sites à héberger sur notre serveur.
Lorsqu'une requête HTTP est envoyée à notre serveur, le nom de domaine est transformé en
adresse IP. La seule façon de différencier une demande venant de site1-cpnv.com ou de site2-
cpnv.com, qui renvoient la même IP, passe par l'en-tête http, qui elle contiendra toujours le
nom de domaine initialement demandé.
règles afin de trouver dans quel répertoire il doit se diriger. C'est là que la gestion des
virtualhosts va intervenir. En conséquence, nous créerons une entrée pour chaque site hébergé
sur notre serveur. Cette entrée contiendra le domaine prévu, et le répertoire de redirection.
Pr é-r equis
Une fois que le serveur est installé de base, nous allons créer et configurer nos espaces
d'hébergements. Tout d'abord, ce tutoriel part des principes suivants :
# /etc/init.d/apache2 restart
# nano /etc/apache2/envvars
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
# nano /etc/apache2/mods-enabled/dir.conf
DirectoryIndex index.html index.php index.xhtml
# nano /etc/apache2/mods-available/userdir.conf
UserDir public_html
L'exécution en php est désactivée par défaut avec ce module. Pour changer ça et éviter que le
navigateur télécharge le code php directement, éditer le fichier nano /etc/apache2/mods-
[..]
# <IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_value engine Off
# </Directory>
# </IfModule>
[..]
/etc/init.d/apache2 restart
I nstallation des vir tualhosts
On va maintenant créer nos hôtes virtuels. Par défaut, je les appellerai test1.com et test2.com.
A vous de mettre les noms que vous désirez. Mais avant de s'attaquer aux utilisateurs, on
commence par modifier le squelette de la création des nouveaux users. L'avantage ? Ne pas
avoir besoin à chaque fois de devoir créer le répertoire public_html et logs quand on crée un
nouvel utilisateur, mais aussi d'avoir directement une page d'accueil.
# mkdir /etc/skel/public_html
# mkdir /etc/skel/logs
# echo " <h1>Nouvel espace web crée</h1> " >
/etc/skel/public_html/index.html
Une fois le squelette créé, on peut créer un nouvel utilisateur (ici zone-web) :
# nano /etc/apache2/sites-available/zone-web.ca
Et on y enregistre :
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName zone-web.ca
ServerAlias www.zone-web.ca
DocumentRoot /home/zone-web/public_html/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/zone-web/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /home/zone-web/logs/error.log
LogLevel warn
</VirtualHost>
On valide et on ferme le fichier. On rend le domaine créé disponible.
# ln -s /etc/apache2/sites-available/zone-web.ca /etc/apache2/sites-
enabled/zone-web.ca
# apache2ctl -t
En savoir plus
apache2
Maintenant que nous avons un site serveur web opérationnel, et la possibilité de créer nos
bases de données, il devient nécessaire de mettre nos fichiers sur le serveur. Pour cela, nous
installons VSFTPD. C'est un serveur FTP très sécurisé (Very Secure File Transfert Protocol
Daemon).
VSFTPD dispose de plusieurs styles de paramétrage de base. Là encore, étant donné que nous
souhaitons pouvoir disposer de plusieurs comptes FTP par domaine, et notamment d'avoir des
comptes FTP qui pointent sur des sous-domaines, nous utiliserons le paramétrage par
utilisateur virtuel.
Pour ce faire, nous allons utiliser une base de données de type Berkeley. Il s'agit d'une base de
type non-SQL. Elle n'est pas prévue pour être interrogée comme Mysql ou SQL server. En
fait, il s'agit d'une table de hachage. Chaque enregistrement ne sera constitué que d'un login et
d'un mot de passe. Ce type de base de données est indexé, extrêmement rapide et simple à
mettre en œuvre. L'utilisation de ce type de base de données est obligatoire pour l'utilisation
d'une identification de type PAM.
Pour le principe, nous ne définissons qu'un seul utilisateur UNIX à notre serveur FTP.
Lorsque l'on se connecte avec un utilisateur, le programme vérifie dans notre base de données
si celui-ci existe, et si le mot de passe correspond. A partir de là, il va chercher les paramètres
concernés (chroot, droits spécifiques) et renvoit le répertoire concerné.
Grâce au chroot, il n'y a aucun souci de sécurité, car le répertoire est considéré comme étant
un répertoire racine, il n'est donc pas possible de remonter la hiérarchie. Ce point est
important du point de vue sécuritaire, car chaque connexion FTP utilise exactement le même
Pour créer un nouvel utilisateur, il suffit de lui créer une entrée dans la base Berkeley, et un
fichier de configuration personnel.
Pr épar ation
On commence par préparer la configuration en créant le répertoire qui contiendra tous nos
fichiers :
# mkdir /etc/vsftpd
On va devoir modifier la configuration de VSFTPD. Pour cela, on effectue une sauvegarde.
Cela permettra de revenir en arrière en cas de souci :
# cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
M odification de vsftpd.conf
Pour pouvoir utiliser nos utilisateurs virtuels, nous devons reconfigurer le fichier
vsftpd.conf
# rm /etc/vsftpd.conf
# nano /etc/vsftpd.conf
On va maintenant chrooter nos utilisateurs dans leur répertoire respectif. Pour cela, on crée le
répertoire qui sera utilisé pour contenir nos différents fichiers par utilisateur. Et on crée le
fichier pour chaque utilisateur dans notre base de données.
# mkdir /etc/vsftpd/vsftpd_user_conf/
# nano /etc/vsftpd/vsftpd_user_conf/user1
Et on y ajoute :
anon_world_readable_only=NO
local_root=/home/test1/public_html
write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
On enregistre et on ferme.
# /etc/init.d/vsftpd restart
Et il ne nous reste plus qu'à nous connecter à notre compte FTP en utilisant :
IP: ip du serveur
login: user1
password: pass1
Et voilà. Un petit test pour vérifier que tout fonctionne, et c'est terminé ;).
Dans le cas où vous ne pouvez pas uploader de fichiers, c'est que les droits ne sont pas bons.
Vérifiez bien que le répertoire /home/test1/public_html ait les droits www-data:www-data
pour propriétaire et groupe :
Pour ajouter un utilisateur, ajoutez le login et son mot de passe dans login.txt puis exécuter :
# /etc/init.d/vsftpd restart
I ntr oduction
Le serveur DNS permet de faire le lien entre le nom de domaine et l'adresse IP de votre
serveur. Votre registrar (OVH par exemple) vous permet de faire ce lien. Lorsque l'utilisateur
entrera l'adresse www.test1.com, le serveur DNS redirigera vers l'adresse IP de notre serveur.
Le serveur regardera ensuite le nom de domaine qui l'a mené jusqu'à lui (www.test1.com dans
notre cas), en connaissant cette information, les VirtualHost d'apache redirigeront vers le
I ndiquez les ser veur s DNS à utiliser (OVH)
Normalement, lorsque vous venez d'acheter votre nom de domaine, cette information est déjà
pré-remplie.
I ndiquez l'adr esse I P de votr e ser veur
Savoir créer un sous domaine est aujourd'hui quasi indispensable pour quinconce souhaite
administrer son propre serveur.
Renseigner apache
# nano /etc/apache2/sites-available/test1.com
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.test1.com
ServerAlias test1.com
DocumentRoot /home/test1/public_html/
<Directory /home/test1/public_html/>
Options -Indexes FollowSymLinks MultiViews
</Directory>
ErrorLog /home/test1/logs/error.log
LogLevel warn
CustomLog /home/test1/logs/access.log combined
ServerSignature Off
</VirtualHost>
<VirtualHost *:80>
ServerName admin.test1.com
DocumentRoot /home/test1/public_html/sd_admin/
</VirtualHost>
Vous pouvez créer le dossier /sd_admin en utilisant FTP.
# ln -s /etc/apache2/sites-available/test1.com /etc/apache2/sites-
enabled/test1.com
# apache2ctl -t
# /etc/init.d/apache2 restart
Retournons chez notre registrar (OVH par exemple), pour lui indiquer que nous souhaitons
utiliser un sous-domaine :
Ajoutez un nouveau champ CNAME qui pointe vers le domaine principal, apache se chargera
du reste :