[Tutoriel Linux]
Créer un serveur HTTP/FTP
Salut tout le monde! 
Certains se demandaient comment créer un serveur personnel afin de pouvoir faire partager leurs créations.
Croyez-moi, je suis passé par-là et j'ai mis du temps à comprendre et c'est aussi pour partager mes fichiers que j'ai monté mon propre serveur.
C'est pourquoi après beaucoup de questions de la part de certaines personnes que je prends finalement la décision de vous l'expliquer pour en monter un rapidement sur une distribution Linux. Ici je traiterai le sujet sur Ubuntu étant donné la simplicité de cette distribution et de sa popularité. Elle s'applique également bien à Debian ainsi qu'aux différentes variantes d'Ubuntu (Kubuntu, Xubuntu, Ubuntu Studio,...).
Ensuite pourquoi Linux? Simplement que sa charge est moins importante que sous Windows, qu'il est plus facile de gérer les permissions des arborescences, de sa stabilité et de sa sécurité (à condition de bien la gérer). 
Allez on enchaîne...
Ce qu'il vous faut avant tout:
Une distribution Linux
Une connexion internet qui marche
Un routeur avec les ports 80 et 21 ouverts et redirigés sur la machine-serveur
L'activation des dépôts additionnels
Chapitres:
1. Choix du serveur
2. Serveur HTTP
2.1. Installer le serveur LAMP
2.2. Configuration
2.3. Astuces
2.4. Problèmes rencontrés
3. Serveur FTP
3.1. Installation
3.2. Configuration
3.3. Astuces
3.4. Problèmes rencontrés
4. Redirection DynDNS
4.1. Inscription
4.2. Installation du client DynDNS
4.3. Astuces
1. Choix du serveur
Vous n'êtes pas obligé(e) d'installer les deux serveurs proposés. Pour cela, je vais vous aiguiller rapidement.
Si vous souhaitez simplement faire un partage de fichiers, réduire la charge de l'ordinateur et de permettre une connexion à peine
plus rapide, optez pour le FTP. De ce fait, pas d'interface, une simple liste de dossiers et fichiers sera affichée sur le navigateur du client et pas de chichis pour télécharger.
Une autre raison de le choisir est que vous pouvez grâce à ce protocole accéder à vos documents privés depuis l'extérieur ce qui peut être utile. 
En revanche, si vous aimez coder des beaux sites, que vous souhaitez avoir un serveur PHP pour testez vos sites, que vous souhaitez aussi distribuer des fichiers, ou ajouter une interface plus sympathique à la navigation de vos fichiers, optez pour le HTTP.
Mais vous pouvez également installer les deux.
Exemple, pour les clients qui veulent avoir un accès à bas débit ou rapide, ils pourront utiliser le FTP.
Les autres qui veulent avoir accès à vos sites pourront utiliser le HTTP. Il ne faut pas oublier que le HTTP peut aussi vous donner un accès direct comme le FTP si aucun site n'est installé.
2. Serveur HTTP
2.1. Installer le serveur LAMP
Nous allons maintenant installer un serveur LAMP.
Qu'est-ce qu'un serveur LAMP? C'est un serveur Linux Apache MySQL PHP donc il n'est pas difficile d'en deviner les fonctionnalités proposées. De plus c'est un serveur assez standard et qui peut directement être installé grâce à Ubuntu Server. Mais ce dernier manque d'une interface graphique qui se révèle parfois forte utile.
Saviez-vous que Wikipedia se sert également de ce type de serveur? Bref, et si on passait à l'installation proprement dite?
Ouvrez une console et tapez ceci:
Code :
- sudo apt-get install apache2 mysql-server php5
|
Après avoir attendu vous voici avec un serveur HTTP déjà utilisable. Vérifiez tout de même son fonctionnement sous un navigateur comme Firefox en tapant l'adresse boucle 127.0.0.1 dans la barre d'adresse.
2.2. Configuration
Voici votre serveur tout beau tout neuf! Certes! Mais où est le répertoire du serveur? Eh bien dans /var/www.
Cela vous énervera sans doute d'avoir un serveur qui se base sur un dossier tel que celui-ci où vous devrez y accéder en tant que root et dont les problèmes de permissions seront courants.
Pour cela vous pouvez par exemple rendre le dossier plus accessible en tapant cette commande dans la console:
Code :
- sudo chmod a+rx /var/www
|
Ceci vous permettra d'y déposer des fichiers sans problème mais je préfère une autre méthode que j'ai opté.
Créez par exemple dans votre dossier personnel (/home/<vous> ) un dossier comme nommé "www" ou quelque chose comme ça afin de déplacer le répertoire racine d'Apache dans celui-ci. Il vous sera ensuite plus facile d'y manipuler fichiers et dossiers.
Ensuite il vous faudra modifier un fichier de configuration d'Apache. Exécutez alors
Code :
- gksu gedit /etc/apache2/sites-available/default
|
Dans ce fichier, remplacez les occurences de "/var/www" par "/home/<vous>/www" (ou "/home/<vous>/<nom du dossier du serveur choisi>"). Vous devriez les retrouver aux lignes 5 et 10.
Attention dans le cas où le dossier racine du serveur HTTP se trouve dans votre répertoire personnel, le serveur ne marchera que si vous accéderez toujours sur le même compte.
Profitez-en également pour remplacer la chaîne "ServerAdmin webmaster@localhost" à la ligne 3 par "ServerAdmin <votre adresse e-mail>".
Pour finir enregistrez le fichier.
Il ne vous reste plus qu'à relancer le serveur Apache grâce à cette commande:
Code :
- sudo /etc/init.d/apache2 restart
|
Et voilà. Votre serveur est fonctionnel!
Pour tester votre serveur, ouvrez votre navigateur internet proféré et tapez cette adresse: http://127.0.0.1.
2.3. Astuces
Redémarrer le serveur
Code :
- sudo /etc/init.d/apache2 restart
|
Rendre tout les dossiers accessibles
Code :
- sudo chmod a+rx ~/www
|
ou
Code :
- sudo chmod a+rx /var/www
|
si vous utilisez le répertoire de base.
Définir les pages d'erreurs
Code :
- gksu gedit /etc/apache2/apache2.conf
|
Puis rendez-vous dès la ligne 268 pour modifier le chemin des pages à définir. N'oubliez pas de décommenter les lignes du "#".
Comment mettre en pause mon serveur HTTP?
En console, pour arrêter le serveur, tapez:
Code :
- sudo /etc/init.d/apache2 stop
|
Puis, pour reprendre:
Code :
- sudo /etc/init.d/apache2 restart
|
2.4. Problèmes rencontrés
Un fichier n'est pas accessible et vous renvoi l'erreur 403.
Changez ces permissions par
Code :
- sudo chmod a+rx <chemin complet du fichier>
|
Dès que j'arrive sur mon répertoire racine j'ai une erreur 404, ou Not Found.
Vous avez dû vous planter en changeant le fichier /etc/apache2/sites-available/default.
Revenez vers la fin de la partie 2.2.
Quand j'entre mon adresse, mon navigateur me renvoi sur la page de mon routeur/modem...
En effet, il vous faut configurer votre routeur/modem afin que les ports 80 et 21 soient redirigés sur la machine où votre serveur est installé autrement vous ne verrez pas vos fichiers.
3. Serveur FTP
3.1. Installation
Bon attaquons le serveur FTP (File Transfer Protocol) qui vous permettra des transferts de fichiers très simplement.
Allons, lancez une console et tapez
Code :
- sudo apt-get install proftpd
|
Lors de l'installation, à la question "Lancer ProFTPd à partir d'inetd ou indépendamment?", répondez "Indépendamment".
Eh oui nous utiliserons Proftpd qui est un excellent serveur FTP open-source et plutôt simple à utiliser.
3.2. Configuration
L'installation était plutôt rapide n'est-ce pas? 
Bien la configuration n'est pas très longue non plus.
Par défaut le répertoire FTP du serveur est dans /home/ftp qui correspond à un nouvel utilisateur nommé ftp mais cela vas nous créer des problèmes au niveau des permissions et il est plutôt embêtant pour nous qui ne voulons pas nous compliquer la vie à stocker des fichiers.
Il vous faudra alors maintenant un dossier pour les connexions anonymes. Créez par exemple un dossier FTP nommé "ftp" dans votre répertoire personnel comme pour le serveur HTTP. Vous pouvez également le placez ailleurs. Libre à vous de choisir.
Maintenant, rendons-nous sur le fichier de configuration du serveur FTP comme ceci:
Code :
- gksu gedit /etc/proftpd/proftpd.conf
|
Changez déjà le nom de votre serveur à la ligne 12.
Si vous souhaitez tout de même utiliser le répertoire /home/ftp et vous compliquer la vie, passez cette partie.
Ensuite nous allons configurer la connexion anonyme. Pour cela allez à la ligne 123 puis décommentez les lignes jusqu'à la ligne 162 qui se termine par "</Anonymous>".
Revenez ensuite à la ligne 163 et changez la balise "<Anonymous ~ftp>" par "<Anonymous /home/<vous>/ftp>" ou "<Anonymous <répertoire choisi par vous>>".
Attention dans le cas où le dossier racine du serveur FTP se trouve dans votre répertoire personnel, le serveur ne marchera que si vous accéderez toujours sur le même compte.
À la ligne 135, choisissez le nombre maximum de connexions simultanées pour l'accès anonyme de votre serveur FTP ce qui permettra de réduire les charges et d'éviter de saturer votre connexion.
Voilà! Il ne vous reste plus qu'à tester le fonctionnement du serveur en ouvrant un navigateur et aller sur l'adresse ftp://127.0.0.1.
3.3. Astuces
Cisoun, tu as dis qu'on pouvait grâce au FTP accéder à nos propres documents. Comment est-ce possible?
Simple! Ouvre ton navigateur internet et tape l'adresse comme ceci:
ftp://<ton nom de compte>:<mot de passe>@<adresse de ton serveur>
Dans mon cas ce sera ftp://cisoun:<mon mot de passe>@cisoun.serveftp.net.
Une fois cette adresse écrite dans le navigateur internet, il se peut qu'il la garde en mémoire donc un autre utilisateur pourrait retrouver votre nom de compte et le mot de passe qui va avec alors je vous conseille fortement d'effacer vos traces du navigateur!
C'est dur de configurer ce serveur dans ce fichier texte!
Nop! Il existe un programme qui s'appelle GProFTPd qui est simplement une interface de configuration pour notre serveur.
Pour l'installer, tapez la commande
Code :
- sudo apt-get install gproftpd
|
Une fois ceci fait, allez dans le menu Système/Administration/GPROFTPD pour lancer l'application.
Bon, étant donné que ce tutoriel doit montrer comment installer facilement un serveur, je ne vais pas entamer un sujet sur ce logiciel de plus ce post est assez long comme ça.
Euh, comment tu fais pour rajouter des utilisateurs avec des dossiers spécifiques à chacun et accessibles depuis un client FTP ou un navigateur?
GProFTPd vous permet de configurer ceci plus facilement que dans un fichier texte. Donc installez-le comme il est décrit ci-dessus.
Ensuite allez dans l'onglet "Utilisateurs" et bidouillez un peu mais il vous faudra un peu d'expérience dans tout ceci.
Comment accéder à mes fichiers depuis l'extérieur et les manipuler dans mon dossier personnel?
Il vous faut un client FTP comme FileZilla ou gFTP.
Pour ce dernier qui est relativement simple, installez-le comme ceci:
Code :
- sudo apt-get install gftp
|
Comment voir ce qu'il se passe sur mon serveur?
À moins d'utiliser GProFTPd qui est tout aussi pratique, il y a deux lignes de commande qui le sont également.
En console, pour voir qui a accès à votre serveur, tapez
Et pour quelques statistiques, tapez
Comment mettre en pause mon serveur FTP?
En console, pour arrêter le serveur, tapez:
Code :
- sudo /etc/init.d/proftpd stop
|
Puis, pour reprendre:
Code :
- sudo /etc/init.d/proftpd restart
|
3.4. Problèmes rencontrés
Un fichier n'est pas accessible et vous renvoi l'erreur 403.
Changez ces permissions par
Code :
- sudo chmod a+rx <chemin complet du fichier>
|
Dès que j'arrive sur mon répertoire racine j'ai une erreur 404, ou Not Found.
Vous avez dû vous planter en changeant le fichier /etc/proftpd/proftpd.conf.
Revenez vers la fin de la partie 3.2.
4. Redirection DynDNS
Une redirection DynDNS peut être utile si vous souhaitez donner accès à votre serveur depuis l'extérieur.
À moins d'avoir une adresse IP statique, nous allons remédier à ça.
4.1. Inscription
Allez à cette adresse:
https://www.dyndns.com/account/create.html
puis remplissez le formulaire affiché à l'écran.
N'oubliez pas de cocher les cases "I agree to the AUP" et "I will only create one (1) free account".
Ensuite un e-mail de confirmation vous sera envoyé dans les 48 heures.
Par la suite, loguez-vous sur la page d'accueil:
https://www.dyndns.com/
Ensuite sur la page chargée, cliquez sur le lien "Add Host Services" afin de pouvoir choisir une redirection puis remplissez les champs suivants:
Hostname: Choisissez votre nom d'adresse puis son nom de sous-domaine. Pour ce dernier point, vous aurez le choix. 
Moi j'ai choisi Cisoun et Serveftp.net.
Wildcard: Je crois que c'est option qui permet de rediriger tout les domaines inexistants sur votre adresse principale mais je n'en suis pas sûr. Cochez-la si vous souhaitez cette option. De toute façon, vous pouvez toujours l'enlevez plus tard.
Service Type: Cochez l'option "Host with IP address"
4.2. Installation du client DynDNS
Le client de DynDNS (ddclient) est multi-plateforme. Ici sous Linux il est aussi simple à installer.
Il se chargera à chaque démarrage de l'ordinateur de mettre à jour l'adresse IP de votre connexion à votre adresse précédemment définie sur le site de DynDNS.com.
Dans une console tapez:
Code :
- sudo apt-get install ddclient
|
Une fois cela fait, il ne reste plus qu'à configurer le client! Courage!
Au fait, l'installation va vous demander des informations, choisissez ceci
Etape 1: www.dyndns.com
Etape 2: tapez l'adresse de votre adresse
Etape 3: tapez maintenant votre nom de login de dyndns.com
Etape 4: et son mot de passe
Etape 5: use=web, web=checkip.dyndns.org
Etape 6: No
Etape 7: Yes
Etape 8: 300
Afin d'avoir un script plus sûr nous allons maintenant réécrire le fichier de configuration.
Lancez maintenant cette commande afin d'éditer ce fichier:
Code :
- gksu gedit /etc/ddclient.conf
|
et remplacez son contenu par celui-ci:
# Configuratio.org file for ddclient generated by debconf # L'utilitaire est BaliDDNS http://www.baliciel.com/baliddns.htm (en français) # /etc/ddclient.conf daemon=300 # vérifie et met à jour toutes les 300 secondes #syslog=yes # écrit toutes les opérations dans "syslog" #mail=root # envoi à root tout les messages de mise à jour #mail-failure=root # envoi à root les message de mise à jour échouée pid=/var/run/ddclient.pid # emplacement du programme ddclient protocol=dyndns2 # use = envoi une requette HTTP # if = interface matériel utilisée pour vous connecter use=web, web=checkip.dyndns.org # Autres mode de mise à jour : #use=web, web=checkip.dyndns.org #use=web, web=checkip.dyndns.org/, web-skip='Current IP Address: ' server=members.dyndns.org # adresse du script DynDNS pour la récupération de votre adresse IP login=<votre login DynDNS> # votre login DynDNS password=<votre mot de passe> # votre mot de passe # mettre vos noms de domaine ci-dessous séparés par des virgules # Exemple: moi.serveftp.net, quelquechose.dyndns.org <votre adresse sans http://> |
Pour finir enregistrez puis relancez le client en tapant ceci:
Code :
- sudo /etc/init.d/ddclient restart
|
Votre adresse IP se mettra alors automatiquement à jour à chaque démarrage de Linux! 
4.3. Astuces
Je dois remettre mon IP à jour suite à une reconfiguration du client, que faire?
Tapez la commande suivante:
Code :
- sudo /etc/init.d/ddclient restart
|
Je veux changer mon nom de domaine, où dois-je le faire?
Sur le site de DynDNS après vous être logué, allez dans la section "My Hosts" puis cliquez sur votre nom de domaine à redéfinir et vous retomberez sur le panneau de configuration précédemment vu lors de l'inscription.
Puis-je redéfinir ma configuration en ligne de commande?
Oui, si je me souviens bien c'est grâce à cette commande:
Code :
- sudo dpkg-reconfigure ddclient
|
Et voilà c'est terminé pour ce tutoriel!
J'espère que malgré sa longueur il vous aura aidé. 
Croyez-moi j'en ai souffert pour vous écrire ça. 
Sources:
http://doc.ubuntu-fr.org/proftpd
http://doc.ubuntu-fr.org/gproftpd
http://doc.ubuntu-fr.org/lamp (pour aller plus loin)
http://doc.ubuntu-fr.org/lamp_plus (pour aller encore plus loin)
Un petit merci aux membres testeurs sans qui certaines choses n'auraient pas été précisées. 
Et surtout à MC qui a l'habitude de s'attirer que des emmerdes! 
Message édité par cisoun le 11-07-2009 à 22:22:15