\documentclass[a4paper,11pt]{report}

	\input{../includes/headers_global.tex}

	\def\sitename{Debian GNU/Linux }
	\def\shorttitre{Installation}
	\def\titre{Installation Serveur}
	\def\autheur{Matthieu Vogelweith}
	\def\subject{Installation d'un serveur Debian GNU/Linux 4.0 (Etch)}
	\def\keywords{Debian, Linux, Matthieu, Vogelweith, Serveur, Etch, Kernel, Udev, HDParm}

	\input{../includes/headers.tex}
	
\begin{document}

\renewcommand{\bibname}{R\'ef\'erences}

\begin{titlepage}
	\maketitle
\end{titlepage}

\chapter*{Résumé}

	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 \cite{debian} 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.\\
	
\input{../includes/licence.tex}

\tableofcontents
		
\chapter{Introduction}

	\section{Pourquoi Debian Etch ?}

	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 :\\

 - \textbf{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.

 - \textbf{Stabilité :} Debian GNU/Linux est construite autour du noyau Linux \cite{kernel} 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.
 
 - \textbf{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.

 - \textbf{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é.

	\section{Préparation}

	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 \cite{netinst}. Ces images représentent seulement 120 MB, il peut donc être intéressant d'utiliser un CD-RW ...
	
\chapter{Installation}

	\section{Démarrage}
	
	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\\

	\section{Gestion de l'espace disque}

	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\\

    \section {Suite de l'installation}

    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"\\

    \section{Installation du bootloader}

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 :

\vspace{1em}
\begin{lstlisting} 
~ # 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/
\end{lstlisting}
\vspace{1em}

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 \textbf{grub} :

\vspace{1em}
\begin{lstlisting} 
sh-3.1# grub
grub>
\end{lstlisting}
\vspace{1em}

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 :

\vspace{1em}
\begin{lstlisting} 
grub> root (hd0,0)
 Filesystem type is xfs, partition type 0x83

grub> find /boot/grub/stage1
 (hd0,0)

grub> setup (hd0)
 ...

grub> quit
\end{lstlisting}
\vspace{1em}

Il reste maintenant à générer le fichier de configuration, pour cela exécuter Simplement la commande suivante :

\vspace{1em}
\begin{lstlisting} 
sh-3.1# update-grub
\end{lstlisting}
\vspace{1em}

Pour revenir à l'installeur, appuyer sur Alt+F1 et choisir le menu "Continue without boot loader".

	\section{Fin de l'installation}

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\\

\chapter{Configuration de base}

	\section{Aptitude}

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 :

\vspace{1em}
\begin{lstlisting} 
# echo "aptitude::Recommends-Important \"false\";" > /etc/apt/apt.conf.d/90recommends 
# echo "aptitude::Purge-Unused \"true\";" > /etc/apt/apt.conf.d/91purgeunused
\end{lstlisting}
\vspace{1em}

	\section{Les packages de base}

	Pour commencer, on peut mettre à jour la machine et installer quelques packages utiles aux manipulations de base :

\vspace{1em}
\begin{lstlisting}
# 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
\end{lstlisting}
\vspace{1em}

    Les paquets étant installés, on peut supprimer les .deb téléchargés précédemment avec le commande suivante :

\vspace{1em}
\begin{lstlisting}
# aptitude clean
\end{lstlisting}
\vspace{1em}
	
	\section{Un peu de couleur ...}
	
	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 \textbf{/root/.bashrc}. Ces modifications permettent d'ajouter quelques raccourcis pour la commande ls et d'y ajouter la couleur :

\vspace{1em}
\begin{lstlisting} 
export LS_OPTIONS='--color=auto'
eval `dircolors`
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
\end{lstlisting}
\vspace{1em}
	
	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 \textbf{/etc/vim/vimrc.local} (ce fichier est sourcé par /etc/vim/vimrc s'il existe) :

\vspace{1em}
\begin{lstlisting} 
syntax on
set paste
set background=dark
set softtabstop=4
set shiftwidth=4
set tabstop=4
set expandtab
\end{lstlisting}
\vspace{1em}

    L'option "set paste" permet de faire des copier-coller sans avoir de problèmes d'indentations !

	\section{Serveur de temps}

Le paquet \textbf{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 :

\vspace{1em}
\begin{lstlisting}
restrict 192.168.1.0 mask 255.255.255.0
\end{lstlisting}
\vspace{1em}

Les modifications seront prises en compte après un redémarrage du service.

\vspace{1em}
\begin{lstlisting}
# /etc/init.d/ntp restart
\end{lstlisting}
\vspace{1em}

Pour tester ce service, il suffit d'exécuter la commande suivante depuis un poste client :

\vspace{1em}
\begin{lstlisting}
# ntpdate -u 192.168.1.254
19 Oct 18:57:32 ntpdate[11571]: adjust time server 192.168.1.254 offset 0.006447 sec
\end{lstlisting}
\vspace{1em}


\chapter{Protection électrique}

    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 (\textbf{N}etwork \textbf{U}PS \textbf{T}ools) \cite{nut} est très bon outils permettant de gérer un large éventail d'onduleurs.
    
\section{Installation}

\vspace{1em}
\begin{lstlisting}
# aptitude install nut
\end{lstlisting}
\vspace{1em}

\vspace{1em}
\begin{lstlisting}
# adduser nut dialout
# cp /usr/share/doc/nut/examples/ups* /etc/nut/
# gunzip /etc/nut/upsmon.conf.gz
\end{lstlisting}
\vspace{1em}
    
    - edition de /etc/nut/ups.conf :
        
\vspace{1em}
\begin{lstlisting}
[MGE750]
    driver = mge-shut
    port = /dev/ttyS0
    desc = "MGE Ellipse 750 USBS"
\end{lstlisting}
\vspace{1em}

    
    - edition de /etc/nut/upsd.users :

\vspace{1em}
\begin{lstlisting}
[upsuser]
    password = upssecret
    allowfrom = localhost
    upsmon master
\end{lstlisting}
\vspace{1em}

    - edition de /etc/nut/upsmon.conf :

\vspace{1em}
\begin{lstlisting}
MONITOR MGE750@localhost 1 upsuser upssecret master
\end{lstlisting}
\vspace{1em}

    - edition de /etc/default/nut

\vspace{1em}
\begin{lstlisting}
START_UPSD=yes
START_UPSMON=yes
\end{lstlisting}
\vspace{1em}

    Enfin, il reste à corriger quelques permissions sur les fichiers et à re-démarrer le service :

\vspace{1em}
\begin{lstlisting}
# 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
\end{lstlisting}
\vspace{1em}

\section{Configuration des alertes}

- Dans /etc/nut/upsmon.conf

\vspace{1em}
\begin{lstlisting}
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
\end{lstlisting}
\vspace{1em}

- Dans /etc/nut/mail\_alert.sh

\vspace{1em}
\begin{lstlisting}
#!/bin/bash
# NUT mail Alerte

echo "$*" | mail -s "UPS alert" root
\end{lstlisting}
\vspace{1em}

\section{Commandes utiles}

- Pour valider la configuration (fsd = force shutdown):

\vspace{1em}
\begin{lstlisting}
upsmon -c fsd
\end{lstlisting}
\vspace{1em}

- Pour visualiser l'état de l'onduleur

\vspace{1em}
\begin{lstlisting}
# upsc MGE750@localhost
\end{lstlisting}
\vspace{1em}

\clearpage
\nocite{*}
\bibliographystyle{unsrt}
\bibliography{\jobname}

%\ifpdf
%\else
%\chapter{Vos commentaires}
%\fi
\end{document}
