La première étape dans la mise en place d’un serveur est l’installation de la distribution. Vous l’aurez deviné, la distribution retenue est Debian GNU/Linux [1] dans sa version 4.0 (Etch) qui est la dernière version stable a ce jour. Cette page détaille donc les différentes étapes de l’installation et quelques éléments de configuration afin que la machine soit prête à accueillir les différents services qu’elle doit héberger.
Ce document a été rédigé en LaTeX en utilisant l’excellent Vim sous Debian GNU/Linux. Il est disponible aux formats XHTML et PDF. Les sources LaTeX sont disponibles ici : LATEX
Copyright ©2009 Matthieu VOGELWEITH <matthieu@vogelweith.com>.
Vous avez le droit de copier, distribuer et/ou modifier ce document selon les termes de la GNU Free Documentation License, Version 1.3 ou ultérieure publiée par la Free Software Foundation ; avec aucune section inaltérable, aucun texte de première page de couverture, et aucun texte de dernière page de couverture. Une copie de la licence est disponible dans la page GNU Free Documentation License.
Le choix de la distribution est sans doute un débat sans fin mais voici quelques arguments qui mettent Debian en valeur pour une utilisation de type serveur :
- Gestionnaire de paquets : Debian dispose d’un système de gestion de paquets qui lui est propre et dont la réputation n’est plus à faire. Il permet notamment la mise à jour de l’intégralité de la distribution en quelques commandes.
- Stabilité : Debian GNU/Linux est construite autour du noyau Linux [2] de la même manière que Gentoo, Mandriva et les autres distributions. C’est sans aucun doute un premier gage de stabilité mais ce n’est pas ce qui différencie Debian. Ce qui fait, à mon avis, réellement la différence c’est la politique de release adoptée. Bien que cette politique soit souvent critiquée, elle permet d’avoir une release stable (Etch actuellement) qui est véritablement stable grâce a une longue période de tests et de correction de bugs pour chacun des paquets intégrés. Cette politique ne permet pas l’intégration rapide des applications récentes mais ce n’est sûrement pas d’une grande nécessité pour une machine orientée serveur. Notons que les paquets, même s’il ne sont pas toujours très récents, bénéficient de mises à jour de sécurité très régulières.
- Sécurité : Après des années de développements, GNU/Linux devient assez sûr, et Debian en bénéficie. De plus, Debian est très réactif pour garantir que les correctifs de sécurité soient intégrés rapidement dans la distribution (habituellement ils le sont en quelques jours). L’histoire a montré que la sécurité par l’obscurité ne fonctionne pas. La disponibilité du code source permet que la sécurité de Debian soit évaluée de façon transparente ce qui évite que de mauvais modèles de sécurité soient implémentés.
- Pérennité : Aucune entreprise ne dirige l’évolution de Debian. Cette indépendance vis à vis d’une entité commerciale ainsi que son vivier de plus d’un millier de développeurs garantissent sa pérennité.
Pour bien comprendre le rôle de chaque paquets et pour accroître la stabilité du serveur, l’installation sera faite de manière minimale. L’installation des différents services sera détaillée dans les autres pages de cette rubriques.
La toute première étape consiste à télécharger un medium de boot pour débuter l’installation. Si l’on dispose d’une connexion internet haut débit, le plus simple est sûrement d’utiliser la "Net Install". Avec cette méthode, on télécharge une image ISO minimale contenant le programme d’installation (debian-installer) et quelques paquets de base puis on installe le reste du système via le net en utilisant les miroirs Debian.
Les images de la "Net install" sont disponibles sur le site officiel de Debian [3]. Ces images représentent seulement 120 MB, il peut donc être intéressant d’utiliser un CD-RW ...
Le premier écran de l’installeur propose un prompt qui permet de choisir plusieurs options d’installation. Pour connaître toutes ces options, il faut parcourir les menus d’aide accessibles via les touches F1, F2 (...) du clavier. Dans la plupart des cas, si votre matériel est "standard", les seules options à spécifier sont le mode d’installation (normal ou expert) et le type d’affichage désiré (mode texte ou graphique).
Ce paragraphe détaille l’installation en mode expert afin de pouvoir contrôler un maximum d’options durant l’installation de la machine. En principe, toutes les étapes de l’installation sont détaillées ci-dessous, il suffit de suivre le guide ...
Au boot :
- expert
- Analyse des touches F1,F2,... pour avoir de l’aide
Choose language -> English
- Choose a country, territory or area -> other
- Choose a country, territory or area -> France
- Choose a locale : en_US.UTF-8
- Choose other locales to be supported : -> rien, appuyer sur tab puis valider avec <continue>
Select a keyboard layout -> PC-style (AT or PS-2 connector) keybord
- Keymap to use -> French
Detect and mount CD-ROM
- Modules to load :
-> appuyer sur tab puis valider avec <continue>
- Start PC card services ? -> No
Load installer components from CD
- Installer components to load :
-> rien, appuyer sur tab puis valider avec <continue>
Detect network hardware
Configure the network
- Auto-configure network with DHCP ? -> Yes si DHCP No sinon.
-> Si no, configuration manuelle
- IP address -> x.x.x.x - Netmask -> - Gateway -> - Name server addresses -> Is this information correct -> Yes - Hostname : nom_de_la_machine
- Domain name : nom_du_domaine
Detect disks
Partition disks
- Partitioning method :
- Manual
-> Selection du disque et appuyer sur entrée
-> Create new empty partition table on this device ? -> <Yes>
-> msdos
Se déplacer sur la ligne contenant "FREE SPACE"
-> Valider avec la touche Entrée -> create a new partition
-> Création des partitions
- Finish partitionning and write changes to disk
- Write the changes to disks ? -> Yes
Gestion du RAID Soft :
mdadm pour le RAID soft
Configure time zone
-> continue
Configure the clock
-> Is the system clock set to UTC ? -> Yes
Set up users and passwords
-> Enable shadow passwords ? -> Yes
-> Allow login as root
-> Root password : xxxxx
-> Re-enter password to verify : xxxxx
-> Create a normal user account now ? -> No
Install the base system
-> choix du noyau : linux-image-2.6-686
Configure the package manager
-> Use a network mirror ? -> Yes
-> Protocol for file downloads : -> HTTP
-> Debian archive mirror country : -> France
-> Debian archive mirror : -> ftp.fr.debian.org
-> Use non-free software : -> Yes
NE PAS SELECTIONNER "Select and install software"
L’installation du bootloader peut se faire très simplement en suivant le menu du Debian-installer, sauf si la partition ou sera installé le bootloader est formaté en XFS. Dans ce cas, il faut suivre la procédure suivante pour que tout ce passe bien.
La première étape est de quitter l’installeur temporairement pour passer en mode console. Pour cela, il suffit d’appuyer sur Alt+F2 puis d’appuyer sur Entrée pour activer la console. Une fois en mode console, exécuter les commandes suivantes pour se placer dans le chroot et installer grub :
~ # chroot /target sh-3.1# aptitude install grub sh-3.1# mkdir /boot/grub sh-3.1# cp /usr/lib/grub/i386-pc/* /boot/grub/
Maintenant que grub est installé, il suffit d’utiliser la CLI de grub pour écrire le MBR. La CLI de grub est tout simplement accessible avec le commande grub :
sh-3.1# grub grub>
Dans un premier temps on peut vérifier que les fichiers nécessaires sont bien présents et si c’est le cas, écrire le MBR et quitter :
grub> root (hd0,0) Filesystem type is xfs, partition type 0x83 grub> find /boot/grub/stage1 (hd0,0) grub> setup (hd0) ... grub> quit
Il reste maintenant à générer le fichier de configuration, pour cela exécuter Simplement la commande suivante :
sh-3.1# update-grub
Pour revenir à l’installeur, appuyer sur Alt+F1 et choisir le menu "Continue without boot loader".
De retour au menu principal, il ne reste plus qu’a sélectionner la dernière étape et la machine va pouvoir redémarrer sur le système fraîchement installé :
Finish the installation
-> Installation complete : -> continue
Par défaut, aptitude installe tous les paquets marqués comme "recommandés" dans les dépendance. Pour éviter ceci, il suffit de supprimer l’option à l’aide de la commande suivante :
# echo "aptitude::Recommends-Important \"false\";" > /etc/apt/apt.conf.d/90recommends # echo "aptitude::Purge-Unused \"true\";" > /etc/apt/apt.conf.d/91purgeunused
Pour commencer, on peut mettre à jour la machine et installer quelques packages utiles aux manipulations de base :
# aptitude update # aptitude purge vim-tiny # aptitude dist-upgrade # aptitude install less vim mtr-tiny iproute tcpdump ssh resolvconf postfix mailx shorewall bzip2 ntp psmisc pciutils dnsutils
Les paquets étant installés, on peut supprimer les .deb téléchargés précédemment avec le commande suivante :
# aptitude clean
Toute la configuration de base se fait avec le super-utilisateur root. Pour rendre cette configuration un peu moins austère, on peut commencer par modifier les options du bash à l’aide du fichier /root/.bashrc. Ces modifications permettent d’ajouter quelques raccourcis pour la commande ls et d’y ajouter la couleur :
export LS_OPTIONS='--color=auto' eval `dircolors` alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l'
Pour rendre l’édition des fichiers un peu plus lisible, on peut également activer la coloration syntaxique dans Vim et modifier quelques options. Les options de Vim sont configurables de manière globale dans le fichier /etc/vim/vimrc mais le plus propre est de mettre les options personnalisées dans /etc/vim/vimrc.local (ce fichier est sourcé par /etc/vim/vimrc s’il existe) :
syntax on set paste set background=dark set softtabstop=4 set shiftwidth=4 set tabstop=4 set expandtab
L’option "set paste" permet de faire des copier-coller sans avoir de problèmes d’indentations !
Le paquet ntp installé précédemment, permet de maintenir l’horloge système à l’heure avec une grande précision. Ce même paquet permet maintenant de fournir ce service à d’autre machine et donc devenir serveur NTP.
La configuration de base permet déjà à la machine d’interroger des serveurs sur le net pour se mettre à jour elle-même. Pour qu’elle puisse servir d’autre machines, par exemple les machines du réseau 192.168.1.0/24, il suffit de rajouter la ligne suivante :
restrict 192.168.1.0 mask 255.255.255.0
Les modifications seront prises en compte après un redémarrage du service.
# /etc/init.d/ntp restart
Pour tester ce service, il suffit d’exécuter la commande suivante depuis un poste client :
# ntpdate -u 192.168.1.254 19 Oct 18:57:32 ntpdate[11571]: adjust time server 192.168.1.254 offset 0.006447 sec
Les machines orientées serveur sont quasiment toujours protégées électriquement à l’aide d’un onduleur afin de ne pas subir les variations de tension sur le réseau éléctrique. NUT (Network UPS Tools) [4] est très bon outils permettant de gérer un large éventail d’onduleurs.
# aptitude install nut
# adduser nut dialout # cp /usr/share/doc/nut/examples/ups* /etc/nut/ # gunzip /etc/nut/upsmon.conf.gz
- edition de /etc/nut/ups.conf :
[MGE750]
driver = mge-shut
port = /dev/ttyS0
desc = "MGE Ellipse 750 USBS"
- edition de /etc/nut/upsd.users :
[upsuser]
password = upssecret
allowfrom = localhost
upsmon master
- edition de /etc/nut/upsmon.conf :
MONITOR MGE750@localhost 1 upsuser upssecret master
- edition de /etc/default/nut
START_UPSD=yes START_UPSMON=yes
Enfin, il reste à corriger quelques permissions sur les fichiers et à re-démarrer le service :
# chown root:nut /etc/nut/upsd.* # chmod 640 /etc/nut/upsd.* # chown root:nut /etc/nut/upsmon.conf # chmod 640 /etc/nut/upsmon.conf # /etc/init.d/nut restart
- Dans /etc/nut/upsmon.conf
NOTIFYCMD /etc/nut/mail_alert.sh NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC NOTIFYFLAG REPLBATT SYSLOG+WALL+EXEC NOTIFYFLAG NOCOMM SYSLOG+WALL+EXEC NOTIFYFLAG FSD SYSLOG+WALL+EXEC
- Dans /etc/nut/mail_alert.sh
#!/bin/bash # NUT mail Alerte echo "$*" | mail -s "UPS alert" root
- Pour valider la configuration (fsd = force shutdown) :
upsmon -c fsd
- Pour visualiser l’état de l’onduleur
# upsc MGE750@localhost