2017-06-19 11:03:13 +02:00
<!doctype html>
< html lang = "fr" >
2017-06-19 19:20:27 +02:00
< head >
< meta charset = "utf-8" >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< title > Formation Evolix : installation Linux< / title >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< meta name = "description" content = "A framework for easily creating beautiful presentations using HTML" >
< meta name = "author" content = "Hakim El Hattab" >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< meta name = "apple-mobile-web-app-capable" content = "yes" >
< meta name = "apple-mobile-web-app-status-bar-style" content = "black-translucent" >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< link rel = "stylesheet" href = "../css/reveal.css" >
< link rel = "stylesheet" href = "../css/theme/beige.css" id = "theme" >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
<!-- Theme used for syntax highlighting of code -->
< link rel = "stylesheet" href = "../lib/css/zenburn.css" >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
<!-- Printing and PDF exports -->
< script >
var link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = window.location.search.match(.. / print - pdf / gi) ? '../css/print/pdf.css' : '../css/print/paper.css';
document.getElementsByTagName('head')[0].appendChild(link);
< / script >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
<!-- [if lt IE 9]>
2017-06-19 11:03:13 +02:00
< script src = "../lib/js/html5shiv.js" > < / script >
<![endif]-->
2017-06-19 19:20:27 +02:00
< / head >
< body >
< div class = "reveal" >
<!-- Any section element inside of this container is displayed as a slide -->
< div class = "slides" >
< section >
< h1 > Formation Evolix< / h1 >
< h3 > installation Linux< / h3 >
< / section >
< section >
< h2 > Méthode d'installation< / h2 >
< ul >
< li > CD/ROM ou clé USB (machine physique ou virtuelle)< / li >
< li > Réseau, via boot PXE+DHCP+TFTP< / li >
< li > Image préinstallée par un hébergeur< / li >
< li > Conteneur minimal (LXC/Docker)< / li >
< / ul >
< / section >
< section >
< h2 > Compatibilité du matériel< / h2 >
< ul >
< li > Enjeu principal : carte réseau et controleur disque/RAID< / li >
< li > Test avec Live-CD< / li >
< li > Compatibilité du matériel< / li >
< li > < tt > lspci -n< / tt > sur http://kmuto.jp/debian/hcl/ plus à jour :(< / li >
< li > Listes de diffusion< / li >
< li > Recherche Google avec "site:lists.debian.org/debian-boot"< / li >
< / ul >
< / section >
< section >
< h2 > Choix pour un serveur< / h2 >
< ul >
< li > Carte réseau : 1G ou 10G ?< / li >
< li > CPU Intel Xeon : fréquence ? nombre de cores ? https://www.cpubenchmark.net/< / li >
< li > Quantité de mémoire< / li >
< li > Importance du stockage :< / li >
< li > Local ou distant (NFS, iSCSI)< / li >
< li > Type : SATA, SAS, SSD ?< / li >
< li > Performance lecture/écriture : Mo/s, IOPS< / li >
< li > Gestion du cache< / li >
< / ul >
< / section >
< section >
< h2 > Focus sur le RAID< / h2 >
< ul >
< li > RAID0< / li >
< li > RAID1< / li >
< li > RAID5< / li >
< li > RAID6< / li >
< li > RAID10< / li >
< li > RAID hardware ou logiciel< / li >
< / ul >
< / section >
< section >
< h2 > Focus sur le stockage< / h2 > parted
< / section >
< section >
< h2 > Partitionnement< / h2 >
< ul >
< li > Partitionnement DOS limité à 2,2 T< / li >
< li > Partitionnement GPT< / li >
< li > Outils : fdisk, cfdisk, sfdisk, parted< / li >
< li > /boot / /var /usr /tmp 2xswap /srv /home< / li >
< li > systèmes de fichiers : ext3/ext4, reiserfs, xfs, btrfs< / li >
< / ul >
< / section >
< section >
< h2 > Focus sur RAID logiciel< / h2 >
< / section >
< section >
< h2 > Focus sur LVM< / h2 >
< / section >
< section >
< h2 > Réseau< / h2 >
< ul >
< li > Fichiers de paramètres : < br > Fichiers spécifiques /etc/resolv.conf, /etc/hosts
< / li >
< li > Configuration dynamique DHCP (Dynamic Host Configuration Protocol) : < br > Paramètres réseau sont automatiquement mis en place.
< / li >
< li > Configuration statique : < br > Configuration manuelle des fichiers
< / li >
< li > Outils réseaux : < br > (ifconfig, ping, route, ip, netstat, traceroute...)
< / li >
< / ul >
< / section >
< section >
< h2 > Installation de logiciels< / h2 >
< ul >
< li > Méthode classique de compilation des sources< / li >
< li > Utilisation du système de packages< / li >
< / ul >
< p >
Les packages sont des binaires précompilés qui sont prêts à être installés de façon simple et rapide. < br > Les dépendances sont gérées, ainsi que la mise à jour et la suppression des packages déjà installés (varie selon les distributions).
< / p >
< / section >
< section >
< h2 > TP< / h2 >
< h3 > Installation Debian GNU/Linux< / h3 >
< / section >
< section >
< h2 > Versions actuelles< / h2 >
< ul >
< li > Debian GNU/Linux « Sid » = < em > unstable< / em > < / li >
< li > Debian GNU/Linux 10 (« Buster ») = < em > testing< / em > < / li >
< li > Debian GNU/Linux 9 (« Stretch ») = < em > stable< / em > < / li >
< li > Debian GNU/Linux 8 (« Jessie ») = < em > oldstable< / em > < / li >
< li > Debian GNU/Linux 7 (« Wheezy ») = < em > oldoldstable< / em > < / li >
< / ul >
< / section >
< section >
< h2 > Versions (suite)< / h2 >
< ul >
< li > Debian GNU/Linux 6 (« Squeeze »)< / li >
< li > Debian GNU/Linux 5 (« Lenny »)< / li >
< li > Debian GNU/Linux 4 (« Etch »)< / li >
< li > Debian GNU/Linux 3.1 (« Sarge »)< / li >
< li > Debian GNU/Linux 3.0 (« Woody »)< / li >
< li > Debian GNU/Linux 2.2 (« Potato »)< / li >
< li > Debian GNU/Linux 2.1 (« Slink »)< / li >
< li > Debian GNU/Linux 2.0 (« Hamm »)< / li >
< li > Debian GNU/Linux 1.1 (« Buzz »)< / li >
< / ul >
< / section >
< section >
< h2 > < / h2 >
< ul >
< li > Boot sur CD/DVD ou USB< / li >
< li > Choix de la langue : anglais (en_US.UTF8)< / li >
< li > Réglage du clavier< / li >
< li > Réseau< / li >
< li > Partitionnement< / li >
< li > Choix des miroirs< / li >
< li > Mot de passe< / li >
< li > Choix de packages< / li >
< li > Installation GRUB< / li >
< / ul >
< / section >
< section >
< h2 > console de debug à l'installation< / h2 >
< pre >
< code >
# lspci | grep Eth
# ip addr show
# dmesg | grep sd
# cat /proc/cpuinfo
< / code >
< / pre >
< / section >
< section >
< h2 > Focus sur Vim< / h2 >
< ul >
< pre >
< code >
2017-06-19 11:03:13 +02:00
# apt install vim
# select-editor
2017-06-19 19:20:27 +02:00
# update-alternatives --config editor
2017-06-19 11:03:13 +02:00
# vi /etc/vim/vimrc
let g:skip_defaults_vim = 1
# vi ~/.vimrc
2017-06-19 19:20:27 +02:00
< / code >
< / pre >
< / ul >
< / section >
< section >
< h2 > Incontournables< / h2 >
< ul >
< pre >
< code >
2017-06-19 11:03:13 +02:00
syntax on
set background=dark
set nocompatible
2017-06-19 19:20:27 +02:00
< / code >
< / pre >
< / ul >
< / section >
< section >
< h2 > Pour les devs< / h2 >
< ul >
< pre >
< code >
2017-06-19 11:03:13 +02:00
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
2017-06-19 19:20:27 +02:00
< / code >
< / pre >
< / ul >
< / section >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< section >
< h2 > Vim basics< / h2 >
< pre style = "width:50%; margin: 0 auto;" >
2017-06-19 11:03:13 +02:00
Mode "commandes" < - > Mode "insertion"
[Échap] < - > i
2017-06-19 19:20:27 +02:00
< / pre >
< / section >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< section >
< h2 > Vim basics< / h2 >
< pre style = "width:70%; margin: 0 auto;" >
2017-06-19 11:03:13 +02:00
Mode "commandes"
----------------
:w enregistrer
:wq enregistrer et quitter
:q! quitter sans enregistrer
gg aller tout en haut
G aller tout en bas
$ aller en fin de ligne
/foo chercher "foo"
dd supprimer (ou couper) la ligne actuelle
yy copie la ligne actuelle
x supprimer (ou couper) le caractère courant
p coller après le curseur
P coller avant le curseur
v mode visuel pour couper ou copier facilement
2017-06-19 19:20:27 +02:00
rX remplace le caractère courant par X
2017-06-19 11:03:13 +02:00
u annule la dernière commande
Ctrl+r restaure la dernière commande
2017-06-19 19:20:27 +02:00
< / pre >
< / section >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< section >
< h2 > Vim basics< / h2 >
< pre style = "width:65%; margin: 0 auto;" >
Passer en mode insertion
2017-06-19 11:03:13 +02:00
------------------------
2017-06-19 19:20:27 +02:00
2017-06-19 11:03:13 +02:00
i passer en mode insert avant le curseur
a passer en mode insert après le curseur
I passer en mode insert au début de la ligne
A passer en mode insert à la fin de la ligne
o sauter une ligne et passer en mode insert
2017-06-19 19:20:27 +02:00
< / pre >
< / section >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< section >
< pre >
< code >
2017-06-19 11:03:13 +02:00
# apt install locales
$ LANG=fr_FR.UTF8 /usr/bin/vimtutor
2017-06-19 19:20:27 +02:00
< / code >
< / pre >
< / section >
< section >
< h2 > Gestion des paquets dans Debian< / h2 >
< h3 > dpkg et APT< / h3 >
< / section >
< section >
< h3 > dpkg< / h3 >
< h4 > gestion bas-niveau (manipulation directe des paquets)< / h4 >
< pre >
< code >
$ dpkg -l
# dpkg --unpack
# dpkg --configure
# dpkg -i
# dpkg -r
# dpkg -P
$ dpkg -L
$ dpkg -S
$ dpkg -s
# dpkg-reconfigure
< / code >
< / pre >
< / section >
< section >
< h3 > APT< / h3 >
< h4 > gestion avancée (dépendances, mises à jour, conflits…)< / h4 >
< pre >
Sources de paquets : /etc/apt/sources.list
< code >
# netselect / apt-cdrom / apt-config
< / code >
Interface pour APT : apt, apt-cache, apt-get, aptitude
< code >
# apt update
# apt upgrade
# apt install paquet
# apt remove paquet
# apt purge paquet
$ apt-cache show / search / -n search / depends / rdepends / policy
< / code >
< / pre >
< / section >
< section >
< pre >
Autres commandes :
< code >
# apt -s install
$ apt-file
$ apt-show-versions
# apt-listchanges
# apt clean/autoclean
# apt upgrade/full-upgrade
$ apt changelog
$ rmadison
# apt-get check
$ apt source
# apt build-dep
$ debuild -us -uc
< / code >
< / pre >
< / section >
< section >
< pre >
< code >
2017-06-19 11:03:13 +02:00
# vim /etc/apt/sources.list
2017-06-19 19:20:27 +02:00
< / code >
2017-06-19 11:03:13 +02:00
deb http://mirror.evolix.org/debian/ stretch main
deb http://security.debian.org/ stretch/updates main
deb http://mirror.evolix.org/debian/ stretch-updates main
deb http://mirror.evolix.org/debian/ stretch main
2017-06-19 19:20:27 +02:00
< / pre >
< / section >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< section >
< pre >
< code >
2017-06-19 11:03:13 +02:00
# dpkg-reconfigure -plow debconf
# vim /etc/apt/apt.conf.d/99custom
2017-06-19 19:20:27 +02:00
< / code >
2017-06-19 11:03:13 +02:00
APT::Install-Recommends "false";
APT::Install-Suggests "false";
DPkg::Pre-Invoke { "mount -oremount,exec /tmp & & mount -oremount,rw /usr || true"; };"
DPkg::Post-Invoke { "mount -oremount /tmp & & mount -oremount /usr || true"; };"
2017-06-19 19:20:27 +02:00
< / pre >
< / section >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< section >
< pre >
< code >
2017-06-19 11:03:13 +02:00
# vim /etc/fstab
2017-06-19 19:20:27 +02:00
< / code >
2017-06-19 11:03:13 +02:00
/dev/sda2 / ext4 defaults,errors=remount-ro 0 1
/dev/sda1 /boot ext4 defaults 0 2
/dev/sda3 /var ext4 defaults 0 2
/dev/sda5 /usr ext4 defaults,ro 0 2
/dev/sda6 /tmp ext4 defaults,noexec,nosuid,nodev 0 2
/dev/sda7 none swap sw 0 0
/dev/sda8 none swap sw 0 0
/dev/sda9 /home ext4 defaults,noexec,nosuid,nodev 0 2
tmpfs /var/tmp tmpfs defaults,noexec,nosuid,nodev 0 2
2017-06-19 19:20:27 +02:00
< / pre >
< / section >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< section >
< pre >
2017-06-19 11:03:13 +02:00
On installe Postfix :
2017-06-19 19:20:27 +02:00
< code >
2017-06-19 11:03:13 +02:00
# apt install postfix
2017-06-19 19:20:27 +02:00
< / code >
2017-06-19 11:03:13 +02:00
On renvoie tous les alias vers root :
2017-06-19 19:20:27 +02:00
< code >
2017-06-19 11:03:13 +02:00
# getent passwd | cut -d":" -f1 | sed "s/$/: root/" > /etc/aliases
# vim /etc/aliases
# newaliases
2017-06-19 19:20:27 +02:00
< / code >
< / pre >
< / section >
2017-06-19 11:03:13 +02:00
2017-06-19 19:20:27 +02:00
< section >
< pre >
2017-06-19 11:03:13 +02:00
Installons les outils de base :
2017-06-19 19:20:27 +02:00
< code >
2017-06-19 11:03:13 +02:00
# apt install ssh less mailx sudo munin htop iotop iftop
2017-06-19 19:20:27 +02:00
< / code >
< / pre >
< / section >
< section >
< pre >
Mesure des performances disque :
< code >
2017-06-19 11:03:13 +02:00
# time dd if=/dev/zero of=/home/32gb bs=1024k count=32768
# time dd if=/home/32gb of=/dev/null bs=1024k count=32768
# time rm /home/32gb
# apt install postgresql-contrib
# /usr/lib/postgresql/9.6/bin/pg_test_fsync
2017-06-19 19:20:27 +02:00
< / code >
< / pre >
< / section >
< section >
< pre >
Mesure des performances réseau :
< code >
2017-06-19 11:03:13 +02:00
# apt install iperf mtr-tiny
$ ping -4 google.fr
$ mtr -4 google.fr
$ iperf -c debit.k-net.fr
2017-06-19 19:20:27 +02:00
< / code >
< / pre >
< / section >
< section >
< h2 > Comment choisir sa version de Linux ?< / h2 >
< ul >
< li > Versions logiciels fixes : Apache / PHP / MySQL / etc.< / li >
< li > Version nue / panel (cpanel, plesk)< / li >
< li > apt-get / yum install< / li >
< / ul >
< / section >
< section >
< h2 > Récapitulatif< / h2 >
< ul >
< li > Choix matériel< / li >
< li > Choix version de Linux< / li >
< li > Premières optimisations< / li >
< li > Validation des performances< / li >
< / ul >
< / section >
2017-06-19 11:03:13 +02:00
< / div >
2017-06-19 19:20:27 +02:00
< / div >
< script src = "../lib/js/head.min.js" > < / script >
< script src = "../js/reveal.js" > < / script >
< script >
// More info https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
center: true,
transition: 'slide', // none/fade/slide/convex/concave/zoom
// More info https://github.com/hakimel/reveal.js#dependencies
dependencies: [{
src: '../lib/js/classList.js',
condition: function() {
return !document.body.classList;
}
}, {
src: '../plugin/markdown/marked.js',
condition: function() {
return !!document.querySelector('[data-markdown]');
}
}, {
src: '../plugin/markdown/markdown.js',
condition: function() {
return !!document.querySelector('[data-markdown]');
}
}, {
src: '../plugin/highlight/highlight.js',
async: true,
callback: function() {
hljs.initHighlightingOnLoad();
}
}, {
src: '../plugin/zoom-js/zoom.js',
async: true
}, {
src: '../plugin/notes/notes.js',
async: true
}]
});
< / script >
< / body >
2017-06-19 11:03:13 +02:00
< / html >