evoformations/reveal/linux_install.html
2017-06-20 02:41:53 +02:00

590 lines
18 KiB
HTML

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Formation Evolix : installation Linux</title>
<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
<meta name="author" content="Hakim El Hattab">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="reveal.js/css/reveal.css">
<link rel="stylesheet" href="reveal.js/css/theme/beige.css" id="theme">
<!-- Theme used for syntax highlighting of code -->
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css">
<!-- 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) ? 'reveal.js/css/print/pdf.css' : 'reveal.js/css/print/paper.css';
document.getElementsByTagName('head')[0].appendChild(link);
</script>
<!--[if lt IE 9]>
<script src="reveal.js/lib/js/html5shiv.js"></script>
<![endif]-->
</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>Si possible, test avec Live-CD</li>
<li><tt>lspci -n</tt> sur http://kmuto.jp/debian/hcl/ plus à jour :(</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>
<ul><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></li>
</ul>
</section>
<section>
<h2>Focus sur le stockage</h2>
</section>
<section>
<h2>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>Partitionnement</h2>
<ul>
<li>Partitionnement msdos limité à 2To</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>RAID logiciel</h2>
<pre>
<code>
# apt install mdadm
$ /sbin/mdadm -V
$ /sbin/modinfo md_mod
# mdadm --detail --scan
# cat /proc/mdstat
</code>
</pre>
<pre>
<code>
# mdadm --create /dev/md42 --chunk=64 --metadata=default --level=raid1 \
--raid-devices=2 /dev/sdy1 /dev/sdz1
# mdadm --detail /dev/md42
</code>
</pre>
</section>
<section>
<h2>RAID logiciel (suite)</h2>
<pre>Manipulation en cas de disque HS</pre>
<pre>
<code>
# sfdisk -d /dev/sda > /tmp/part.out
# sfdisk -f /dev/sdz < /tmp/part.out
# partprobe /dev/sdz
# apt install gdisk
# sgdisk -R=/dev/sdz /dev/sda
# sgdisk -G /dev/sdz
</code>
</pre>
</section>
<section>
<h2>RAID logiciel (suite)</h2>
<pre>Manipulation en cas de disque HS (suite)</pre>
<pre>
<code>
# mdadm /dev/md1 --add /dev/sdz1
mdadm: added /dev/sdz1
# mdadm /dev/md2 --add /dev/sdz2
mdadm: added /dev/sdz2
# cat /proc/mdstat
Personalities : [raid1]
md2: active raid1 sda1[1] sdz1[0]
1893933820 blocks super 1.2 [2/1] [U_]
[>....................] recovery =
4.0% (75859776/1893933820) finish=493.5min speed=61391K/sec
</code>
</pre>
</section>
<section>
<h2>LVM</h2>
<pre>
<code>
# apt install lvm2
# pvcreate /dev/sdz8
# pvdisplay / pvs
# vgcreate group1 /devdz8
# vgdisplay / vgs
# lvcreate -L5G -nfirstlvmvol group1
# ls /dev/mapper/
</code>
</pre>
</section>
<section>
<h2>Réseau</h2>
<ul>
<li>Fichiers standards : /etc/resolv.conf, /etc/hosts</li>
<li>Configuration statique ou dynamique (DHCP) ?</li>
<li>Configuration réseau : pas de standard sous Linux...</li>
<li><pre><code>apt install net-tool</code></pre></li>
<li>Outils réseaux de base : 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>
# apt install vim
# select-editor
# update-alternatives --config editor
# vi /etc/vim/vimrc
let g:skip_defaults_vim = 1
# vi ~/.vimrc
</code>
</pre>
</ul>
</section>
<section>
<h2>Incontournables</h2>
<ul>
<pre>
<code>
syntax on
set background=dark
set nocompatible
</code>
</pre>
</ul>
</section>
<section>
<h2>Pour les devs</h2>
<ul>
<pre>
<code>
set expandtab
set shiftwidth=4
set softtabstop=4
set tabstop=4
</code>
</pre>
</ul>
</section>
<section>
<h2>Vim basics</h2>
<pre style="width:50%; margin: 0 auto;">
Mode "commandes" <-> Mode "insertion"
[Échap] <-> i
</pre>
</section>
<section>
<h2>Vim basics</h2>
<pre style="width:70%; margin: 0 auto;">
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
rX remplace le caractère courant par X
u annule la dernière commande
Ctrl+r restaure la dernière commande
</pre>
</section>
<section>
<h2>Vim basics</h2>
<pre style="width:65%; margin: 0 auto;">
Passer en mode insertion
------------------------
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
</pre>
</section>
<section>
<pre>
<code>
# apt install locales
$ LANG=fr_FR.UTF8 /usr/bin/vimtutor
</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
</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>
# vim /etc/apt/sources.list
</code>
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
</pre>
</section>
<section>
<pre>
<code>
# dpkg-reconfigure -plow debconf
# apt remove aptitude
# vim /etc/apt/apt.conf.d/99custom
</code>
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"; };"
</pre>
</section>
<section>
<pre>
<code>
# vim /etc/fstab
</code>
/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
</pre>
</section>
<section>
<pre>
On installe Postfix :
<code>
# apt install postfix
</code>
On renvoie tous les alias vers root :
<code>
# getent passwd | cut -d":" -f1 | sed "s/$/: root/" > /etc/aliases
# vim /etc/aliases
# newaliases
</code>
</pre>
</section>
<section>
<pre>
Installons les outils de base :
<code>
# apt install ssh less mailx sudo munin htop iotop iftop
</code>
</pre>
</section>
<section>
<pre>
Mesure des performances disque :
<code>
# 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
</code>
</pre>
</section>
<section>
<pre>
Mesure des performances réseau :
<code>
# apt install iperf mtr-tiny
$ ping -4 google.fr
$ mtr -4 google.fr
$ iperf -c debit.k-net.fr
</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 ou panel (cpanel, plesk) ?</li>
<li>apt-get ou yum ?</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>
</div>
</div>
<script src="reveal.js/lib/js/head.min.js"></script>
<script src="reveal.js/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: 'reveal.js/lib/js/classList.js',
condition: function() {
return !document.body.classList;
}
}, {
src: 'reveal.js/plugin/markdown/marked.js',
condition: function() {
return !!document.querySelector('[data-markdown]');
}
}, {
src: 'reveal.js/plugin/markdown/markdown.js',
condition: function() {
return !!document.querySelector('[data-markdown]');
}
}, {
src: 'reveal.js/plugin/highlight/highlight.js',
async: true,
callback: function() {
hljs.initHighlightingOnLoad();
}
}, {
src: 'reveal.js/plugin/zoom-js/zoom.js',
async: true
}, {
src: 'reveal.js/plugin/notes/notes.js',
async: true
}]
});
</script>
</body>
</html>