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

serveur dédié ftp

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 bvek1.prof@gmail.com
	# 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)

116 commentaires ont été ajoutés, ajoutez le vôtre.

Vous pouvez laisser un commentaire, cependant je ne peux pas vous garantir qu'il sera modéré rapidement ou qu'il aura une réponse, faute de temps pour m'occuper du site.

  1. Adrien

    Hello,
    Je tenais vraiment à sincèrement te remercier pour ce tutoriel. Je comprenais rien aux DNS, je n’arrivais pas à faire pointer mon domaine sur mon serveur kimsufi. Maintenant, grâce à toi, c’est du passé, je viens de réussir et tout marche niquel (en copiant tes configs) !

    Encore merci,
    Bye 🙂

    • Adrien

      J’avais juste un petit problème avec le pare-feu iptables, qui empechait la manip. Donc pour ceux qui ont le même problème, voici la solution :

      Tapez dans le terminal de votre serveur :
      sudo iptables -A INPUT -p tcp -m tcp –dport 53 -j ACCEPT
      Puis :
      sudo iptables -A INPUT -p udp -m udp –dport 53 -j ACCEPT

      Grâce à ceci, le port 53 (DNS) sera accepté (enfin je crois que ça sert à ça) et il n’y aura plus de problèmes.

  2. antoni

    Bonjour, merci pour se tuto très bien expliquer. Je rencontre un problème à l’étape des « DNS » quand je souhaite aller dans le dossier bind il n’existe pas. Je pense avoir dû louper une étape mais je ne vois pas laquelle ! Pouvez vous m’aider s’il vous plait.
    Merci d’avance !

  3. SqueeZen

    Bon allez, je me lance.
    Salut !

    J’ai une coquille quelque part, mais je sèche après avoir relu et refait toutes les manipulation de ce tutoriel.

    Mon serveur est un Kimsufi chez OVH, et mes noms de domaines sont acheté chez eux aussi.

    Le premier : neopia.fr fonctionne très bien, ça redirige sur /home/neopia/www mais par contre le second : squeezen.fr fait des siennes. Il me retourne la page It Works d’Apache alors que je veux qu’il aille sur /home/squeezen/www …

    Je ne comprends pas pourquoi, tout est configuré à l’identique par rapport à neopia.fr ! As-tu une idée ? Merci.

  4. GhostLeon

    Je me permet de réécrire car une derniere question me vient a l’esprit : quand j’étais en mutu, quand j’installais mes scripts ou cmd, je rentrais mes identifiants mysql mais la ca va donner quoi a ce niveau la ! Serveur ? ip du dédié ? Utilisateur/mdp : utilisateur du mysql ou celui qu’ont utilisé pour se connecter a phpmyadmin ? Nom de la base ?

    merci d’avance

    • Madrzejewski Alexis

      Au niveau des identifiants de connexion pour votre base de données, l’utilisateur et le mot de passe changera probablement si vous ne remettez pas les mêmes. Par contre, ça reste toujours en « localhost » puisque la base de données est sur le même serveur, que le serveur web. Au niveau de la base, ça dépend du nom que vous lui donné aussi (dans phpmyadmin)

  5. GhostLeon

    Bonjour,
    Je me permet d’écrire ici car je me pose une question a la fin de ce tuto. Dans le fichier db.nomdusite, on a les lignes suivantes :

    www IN A xx.xx.xx.xx

    l’ip la, c’est quoi ? l’ip du serveur dédié ? ou non ? moi elle commence pas par 84 comme vous ou sur le tuto d’un de vos concurrents, elle donne le truc suivant : 5.13*.1*7.***. C’est cet ip que je dois mettre car j’ai laissé celle qu’il y avait dans votre tuto 84…. et quand j’ai fait les differents tests que vous proposiez derriere la manip, ca fonctionnait très bien

    En tout cas, bravo pour vos tutos très clair, parfois, c’est compliqué d’écrire tout en suivant la vidéo par contre lol

    Merci d’avance

    • GhostLeon

      Le temps que j’y suis je me permet de vous poser mes petites questions que j’ai a l’issue de ce tuto. Perso, je suis un peu novice (j’ai deja eu pas mal de linux donc je suis pas non plus perdu), mon serveur est la pour héberger une chaine de site (1 wordpress, 3 statique).

      1 – J’avais un mutualisé avant chez ovh, j’ai fait les manip pour le domaine principal, je dois donc attendre 48h (modif dns) pour me lancer dans la creation du serveur mail que vous proposez dans le tuto suivant ? ou non ?

      2 – pour mes autres domaines, je dois donc faire les étapes suivantes : virtual host (je trouve votre technique d’un user par ndd très simple et sur) + /named.conf.local ou j’ajoute la zone + le db du nom du site, c’est tout ? pour modifier le dns sur ovh, je dois faire ses étapes ou je peux le faire avant ?

      3 – dans le 1er tuto, vous disiez que vous donneriez le tuto pour mettre en couleur comme vous quand on modifie un fichier via vi. Or, je n’ai pas trouvé ce tuto qui pourtant m’interesse énormément (je fais pas mal d’erreurs betes qui pourraient etre éviter via le jeu de couleurs

      4 – Concernant mon site wordpress, si j’ai quitté le mutu pour le r4g, c’est a cause d’un problème au niveau des connexions simultanés, quel est le fichier a modifier pour régler cela ? j’avais trouvé un tuto la dessus mais je l’ai totalement perdu.

      Merci d’avance de votre aide

      • Madrzejewski Alexis

        Re Bonjour GhostLeon,

        1) Vous pouvez commencer à pré-configurer le serveur de mail avant la propagation des DNS. Il faut juste garder en tête que la migration n’est peut être pas définitif et donc peut engendrer des problèmes. Par conséquent, en cas de bug avec les emails, il faut attendre les 48h pour réellement tester.

        2) C’est à peu près toutes les étapes pour ajouter un site, oui. Pour l’étape des DNS vous pouvez préconfigurer, mais vous pouvez également utiliser les DNS mis à disposition par OVH, chose que j’ai oublié de dire dans mon tuto (je ne le savais pas à l’époque). En fait, on peu se passer de l’installation du serveur DNS, puisque OVH en propose un gratuitement aux clients. Pour cela, il faut aller dans le panel, dans l’onglet DNS et « Zone DNS ». Vous avez accès a votre zone DNS comme dans le tutoriel, il suffit généralement de modifier la ligne de type A par l’adresse de votre serveur.

        3) J’ai fait un tutoriel sur VI ici : https://www.tutoriels-video.fr/apprendre-a-utiliser-lediteur-vi/

        4) Pour les connexions simultanées, il faut regarder la configuration de la base de données et éventuellement optimiser celle d’apache si ça coince au niveau des workers.

    • Madrzejewski Alexis

      Bonjour GhostLeon,

      C’est l’adresse IP du serveur que vous possédez. La ligne « WWW IN A ip » permet de dire que le sous domaine « www.votre_domaine.tld » est hébergé sur le serveur possédant l’ip renseigné plus loin.

      Ensuite, l’adresse IP peut très bien commencé par 5.13 ou autre, ce n’est absolument pas un problème. Pour faire (très simple car il y a pas mal d’exceptions et les puristes vont s’arracher les cheveux en voyant ça), les adresses IP vont de 0.0.0.0 à 255.255.255.255.