Skip to content
Snippets Groups Projects
Commit ee95fe16 authored by Ethan Robert's avatar Ethan Robert
Browse files

Added Gitea

parent 797e4ba2
No related branches found
No related tags found
No related merge requests found
S2.03 - HAMIDA,DOCHY,ROBERT/assets/fig1_specs.png

49.9 KiB

S2.03 - HAMIDA,DOCHY,ROBERT/assets/openlogo-100.jpg

8.22 KiB

S2.03 - HAMIDA,DOCHY,ROBERT/assets/tig-diff.png

17.9 KiB

S2.03 - HAMIDA,DOCHY,ROBERT/assets/tig-main.png

26.8 KiB

S2.03 - HAMIDA,DOCHY,ROBERT/assets/tig-tree.png

87.7 KiB

# Étude des applications clientes
Cette section traitera principalement de l'étude des applications installées sur la machine serveur, avant l'installation d'un serveur git.
## Analyse préliminaire de `git` et des outils graphiques associés
Bien qu'un environnement graphique ne soit pas installé, cela ne change pas réellement les choses. La seule différence est **l'impossibilité d'installer un client graphique `git`**.
### Les interfaces graphiques pour git
Ici, on ne pourra donc pas installer `gitk` ou `git-gui`. Cependant, voici un bref résumé de ces logiciels, et de leur utilité.
`gitk` et `git-gui` sont deux clients *graphiques* pour `git`, écrits en python et utilisant la suite d'outils TCL/TK, qui permet la construction d'interfaces graphiques simples.
- `gitk` permet l'affichage des changements dans un répo Git, ou de quelques *commits* sélectionnés. Ceci inclut la visualisation du *graphique des commits*, ainsi que celle des fichiers dans l'arbre et les changements effectués sur ceux-ci. *([gitk, documentation git](https://git-scm.com/docs/gitk))*
- `git gui` permet principalement d'effectuer des changements dans les répos git en écrivant de nouveaux *commits*, en ajoutant de nouveaux changements à ceux-ci, en créant de nouvelles branches ou en les fusionnant localement, ou en récupérant ou publiant les changements depuis ou vers les sources distantes.
À l'inverse de `gitk`, `git gui` se concentre principalement sur la génération des *commits* ainsi que sur l'annotation des fichiers, et **ne montre pas l'historique du projet**. *([git-gui, documentation git](https://git-scm.com/docs/git-gui))*
### Comparaison avec un autre logiciel
Le challenge est ici un peu plus complexe, car il faudra choisir **obligatoirement** un visualiseur ne nécéssitant pas une interface graphique, donc nous sommes obligés de choisir un outil fonctionnant dans le terminal.
#### Présentation de `tig`
Ici, nous avons choisi `tig`. Il s'agit d'une interface en mode texte pour `git` basée sur le set d'outils `ncurses`, qui permet l'affichage d'interfaces complexes dans le terminal.
![Liste des commits en utilisant `tig` (Jonas Fonseca, 2009)](assets/tig-main.png)
`tig` permet principalement de se déplacer dans un répo Git, mais peut également servir à l'édition de *commits*, et fonctionne plus largement comme logiciel de mise en page pour la plupart des commandes `git`, telles que :
- `git branch`, qui affiche la liste des branches du répo
- `git status`, qui affiche la liste des changements
Et ainsi de suite.
Il s'utilise donc de cette manière :
```bash
git <commande> | tig
```
#### Installation de `tig`
Pour l'installer, il suffit simplement de télécharger une archive source depuis [la page releases du GitHub de tig](https://github.com/jonas/tig/releases).
Une fois extraite, on effectue simplement ces commandes )à l'intérieur du répertoire source :
```bash
# Compilation de l'outil
make prefix=/usr/local
# Installation
sudo make install prefix=/usr/local
```
On peut également installer la documentation de l'outil :
```
make install-doc
```
#### Comparaison avec la commande simple `git`
Cet outil permet avant tout d'avoir accès à une mise en page plus élégante de la sortie des commandes `git`, qui ne sont pas toujours très faciles à comprendre.
![Vue de `git diff` avec `tig` (Jonas Fonseca, 2009)](assets/tig-diff.png)
![Sortie de `git tree` en utilisant `tig` (Jonas Fonseca, 2009)](assets/tig-tree.png)
Cela a l'avantage de permettre une compréhension plus claire des commandes git, ainsi qu'une navigation plus facile. On n'est ainsi plus obligé de manipuler la sortie de `git` avec des outils comme `less` ou `wc`, car tout est directement affiché.
Cependant, `tig` demande de constamment taper sa commande à la fin de chaque commande `git`. On ne peut pas simplement lancer l'outil et le laisser agir seul comme c'est le cas avec `gitk` ou `git-gui`. C'est un de ses désavantages.
# Procédure d'installation
Voici la procédure d'installation utilisée pour la création de la machine.
## Choix du système d'exploitation
Cette machine virtuelle utilise Debian. Il s'agit d'une distribution Linux crée en **1991** par Ian Murdock. *(Selon la page [À Propos de Debian](https://www.debian.org/intro/about.fr.html))*
![Logo Debian](assets/openlogo-100.jpg)
> Son nom vient en fait du nom de la femme de Ian, Deborah, ainsi que de son propre nom, eux deux étant très impliqué sur le projet. *([Bref historique de Debian](https://www.debian.org/doc/manuals/project-history/project-history.fr.pdf))*
Debian possède l'avantage d'être encore **une des seules distributions GNU/Linux connues complètement open-source et sous license libre, gérées par des organisations plutôt que des entreprises**. En effet, la plupart des autres choix *mainstream* sont aujourd'hui gérés par des entreprises, à l'instar d'Ubuntu (Canonical).
Debian tient à sa liberté, en faisant le choix à chaque fois de **n'inclure que des logiciels libres par défaut dans la distrubution**.
## Sélection de l'image disque
La première étape consistait ici à récupérer l'image disque (.iso) sur le site officiel du projet Debian.
Il s'agit d'un fichier représentant un disque virtuel (un ensemble de données étant agencées selon les spécifications de tables de partitionnement (GPT, DOS) et de systèmes de fichiers conventionnels comme FAT32, Ext4, ou encore NTFS. *([Ionos.fr](https://www.ionos.fr/digitalguide/serveur/know-how/quest-ce-quun-fichier-iso/))*
Ce type de fichier a plusieurs avantages :
- Peut être gravé sur un média amovible (ou non)
- Peut être utilisé comme disque virtuel pour une machine virtuelle.
Il s'agit donc d'un format de fichier optimal pour la distribution de systèmes d'exploitation comme Debian.
> **Attention**
> La machine hôte étant ici équipée d'un processeur ARM (Apple Silicon), on utilisera une image disque Debian ARM.
> Cependant, la procédure reste exactement la même avec une image x86_64 (amd64)
> **Bref historique**
> Depuis 2010, le passage a été progressivement fait vers des machines avec jeux d'instruction 64-bit. Ils sont bien plus efficaces que des processeurs 32-bit, car ils permettent essentiellement d'adresser 2^(64) (16EiO) octets de mémoire centrale, contre seulement 2^(32) (4 GiO) pour les processeurs 32-bit. On peut donc gérer plus de RAM, mais aussi des instructions plus longues.
Le choix a été fait d'utiliser une image `netinst`, qui reste assez légère (~300MB) et avantage les bonnes connexions internet.
Cette image permet d'**installer exactement ce dont l'utilisateur aura besoin**, sans programme additionnel potentiellement non-voulu, à l'inverse d'une image `live-CD`, qui **contient directement le contenu du système d'exploitation dans l'image iso**. *([Documentation Debian](https://www.debian.org/releases/stable/i386/ch04s01.fr.html))*
## Création de la machine virtuelle
Ici, l'application de virtualisation utilisée est [Oracle VirtualBox](https://www.virtualbox.org). Il s'agit d'un programme open-source de virtualisation, ici (sous macOS et Linux) se basant sur l'hyperviseur Qemu/KVM pour alimenter les machines virtuelles.
Voici les caractéristiques de la machine virtuelle crée :
- **Type** : Linux
- **Version** : Debian (64-bit)
- **Mémoire vive** : 2048 Mo (2Go)
- **Disque Dur** : 20Go
> **Un mot sur la configuration réseau**
> Ici, la configuration réseau de la machine est laissée par défaut. Il s'agit ici de NAT.
> La traduction d'adresses réseau (NAT ou Network Address Translation en anglais), permet à la machine virtuelle d'accéder à la même connexion internet que la machine hôte, **sans pour autant obtenir une adresse physique sur le réseau local de la machine**. Ça l'avantage de ne pas avoir à allouer d'adresse réseau, mais cela ne permet pas aux autres machines du réseau d'accéder aux services de la machine virtuelle. *([IT-Connect.fr](https://www.it-connect.fr/comprendre-les-differents-types-de-reseaux-virtualbox/#A_Le_mode_NAT))*
*Toute cette configuration est stockée dans un fichier XML géré directement par VirtualBox portant le nom de la machine virtuelle à l'extension `.vbox`*
*Il est possible de modifier directement ce fichier. Par exemple, on peut changer le nombre de processeurs virtuels de la machine à 2, dans la section `<Platform>` à la fin du fichier :*
```xml
<Platform architecture="ARM">
<RTC localOrUTC="UTC"/>
<Chipset type="ARMv8Virtual"/>
<CPU count="2"/>
</Platform>
```
## Installation de la machine
L'installation de Debian étant en grande partie guidée, on ne s'attardera pas vraiment sur la procédure en elle-même. La configuration reste basique :
- **Hostname** : serveur / pas de domaine
- **Pays/Langue** : France
- **Mirroir principal** : `http://debian.polytech-lille.fr` *(C'est le mirroir le plus proche géographiquement, donc potentiellement le plus rapide)*
- **Proxy** : Aucun
- **Partitionnement** : Tout dans la même seule partition
- **Logiciels de démarrage** :
- Serveur web
- Serveur ssh
- Utilitaires usuels du système
- *Et donc pas d'environnement de bureau/graphique*
> **Pourquoi pas d'environnement graphique ?**
> Les environnements de bureau tels que MATE ou GNOME (**GN**U **N**etwork **O**bject **M**odel **E**nvironment) sont un ensemble d'applications et de programmes informatiques *graphiques* permettant l'utilisation d'une machine de manière plus conviviale qu'une *interface texte* comme un terminal. *([Wiki Debian](https://wiki.debian.org/fr/DesktopEnvironment))*
> Ici, on préfère éviter d'en utiliser un, pour des raisons de légèreté. Le serveur X11 utilisé pour faire tourner les applications graphiques étant très consommateur en mémoire, on préfère économiser cette mémoire vive pour pouvoir la dédier aux services tournant sur la machine. On peut toujours accéder à la machine via la console `tty` ou par SSH. *([Ubuntu Wiki](https://help.ubuntu.com/community/ServerGUI))*
> **Un serveur SSH**
> Il s'agit d'un service (Secure Shell) permettant d'exécuter des commandes sur la machine via une machine distante, présente dans le même réseau ou non (donc via un VPN).
> **Un serveur web**
> Un serveur web permettra l'affichage d'une page web, en répondant aux requêtes `HTTP` (HyperText Transport Protocol) (souvent sur le port 80 ou 8080) par des pages présentes localement sur la machine.
> **À propos de la configuration d'un proxy**
> Ici, on ne configurera pas de serveur mandataire (ou proxy). Il s'agit d'un service faisant office d'intermédiaire entre deux hôtes pour faciliter ou surveiller leurs échanges (par exemple filtrer et empêcher des requêtes DNS).
> Ici, on n'en aura pas besoin, car aucun proxy n'est installé sur la machine hôte. S'il y en a un sur le réseau, la machine hôte a déjà été configurée pour accéder à internet à travers le proxy. Le NAT de VirtualBox permet d'éviter de tout reconfigurer.
Une fois l'installation de la machine terminée, on peut passer à sa configuration.
## Configuration de la machine
### Accès root pour `user`
L'utilisateur crée par l'installation de Debian ne possède pour l'instant pas d'accès aux permissions `root` et ne peut donc pour l'instant que modifier ses propres fichiers (essentiellement son dossier dans le `/home`).
Une solution possible est l'utilisation du programme `sudo`. Il agit à la manière d'un intermédiaire que l'on configure pour exécuter certaines actions en tant que superutilisateur.
> **Pourquoi ne pas directement accéder à la machine en tant que `root` ?**
> Il est préférable d'éviter d'accéder à la machine en tant que `root` pour des raisons de sécurité. L'accès distant (SSH) au serveur pouvant être obtenu sans autorisation, on préfère prévenir les dégâts trop importants en limitant une attaque à un seul utilisateur. Aussi, certaines actions ne sont faisables qu'en tant qu'utilisateur normal, comme des tâches de compilation de code ou autre, pour éviter de causer des dégâts importants à la machine. *([Wiki Ubuntu](https://doc.ubuntu-fr.org/tutoriel/comment_eviter_root_quand_c_est_possible)*)
Le programme `sudo` est installé par défaut sur Debian si on a accepté de créer un compte utilisateur. On peut donc activer les droits pour `user` avec la commande (en tant que `root` pour commencer) :
```bash
usermod -aG sudo user
```
`sudo` est configuré par défaut pour permettre aux utilisateurs membres du groupe `sudo` d'accéder aux droits complets d'administrateur, via la commande :
```
sudo <commande>
```
On peut vérifier son bon déroulement en affichant les groupes auxquels `user` appartient :
```bash
groups user
```
Ou sans argument si on est connecté directement en tant que `user`.
### Installation des VBox GAs
Les VBox Guest Additions (dont on évitera de traduire le nom en français pour des raisons évidentes) est un module pour le noyau Linux permettant de faciliter l'interaction entre la machine hôte et la machine virtuelle, comme par exemple :
- La mise en place de dossiers partagés entre l'hôte et l'invité
- Le partage du presse-papier permettant de copier-coller aussi bien sur la machine virtuelle que sur l'hôte
- Le redimensionnement automatique de l'écran selon la taille de la fenêtre
Pour l'installer, il faut d'abord s'assurer de disposer des outils permettant de compiler le module.
#### Installation des outils de compilation.
Sur Debian, comme sur beaucoup d'autres distributions Linux, les outils de compilation (GCC, Make, etc) ne sont pas directement installés sur le système, afin d'économiser de l'espace.
Les bibliothèques partagées nécessaires à la compilation de certains programmes sont également séparées (et c'est une spécificité des distributions de la famille de Debian) dans les paquets (*le paquet ncurses ne contient que la fonctionnalité nécessaire au fonctionnement des programmes basés sur `ncurses`, mais pas leur compilation, dont les outils seront contenus dans `ncurses-dev`*)
Il faudra donc les installer sur le système via la commande suivante :
```bash
sudo apt install build-essential
```
Il faut également installer les `headers` du noyau Linux, qui sont **obligatoires** à la compilation de modules pour le noyau :
```bash
sudo apt install linux-headers-generic
```
> **Versions du kernel et headers**
> Sur Debian, plusieurs versions du noyau Linux sont disponibles dans les dépôts. En fonction de la version de l'image ISO choisie, cette version peut changer. Il y a également des versions spéciales pour certaines configurations particulières, comme une image allégée pour les machines virtuelles, ou pour les systèmes embarqués.
> Sur Debian 12, la version du Kernel (noyau) Linux est la 6.1. Il est founri par défaut par le paquet `linux-image-generic`. On installe donc les headers `linux-headers-generic` liés au paquet.
#### Compilation du module
L'étape suivante est la compilation du module après l'insertion de l'image disque de VirtualBox.
Dans la barre de menus de la fenêtre, on ira dans **Périphériques > Insérer l'image disque des Additions Invités**. Le CD-Rom contenant le logiciel devrait être inséré dans la machine.
Une fois le disque inséré, on doit récupérer son *block device name*. C'est souvent un nom en `srX` (sûrement `sr0`) :
```bash
lsblk
```
On monte ensuite le CD-ROM sur le dossier `/mnt`
```bash
# Remplacer srX par le block device name du CD-ROM
mount /dev/srX /mnt
```
Cette commande permet d'afficher le contenu du CD-ROM dans le dossier `/mnt` spécialement pourvu pour cet usage sur Linux.
Il est probable qu'un message indiquant que le disque est protégé en écriure s'affiche. Ce n'est pas important.
On exécute ensuite le fichier permettant la compilation et l'installation du module :
```bash
sudo /mnt/VBoxLinuxAdditions.run
```
Personnellement, j'exécute la version optimisée pour les processeurs ARM sur mon ordinateur, afin d'optimiser ses performances. Son nom est `VBoxLinuxAdditions-arm64.run`.
Une fois toutes ces étapes franchies, on est prêt à passer à la suite.
\ No newline at end of file
# Introduction
Cette SAÉ a pour objectif l'installation d'un système d'exploitation serveur (Debian), la configuration de celle-ci, ainsi que l'installation d'un serveur Git (Gitea).
## Spécifications de la machine
La machine virtuelle installée fonctionne sur un système Debian 12 (Bookworm) en version ARM64. On lui a alloué environ **2GB de RAM** ainsi que **2 processeurs virtuels**.
Le système hôte est un **MacBook Air M1 (2020)**.
![Spécifications système de la machine](assets/fig1_specs.png)
## Configuration logicielle de la machine
Il est nécéssaire d'apporter quelques précisions sur la configuration logicielle de la machine, car elle diffère légèrement des instructions initiales.
Les performances étant réduites à cause de la machine hôte, le choix a été fait de ne pas installer d'interface graphique sur la machine, afin de simplifier son fonctionnement.
Le système est donc une installation de Debian basique, avec uniquement un serveur ssh ainsi qu'un serveur web.
## À propos de Debian
Debian est une des premières distributions Linux communautaires, et une des plus anciennes encore activement maintenues (même Slackware a arrêté son développement).
L'un des plus grands atouts de Debian est le nombre d'architectures de processeurs supportés. Ce nombre décroît au fil des années, avec la normalisation des standards, cependant, Debian 11 *Bullseye* supporte encore **10 architectures et jeux d'instruction de processeurs** :
- x86_64 (amd64)
- x86 (i386)
- ARM64
- ARM EABI (armel)
- ARM avec unité de calcul flottant (armhf)
w - MIPS (grand boutiste)
- MIPS (petit boutiste)
- MIPS 64-bit (petit boutiste)
- Processeurs POWER-PC
- IBM System z
### Modèles de versionnage
Debian fonctionne selon **trois modèles de distribution** :
- Une version "stable", suivant un modèle fixe et présentant des mises à jour de sécurité régulières. Cette version est actuellement la version 12.9, sortie le 11 janvier 2025, 9e patch de la version 12 "Bookworm" du 10 juin 2023. Une nouvelle version sort à peu près tous les deux ans.
- Une version "testing", en fait la prochaine version majeure de Debian. Son nom de code actuel est "Trixie".
- Une version "unstable", suivant un modèle "rolling-release" (les mises à jour des paquets sont fournies et ajoutées aux dépôts en temps réel, comme c'est le cas sur d'autres distributions comme Fedora Rawhide ou Arch Linux). Son nom de code est toujours "Sid".
*([Debian Wiki](https://www.debian.org/releases/))*
Une fois la publication d'une version de Debian, son **cycle de vie** passe par plusieurs étapes :
- Un support officiel de 3 ans, pendant lesquels des mises à jour de sécurité sont effectuées normalement.
- Un support long terme de 2 ans, avec des mises à jour régulières, cependant pas directement géré par les équipes de Debian, mais des bénévoles et sociétés indépendants.
- Un support long terme étendu de 5 ans, contre rémunération des développeurs. Le plus souvent utilisé par des entreprises attendant une mise à jour de leur infrastructure informatique.
*([Debian Wiki](https://wiki.debian.org/fr/LTS))*
Ceci a pour conséquence que **l'équipe Debian gère au minimum trois versions à chaque fois**. Actuellement, ce sont les versions Bullseye, Bookworm et Trixie (la prochaine) qui sont mises à jour.
### Noms de code des versions
Chaque version est nommé après les noms des personnages du film *Toy Story*. *([Debian Wiki](https://wiki.debian.org/DebianReleases#Codenames))*
Historiquement, la première version de Debian était **Buzz** *(l'astronaute, vers l'infini et au-delà)*. Elle est sortie le 17 juin 1996, sous le numéro 1.1. *([Debian Wiki](https://wiki.debian.org/fr/DebianBuzz))*
À ce jour, le dernier nom de code annoncé *officiellement* est **Duke** *(le motard)*. La date de sortie de la version n'a pas été encore annoncée, elle n'est en fait même pas encore entrée en production. Elle a été annoncée le **22 janvier 2025**. Ce sera la version **15** de Debian. *([Debian Wiki](https://wiki.debian.org/fr/DebianDuke))*
\ No newline at end of file
...@@ -46,7 +46,7 @@ Voici les caractéristiques de la machine virtuelle crée : ...@@ -46,7 +46,7 @@ Voici les caractéristiques de la machine virtuelle crée :
- **Mémoire vive** : 2048 Mo (2Go) - **Mémoire vive** : 2048 Mo (2Go)
- **Disque Dur** : 20Go - **Disque Dur** : 20Go
> **Un mot sur la configuration réseau** > **Un mot sur la configuration réseau**
> Ici, la configuration réseau de la machine est laissée par défaut. Il s'agit ici de NAT. > Ici, la configuration réseau de la machine est laissée par défaut. Il s'agit ici de NAT.
> La traduction d'adresses réseau (NAT ou Network Address Translation en anglais), permet à la machine virtuelle d'accéder à la même connexion internet que la machine hôte, **sans pour autant obtenir une adresse physique sur le réseau local de la machine**. Ça l'avantage de ne pas avoir à allouer d'adresse réseau, mais cela ne permet pas aux autres machines du réseau d'accéder aux services de la machine virtuelle. *([IT-Connect.fr](https://www.it-connect.fr/comprendre-les-differents-types-de-reseaux-virtualbox/#A_Le_mode_NAT))* > La traduction d'adresses réseau (NAT ou Network Address Translation en anglais), permet à la machine virtuelle d'accéder à la même connexion internet que la machine hôte, **sans pour autant obtenir une adresse physique sur le réseau local de la machine**. Ça l'avantage de ne pas avoir à allouer d'adresse réseau, mais cela ne permet pas aux autres machines du réseau d'accéder aux services de la machine virtuelle. *([IT-Connect.fr](https://www.it-connect.fr/comprendre-les-differents-types-de-reseaux-virtualbox/#A_Le_mode_NAT))*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment