Le tuto pour avoir son serveur à soi !
Retour      

 !  Comment faire son propre serveur WEB...

Ce n'est pas vraiment un tutorial que je vous propose ici mais plutôt de suivre pas à pas ce que j'ai fait pour avoir un joli serveur WEB chez moi, accessible bien sûr de n'importe où dans le monde !
Si vous avez envie d'essayer, vous devriez vous y retrouver sans trop de problème, je pense avoir bien détaillé les étapes. Enfin, surtout n'avoir rien oublié de noter au fur et à mesure :-) Y compris ce qu'il ne fallait pas faire :-o


Prérequis.

Matériel :
Bien sûr, il faut un pc (peut-être un mac, je ne connais pas ces machines-là), et pas forcément un belle bête, pour ma part c'est un PII 400, avec 128 Mo de RAM. Un disque dur de 2,5 Go minimum (2 Go pour la partition principale et 2x la ram pour la partition SWAP). Et un lecteur CD.
Juste pour l'installation : un écran et un clavier.
Sans oublier... le pc doit être connecté (il faut donc une carte réseau), sur un haut débit si possible !

Logiciel :
Euh... si je dis rien, j'exagère ? A peine... Mais c'est quand même mieux si on sait de quoi on parle, donc avant toute chose se renseigner, se documenter (c'est ce que vous faîtes là non ?).
Avoir des rudiments de DOS ou de LINUX permet de gagner du temps, surtout si on veut comprendre ce qu'on fait.
Savoir graver un ISO.
Et puis aussi, peut-être, connaitre les éléments de base d'un pc, ce qu'est un répertoire, une partition, un BIOS, etc.

Objectif.

Il faut savoir ce qu'on veut faire avec un tel serveur. Mon idée était la suivante :
-avoir un serveur web pour mettre une page en ligne à la maison
-avoir un serveur ftp pour pouvoir mettre les pages en ligne d'une part et pour stocker des documents en commun avec un collègue sans avoir à passer par les mails (on s'est retrouvé à faire 2 fois la même chose n'ayant pas pu lire un mail : rageant) d'autre part.

Préparation.

Sachant que le pc qui sert de serveur est stocké dans un coin, qu'une fois qu'il fonctionne, on n'a plus à y toucher physiquement, le mieux est de pouvoir le ranger seul (juste l'unité centrale) avec seulement 2 câbles : celui de l'alimentation et celui du réseau local (RJ 45).
Il faut donc aller dans le BIOS de la machine (appui sur une touche souvent DEL ou SUPPR ou une touche de fonction) au démarrage de la machine et chercher dans les options ou on enlèvre les erreurs (HALT ERROR : OFF sur la mienne) de telle façon qu'un démarrage puisse se faire sans clavier.
Pendant qu'on est dans le BIOS, vérifiez que le lecteur CD est bootable.

Pour installer un serveur, on peut se servir de plusieurs OS, mais sans aucune hésitation, on se tourne vers LINUX, système très sécurisé et gratuit. De plus on trouve tellement d'informations dessus sur le web !
Des LINUX, il y en a ! Le plus recommandé est la DEBIAN. Inutile d'installer une DEBIAN complète ( 7 CD ), on aurait bien des choses inutiles pour notre serveur. On va plutôt se tourner vers une DEBIAN minimalisée... EURONODE. Allez sur ce site et dans la rubrique téléchargements, choisissez la plus petite (80 Mo) : Euronode Minimal Woody. C'est un fichier ISO que vous gravez sans problème sur un cd (j'espère !). Vous obtenez ainsi un joli petit cd boot qui va faire notre bonheur.

Installation de LINUX.

On boote sur le cd, on tape : #euronode lang=fr pour avoir le clavier fr.

REMARQUE : il ne faut pas taper le # ci-dessus, je le mets juste pour signaler où on est (en mode commande sous DEBIAN).

Tout est automatique (gestion des partitions en particulier), et c'est vraiment appréciable (il suffit d'avoir installé une autre distribution plus classique pour le savoir !).
On rentre quelques infos (et surtout le mot de passe de root qu'il faut noter sur un bout de papier !)
Exemple :

ip serveur 192.168.0.200
passerelle : 102.168.0.1
nom machine : mamachine
domaine : mondomaine.com
dns primaire :
login utilisateur : administrateur
mdp root : monmotdepasse

Installation des packages manquants.

Avant d'installer quoi que ce soit, taper #apt-get update pour mettre à jour avec les nouveaux packages.
Cela peut-être assez long.

REMARQUE : pour voir les daemon qui tournent : taper #ps aux

C'est parti. On installe ce qui manque à cette mini-distribution:
#apt-get install ssh
Une fois ssh installé, il est possible de prendre la main depuis un autre pc.
Exemple :

sur un pc du réseau local sous windows, lancer PUTTY et mettre l'ip serveur 192.168.0.200
Pour login : root et pour mdp : monmotdepasse
On se retrouve dans une fenêtre de lignes de commandes du pc serveur. On y travaille comme si on était sur ce pc. A partir de là, on peut donc placer le pc dans un coin, sans écran, sans clavier, simplement connecté au réseau local. Et depuis son pc de travail habituel, on continue d'installer et de préparer ce serveur, super, non ?
Par la suite, on pourra prendre la main sur ce serveur depuis internet (ou demander à un copain qui s'y connait de la faire pour vous :-))

REMARQUE : pour arrêter le pc serveur, taper #halt, attendre que le système s'arrête puis le débrancher.

On continue l'installation (à partir d'un autre pc si on veut donc ;-))
On installe apache : #apt-get install apache
On installe php : #apt-get install php4
On installe le serveur de ftp : #apt-get install pure-ftpd

PROBLEME : ça ne marche pas !!!??? Que se passe-t-il ?
Regardons le fichier sources.list qui contient les liens vers les sites d'installation de DEBIAN.
Pour ce faire on tape #joe /etc/apt/sources.list

REMARQUE : on peut (il faut même) utiliser la touche TAB our compléter un mot, ainsi on est sûr qu'il existe.
On peut doubler cette touche si nécessaire.
Pendant que j'y suis, un truc bien pratique, on peut retrouver les commandes déjà tapées en apuyant sur le flèche du haut du clavier, on peut copier un texte en le surlignant, et le coller en cliquant-droit.

On vient d'ouvrir un fichier où sont listés les sources pour les installations, on y ajoute la ligne :
deb ftp.debian.org unstable et on enlève ftp.debian.org stable

Voici le fichier complet :

#deb ftp://ftp.debian.org/debian stable main
deb ftp://non-us.debian.org/debian-non-US unstable/non-US main
#deb ftp://ftp.debian.org/debian unstable-proposed-updates main
deb ftp://security.debian.org/debian-security stable/updates main
deb http://www.backports.org/debian stable adduser debconf e2fsprogs file gdb g
deb http://www.backports.org/debian stable iptables less lilo lsof make modcon
deb http://www.backports.org/debian stable net-tools patch procps sed strace ut
deb ftp://ftp.debian.org/debian unstable main

Pour sortir du fichier, on tape CTRL+K puis X (on peut sortir avec CTRL+C quand on n'a rien modifié) ce qui enregistre les modifications avant de le fermer.
On reprend et on n'oublie pas à nouveau un: #apt-get update pour rafraichir (on aurait pu éviter de perdre du temps ici en modifiant le fichier ci-dessus avant !)
On relance : #apt-get install pure-ftpd et ça marche :-) l'installation du serveur ftp se lance toute seule.

REMARQUE : comment sait-on ce qu'il y a dans les packages (c'est ce qui contient tous les programmes inclus dans la suite DEBIAN par ex.) ? On va sur le site packages.debian.org et on entre le mot clé dans le champ 'Recherche dans les répertoires de paquets' et pour Distribution, on choisit Toutes (pour avoir aussi les dernières versions parfois instables, juste de nom).

Pour configurer pure-ftpd : on choisit inetd puis NO à la question suivante (par défaut).
Voilà pour l'installation... pas compliquée, avouez !

REMARQUE : pour gagner du temps, si une installation pose problème, régler le problème (en cherchant sur le net par ex) , puis taper #apt-get install -f

Création des comptes FTP.

Il faut créer un groupe dans lequel on peut mettre plusieurs utilsateurs. L'idée étant d'avoir un environnement sécurisé, on va faire ça une seule fois :

Création du groupe : #groupadd ftpgroup

Création d'un user : #useradd -g ftpgroup -d /dev/null -s /bin/false ftpuser
-g ftpgroup veut dire que user fait partie du groupe ftpgroup
et -s /bin/false veut dire qu'on ne donne aucuns droits.

REMARQUE : Pour visualiser les groupes : #cat /etc/group
On y lit entre autres :
nogroup:x:65534:
admin:x:1000:

REMARQUE : Pour visualiser les users : #cat /etc/passwd

On crée à présent ce qu'on veut. Par exemple le compte PERSO avec lequel on pourra mettre les fichiers en ligne (via un soft ftp) :
#pure-pw useradd PERSO -u ftpuser -d /var/www
-d /var/www veut dire que c'est là qu'on stocke les fichiers.

REMARQUE : pour créer un répertoire, on tape #mkdir nouveaurépertoire.

REMARQUE : pour visualiser les partitions (y compris sur plusieurs disques durs) : #joe /etc/fstab
(ou bien aussi on tape la commande #fd qui donne l'espace libre).

A la demande, on rentre le mdp : motdepasseperso
On rafraichit : #pure-pw mkdb

Dans mon cas, j'ai créé un deuxième compte COLLEGUE :
#pure-pw useradd idd -u ftpuser -d /var/data
A la demande, on rentre le mdp : motdepassecollegue (à transmettre à mon collègue ;-))
On rafraichit : #pure-pw mkdb

Ensuite il y a une manip' que je n'ai pas comprise :-(
On doit rajouter une ligne dans le fichier inetd.conf :
#joe /etc/inetd.conf
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd -A -C 1 -c 5 -I 3 -D -l puredb:/etc/pure-ftpd/pureftpd.pdb (attention c'est sur la même ligne).
Puis on tape : #etc/init.d/inetd restart

REMARQUE : pour crypter l'accès, on peut rajouter dans cette ligne pure-ftpd, l'option -Y 2
( -Y 0 = TLS inactif -Y 1 = TLS mode 1 -Y 2 = TLS mode 2)
Toutes les options et une aide disponibles ici.

On n'oublie pas de donner les droits à tout le monde (pas seulement le root) :
#chmod 777 -R /var/www et #chmod 777 -R /var/data

Modification de l'IP.

Cette partie est ajoutée car j'en ai eu besoin, mais ce ne devrait pas être votre cas. Il se trouve que j'ai installé le serveur ailleurs que chez moi, sur un réseau configuré différemment. Arrivé à la maison, j'ai donc commencé par modifié l'IP du pc-serveur.
Pour modifier l'ip, on peut utiliser la commande ifconfig,
et il faut aussi modifier la passerelle (gateway), on utilisera la commande route :
#route add default gw 192.168.5.100 (c'est l'ip de mon routeur)
Mais ça ne marche que jusqu'au prochain démarrage où le serveur reprendra l'IP rentrée la première fois :-(
Il est donc préfarable de modifier le fichier interfaces une bonne fois pour toutes :
#joe /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.5.200
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.5.100
dans mon exemple.

Si besoin, il faut modifier les dns, taper #joe /etc/resolv.conf
et ajouter les lignes nameserver 213.228.0.212 et nameserver 212.27.32.177 pour l'exemple.

Un mot sur le routeur.

Si vous avez un petit réseau chez vous, il y a de fortes chances pour que vous ayez un routeur derrière le modem (ou couplés). Il faut donc dire à votre routeur que les requêtes qui arrivent de l'extérieur sur le port du web concernent le seveur, c'éest-à-dire que le routeur doit rediriger cette requête vers le bon pc !
Les ports à ouvrir sont les suivants TCP 80 et TCP 443 pour le web, TCP 21 pour le ftp et TCP 22 pour le ssh.

Pendant que j'y suis, quid d'un parefeu ? Les puristes mettront un pc dédié, avec ipcop dessus... Mais est-il bien nécessaire ?
On peut aussi installer un parefeu sur le pc-serveur, par exemple iptables (qui sert aussi de nat et qui a l'air un peu plus dur à installer que ce qu'on vient de faire !).

Enfin si on a besoin (mais je me demande pourquoi...) d'accéder aux partitions du pc-serveur depuis un voisinage réseau de windows, on peut installer samba (a priori pas évident non plus).

J'avais commencé à le faire (pensant que c'était obligatoire pour la suite)... j'ai abandonné et pour le virer, j'ai utilisé la commande #rm -rf (cela supprime un répertoire et attention il n'y a pas de confirmation, c'est donc très dangeureux).

Installation de no-ip.

Voilà qui commence à prendre tournure... Il ne reste plus qu'à installer et configurer le client no-ip et c'en sera complètement fonctionnel ;-)
Tout d'abord, il faut s'inscrire sur no-ip.com (voir le tutorial).

On installe no-ip. J'ai tapé #apt-get install noip, mais il y a eu un problème :-(

J'ai alors suivi le guide, trouvé dans Support su site de no-ip :
On installe wget : #apt-get install wget
On crée le répertoire noip : #mkdir noip
On se place dans ce répertoire : #cd noip
On télécharge le fichier noip-duc-linux.tar.gz : #wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
On le décompresse : #tar zvxf noip-duc-linux.tar.gz
Ensuite, ça se gâte :
On installe make : #apt-get install make
On suit le guide : # make gcc -Wall -g -02 -Dlinux -DPREFIX=\"/usr/local\" noip2.c -o noip2
Ca ne marche pas, il y a alors une autre procédure proposée :
On copie le fichier où il faut : #cp /noip/noip-2.1.1/binaries/noip2-Linux ./noip2
On l'installe : #make install
Ca ne marche pas. J'essaie alors de rafraichir tout ceci (pour le gcc) : #apt-get update
Je recommence, mais toujours rien :-(

Vive le ssh, quelqu'un qui connait intervient sur ma machine... et ça marche, grrrrr, qu'a-t-il fait ?
Il a créé le fichier /etc/no-ip.conf : #no-ip -C
Il a lancé no-ip : #no-ip -S
Et il a configuré no-ip avec le hostname que je lui ai donné (celui obtenu lors de l'inscription), ainsi que les autres paramètres. Et là, c'est cool : c'est fini, ça marche :-)))
Ne pas oublier, pendant la configuration, de préciser qu'on veut que no-ip se lance au démarrage et qu'il rafraichisse régulièrement (10 min par ex).

Conclusion.

C'est super d'en être là, non ?

Bon et alors comment on fait à présent ?
C'est tout simple, vous continuez de faire comme avant en ce qui concerne la conception des pages et vous transférez vos pages avec un soft ftp (filezilla par ex) vers le pc-serveur en local (dans mon exemple, le login est PERSO et le mot de passe motdepasseperso, revenez plus haut, à la création de comptes si vous n'avez pas suivi !)

Ensuite, depuis n'importe où, dans n'importe quel navigateur, on accède au site avec le hostname de no-ip.

Pour le partage du ftp, c'est la même chose, dans mon cas, avec mon collègue on pourra mettre et prendre les fichiers directement sur le serveur en se connectant avec un soft ftp (dans mon exemple, le login est COLLEGUE et le mot de passe motdepassecollegue, revenez plus haut, à la création de comptes si vous n'avez pas suivi !).

Parmi les commandes utiles non citées ci-dessus, il y a aussi :
#ls (pour lister un répertoire) et #ls -l pour les détails (le d devant veut dire directory ou répertoire)

Enfin, je vous donne ici quelques liens utiles... mais je suis sûr que vous avez déjà vous-mêmes de nombreux liens sur la communauté tellement riche de LINUX :
http://lea-linux.org/
http://www.aful.org/index.html
http://www.debian.org/distrib/packages
http://www3.uqar.uquebec.ca/ajacques/INF16103/Ateliers/IntroLinux/Linux.htm (intro à linux)

Php.

Je pensais que je pouvais à présent faire presque tout ce que je voulais sans soucis... Et dès le premier essai, ça n'a pas marché !! Je voulais en effet mettre une petite fenêtre en php pour afficher une ip. Un entraînement quoi... Le fichier est très simple, je le mets sur le serveur, et là, quand je veux y accéder depuis un navigateur, celui-ci me dit qu'il ne peut pas ouvrir ce fichier .php et il me demande de l'enregistrer :-( Bigre...

Petit tour sur le net pour savoir ce qu'il se passe, et en effet, il faut modifier un fichier pour que le php fonctionne comme il faut ! Voilà :

Tout d'abord il faut déterminer la version d'Apache sur le système :
on tape #apache -v (ou apache2 -v)
Pour moi c'est la version 1.3.26 qui est installée.

Il faut ensuite accéder au fichier /etc/apache/httpd.conf (apache 1.3.x) ou au fichier
/etc/apache2/apache2.conf (apache 2.x) (avec la commande joe par exemple).

On cherche une ligne similaire à :
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml
pour y ajouter index.php

On cherche alors les lignes suivantes :
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
Elles sont précédées d'un # (commentaire), qu'on enlève.
( si elles n'existent pas, on peut les créer n'importe où - de préférence proche de
"DirectoryIndex...").

On relance Apache :
#/etc/init.d/apache(2) stop
#/etc/init.d/apache(2) start
(on peut aussi utilise la commande "restart" existe mais certains le déconseillent).

Normalement cela aurait dû suffire, mais problème : ça ne marche toujours pas :-(

J'ai donc demandé à un spécialiste de jeter un oeil.
Voici ce qu'il a fait, toujours dans ce même fichier /etc/apache/httpd.conf.
Il a enlevé le # de début de ligne à
- LoadModule includes_module /usr/lib/apache/1.3/mod_include.so
- LoadModule anon_auth_module /usr/lib/apache/1.3/mod_auth_anon.so
et surtout à
- LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
Et ça marche à présent :-)

Mysql.

Une petite envie de tester Phpmyvisites me pousse à installer une base données. La référence, à côté de php, c'est Mysql. Je m'aide de ce tuto fr.

#apt-get install mysql-server (qui contient entre autres mysql-common qui nous intéresse).
J'ai répondu Yes pour pouvoir bénéficier de mysql à chaque démarrage.
Installation terminée ? Taper #mysql pour vérifier. Un message de bienvenue s'affiche si tout s'est déroulé correctement. Et on arrive dans une session mysql, qu'on peut quitter en tapant mysql> exit
Reste à configurer. Voici une doc complète en français.

Je retourne dans Mysql et je tape :
mysql> CREATE DATABASE phpmv; pour créer la base phpmv
mysql> USE phpmv pour rendre cette base la base courante.
mysql> exit

Je teste et lance l'installation de phpMyVisites (indication sur ce tuto).
Mais je suis bloqué après la première page sur "Essai de connexion... "
J'ai oublié quelque chose. Je dois entrer un mot de passe (pourtant demandé sur la première page) pour Mysql.

# /usr/bin/mysqladmin -u root password 'monmotdepassemysql'
# /usr/bin/mysqladmin -u root -h webhome password 'monmotdepassemysql'
Ce qui me met un message d'erreur, grrr.

 

A suivre sans doute ;-)...

 !   Petit sommaire :
Prérequis.
Ce qu'il faut avoir pour démarrer.
More >>

Objectif.
Ca sert à quoi au fait ?
More >>

Préparation.
Petite modification dans le BIOS et récupération du CD d'installation.
More >>

Installation de LINUX.
Tellement simple ici...
More >>

Installation des packages manquants.
Connectez-vous, et on y va !
More >>

Création des comptes FTP.
Pour que le système vous laisse entrer...
More >>

Modification de l'IP.
Au cas où !
More >>

Un mot sur le routeur.
Au cas où (bis) !
More >>

Installation de no-ip.
Si on n'a pas d'ip fixe à la maison, cette étape est indispensable, sinon pas la peine.
More >>

Conclusion.
Encore quelques mots pour dire comment on peut utiliser son serveur et quelques liens, toujours utiles.
More >>

Php.
Ce n'est jamais fini !
More >>

Mysql.
Gestion des stats, via Phpmyvisites.
More >>

 


©2001 Lorem Ipsum Dolor Sic AmetConsectetur LorumIpsumDolorSic AmetConsectetur