Installation du serveur FTP et ajout d’un nom de domaine sur un serveur dédié

serveur dédié ftp

Sommaire

Dans ce tutoriel consacré aux serveurs dédiés (cliquez ici pour le sommaire), nous allons voir comment installer un serveur FTP avec proftpd, comment faire pointer un nom de domaine sur un serveur dédié en configurant les DNS avec bind et comment configurer apache pour ajouter un site internet.

Ce tutoriel est sans doute l’un des plus compliqués de la série sur les serveurs dédiés.
Pour résumé simplement, on va ajouter un site internet sur notre serveur dédié. Pour ajouter un site, on a besoin de configurer le serveur DNS pour que le nom de domaine soit bien géré par notre serveur dédié et configurer apache pour lui dire « si tu reçois une requête pour ce nom de domaine, voilà où sont situé les fichiers nécessaires et voilà les règles à appliquer ».

Avant de commencer la vidéo, je vous recommande de lire (en diagonale) la page wikipedia sur les serveurs DNS pour que vous puissiez vous faire une idée de ce que c’est.


Vous pouvez télécharger la vidéo ou la regarder sur Youtube ou Dailymotion

Comme d’habitude, un petit résumé de la vidéo avec les différents codes utilisés s’impose.

Installation du serveur FTP

L’installation du serveur FTP est l’étape la plus simple de la vidéo, il suffit de faire un « apt-get install proftpd » et de choisir « indépendamment » (standalone) lors de l’installation pour avoir un serveur FTP fonctionnel.

Niveau configuration, voici ce que je recommande :

/etc/proftpd/proftpd.conf

# On est pas encore en IPV6 mais ça risque de changer sous peu
UseIPv6 Off
# Désactive l'identification distante
IdentLookUps Off
# Cache les liens symboliques
ShowSymLinks Off
# Enfermer les utilisateurs dans leurs homes (~) respectives (ou ~/www plutôt)
DefaultRoot ~/www
# Autoriser la reprise d'upload
AllowStoreRestart On
# Autoriser la reprise de download
AllowRetrieveRestart On

N’oubliez pas de faire un « /etc/init.d/proftpd restart » et vous pouvez tester en vous loguant avec un utilisateur système valide à partir d’un client FTP comme FileZilla par exemple.

Si vous avez des soucis avec l’envoi de fichier par FTP, c’est sans doute un problème de droits. La plupart du temps, c’est qu’un dossier appartient à « Root », vous pouvez changer cela avec chown et chgrp.

Configuration d’apache : les virtuals hosts

Si l’on souhaite ajouter un site internet sur notre serveur, il faut configurer apache pour qu’il sache quoi faire (dans quel dossier aller chercher les fichiers du site, les règles qu’il doit appliquer, ce genre de choses). Je vous recommande de suivre une règle simple : un nouveau site sur notre serveur = un nouveau fichier « virtual host » dans « /etc/apache2/sites-available/nom_du_site« .

Au niveau de la configuration, c’est plutôt simple puisque la plupart des fichiers virtual hosts se ressemblent, à force ce n’est plus que du copier/coller. Voici un exemple de virtual host :
/etc/apache2/sites-available/tutorielvideo.fr

<VirtualHost *:80>
# Adresse email à contacter en cas de problemes
ServerAdmin [email protected]
# Nom de domaine avec les www
ServerName www.tutorielvideo.fr
# Les différents alias du site, généralement le NDD sans les www
ServerAlias tutorielvideo.fr
# La où sont stocké les données du site
DocumentRoot /home/tutorielvideo/www
<Directory />
# Des options : ici suivre les liens symboliques
Options FollowSymLinks
# Autoriser l'override, autrement dit les .htaccess
AllowOverride All
</Directory>

<Directory /home/tutorielvideo/www>
# Encore des options : multiviews peut être pratique
# Si on essaye d'accéder à site.com/index
# Et que index n'existe pas, le serveur va rechercher index.*
# Autrement dit : index.php, index.html etc...
Options FollowSymLinks MultiViews
# Autorise les htaccess
AllowOverride All
Order allow,deny
allow from all
</Directory>

# Log pour les erreurs
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
# Log des connexion au site
CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Je vous conseille de reprendre mon fichier et de faire à peu près pareil pour tous vos sites. Surtout n’hésitez pas à regarder la documentation d’apache pour découvrir de nouvelles options intéressantes.

Au passage, j’en profite pour dire que j’ai une configuration assez particulière en ce qui concerne les sites. Pour moi, un site sur mon dédié = un utilisateur.
C’est assez pratique et intéressant au niveau de la sécurité (un site = un utilisateur = un compte ftp différents par sites, des répertoires séparés et cloisonné). Par contre, avec apache vous devez utiliser le mode userdir et modifier le userdir.conf (dans /etc/apache2/mods-available) pour remplacer « public_html » par « www ». Enfin bref, c’est expliqué dans la vidéo, c’était juste une parenthèse pour ceux qui souhaite copier/coller ma configuration.

Configuration des DNS avec Bind9

Pour faire pointer un nom de domaine sur notre serveur dédié, on doit configurer le serveur de DNS bind. On distingue 2 grandes étapes pendant cette configuration : créer la zone dans /etc/bind/named.conf.local et créer le fichier de configuration du site dans /etc/bind/db.nomdusite.

Si c’est la première fois que vous configurez vos DNS, vous devez également modifier le fichier /etc/bind/named.conf.options pour remplacer le « listen-on{127.0.0.1;}; » par « listen-on{any;}; » sinon les requêtes ne parviendront pas au serveur.

Exemple de zone dans : /etc/bind/named.conf.local

zone "tutorielvideo.fr" {
type master;
file "/etc/bind/db.tutorielvideo.fr";
allow-transfer {213.186.33.199;};
allow-query{any;};
notify yes;
};
  • type master : indique qu’il s’agit du serveur dédié maitre (pour un dédié secondaire, on aurait mis « slave » (esclave))
  • allow-transter :l’adresse IP du serveur DNS secondaire, elle vous est fourni par votre hébergeur.
  • allow-query : autorise tout le monde à interroger le serveur
  • notify : envoie une notification aux esclaves en cas de mise à jour
  • file « /etc/bind/db.tutorielvideo.fr » : indique le fichier qui contient les informations sur le nom de domaine et les sous domaines.

Exemple d’un fichier de zone : /etc/bind/db.nomdedomaine

; tutorielvideo.fr
$TTL 3600
@ IN SOA ks383544.kimsufi.com. root.tutorielvideo.fr. (
2011020906 ; SERIAL
3600; REFRESH
15M; RETRY
1W; EXPIRE
600 ) ; Negative Cache TTL
;
; NAMESERVERS
;
tutorielvideo.fr. IN NS ks383544.kimsufi.com.
tutorielvideo.fr. IN NS ns.kimsufi.com.
;
; Nodes in domain
;
www IN A 94.23.254.44
mail IN A 94.23.254.44
ns1 IN A 94.23.254.44
smtp IN A 94.23.254.44
pop IN A 94.23.254.44
ftp IN A 94.23.254.44
imap IN A 94.23.254.44
tutorielvideo.fr. IN A 94.23.254.44
tutorielvideo.fr. IN MX 10 mail.tutorielvideo.fr.
;
; subdomains
;
*.tutorielvideo.fr. IN A 94.23.254.44
  • $TTL : si on traduit, c’est la durée de vie, autrement dit le temps max que les informations peuvent rester en cache (ici 3600s = 1h).
  • @ : ça fait référence au domaine de base que l’on est en train d’écrire (ici tutorielvideo.fr)
  • IN : c’est la classe, on le retrouve sur chaque ligne et sur internet c’est la seule option possible (autrement dit, on met toujours IN)
  • SOA : cet enregistrement sert à indiquer le serveur de nom primaire, l’adresse email à contacter en cas de soucis (le @ remplacer par un .) et des paramètres d’expiration
  • SERIAL : c’est une sorte de timestamp sous le format « yyyymmddnn », à changer à chaque modification du fichier pour indiquer une mise à jour
  • Refresh : indique au bout de combien de temps les serveurs esclaves doivent rafraîchir leurs caches
  • Retry : délai en seconde que les serveurs doivent attendre avant de faire une deuxième requête si la première a échoué
  • Expire : le délai en seconde au terme du quel la zone est considérée comme expiré si les serveurs esclaves n’arrivent pas à contacter le serveur primaire
  • Negative cache : durée de vie minimale de chaque enregistrement présenté plus bas dans le fichier

Ensuite on déclare tous les enregistrements. De manière globale, voici comment fonctionne un enregistrement (= 1 ligne)

  1. En premier on a le nom de domaine concerné, par exemple pour www.tutorielvideo.fr on écrit simplement www. La même chose avec ftp.tutorielvideo.fr, on écrit juste FTP. Dans mon cas vous remarqez que la liste est plutôt longue, mais ce n’est pas obligatoire.
  2. Ensuite on peut ajouter un TTL, chose que je n’ai pas faites ici.
  3. On ajoute le mot clé IN, dans tous les cas.
  4. On précise le type d’enregistrement (et c’est là que ça se complique). Il y a le type A qui permet d’associer une IP à un domaine, le type MX pour définir les serveurs de mail, le type CNAME pour faire des alias.
  5. En dernier, la valeur. C’est généralement une adresse IP ou un nom de domaine. Pour les types A c’est une adresse IP.

Voilà pour la configuration de bind sur notre serveur dédié. C’est probablement la chose la plus compliquée à comprendre alors je vous recommande ces liens qui vous donneront des infos supplémentaires :

  • La page Wikipedia des DNS : c’est une de mes sources pour ce tutoriel 🙂
  • Un tutoriel sur le siteduzero : également une de mes sources, simple à comprendre pour les débutants
  • Un article de SkyMinds : c’est un peu grâce à lui que j’ai réussi à faire fonctionner mes DNS la première fois 🙂

Maintenant que nous avons configurer bind, je vous propose quelques astuces pour vérifier vos fichiers de configuration. Premièrement, lorsque vous avez fini, placez vous dans le répertoire /etc/bind et lancez la commande « named-checkconf -z » qui se chargera de vérifier vos fichiers.

Je vous recommande également de lancer la commande « named-checkzone nomdedomaine. db.nomdedomaine » pour vérifier vos zones. N’oublier pas de redémarrer bind une fois terminé avec « /etc/init.d/bind9 reload« .

Une dernière vérification, lancez un terminal (côté client cette fois) et essayez « nslookup nomDeDomaine adresseDuServeur » et si tout est ok vous devez avoir votre nom de domaine suivi de l’adresse ip de votre serveur. Si c’est bon, vous pouvez passer à la configuration côté OVH.

Manipulation à faire sur le panel d’OVH

Lorsque vous avez fini de configurer votre serveur DNS sur le serveur, vous devez faire quelques manipulations dans votre panel OVH. La première chose à faire, c’est d’ajouter le nom de domaine que vous souhaitez héberger sur votre dédié dans le DNS secondaire d’ovh. Pour faire ça, vous devez sélectionner votre serveur dédié, onglet services, puis DNS secondaire. Vous cliquez sur « nouveau domaine » et vous précisez le nom de domaine avec l’ip de votre serveur. À la fin, vous devez avoir un truc qui ressemble à ça :


Ensuite, vous devez sélectionner le domaine que vous souhaitez mettre sur votre serveur dédié, cliquer sur « Domaine et DNS » puis « Serveur DNS » et enfin modification. En DNS primaire vous mettez votre serveur dédié et en secondaire, si vous avez un Kimsufi, ns.kimsufi.com (si vous avez une autre offre, renseigner vous). Vous devez avoir un truc comme ça :

Ensuite vous validez et patientez pendant 10-15 minutes. Si vous recevez un email vous confirmant que ça c’est bien passé, vous devez attendre encore 48h (ou moins si vous êtes chanceux) le temps que l’info se propage. Si vous avez une erreur, vérifier votre configuration de bind, surtout ce fichier /etc/bind/named.conf.options, regarder la ligne « listen-on » qui doit être sur « any » et non pas « 127.0.0.1 ».

Voilà, le tutoriel est enfin terminé, j’espère que vous avez appréciez et que ça fonctionne de votre côté. Si vous avez des questions vous pouvez laisser un commentaire ci dessous (mais par pitié, lisez de la doc et faites des recherches avant, je suis surchargé de questions …). N’hésitez pas à partager cette page sur Facebook/Twitter/Google+ et rejoingez la page officiel du blog sur Facebook (merci !).

(Image à la une : Image du kit online)