Skip to content

Commit 1ba8831

Browse files
committed
synchonisation de structure ch3-6
1 parent a6a914b commit 1ba8831

17 files changed

+283
-205
lines changed

book/04-git-server/sections/generating-ssh-key.asc

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[[s_generate_ssh_key]]
2-
== Génération des clés publiques SSH
3-
(((clés SSH)))
2+
=== Génération des clés publiques SSH
43

5-
Cela dit, de nombreux serveurs Git utilisent une authentification par clés publiques SSH.
4+
(((clés SSH)))
5+
De nombreux serveurs Git utilisent une authentification par clés publiques SSH.
66
Pour fournir une clé publique, chaque utilisateur de votre système doit la générer s'il n'en a pas déjà.
77
Le processus est similaire sur tous les systèmes d'exploitation.
88
Premièrement, l'utilisateur doit vérifier qu'il n'en a pas déjà une.
@@ -23,7 +23,7 @@ Si vous ne voyez pas ces fichiers (ou n'avez même pas de répertoire `.ssh`), v
2323

2424
[source,console]
2525
----
26-
$ ssh-keygen
26+
$ ssh-keygen -o
2727
Generating public/private rsa key pair.
2828
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
2929
Created directory '/home/schacon/.ssh'.
@@ -36,6 +36,7 @@ d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 [email protected]
3636
----
3737

3838
Premièrement, le programme demande confirmation de l'endroit où vous souhaitez sauvegarder la clé (`.ssh/id_rsa`) puis il demande deux fois d'entrer un mot de passe qui peut être laissé vide si vous ne souhaitez pas devoir le taper quand vous utilisez la clé.
39+
Cependant, si vous utilisez un mot de passe, assurez-vous d'ajouter l'option `-o` ; cela sauvegarde la clé privé dans un format qui est plus résistant au craquage par force brute des mots de passe que le format par défaut.
3940

4041
Maintenant, chaque utilisateur ayant suivi ces indications doit envoyer la clé publique à la personne en charge de l'administration du serveur Git (en supposant que vous utilisez un serveur SSH réglé pour l'utilisation de clés publiques).
4142
Ils doivent copier le contenu du fichier `.pub` et l'envoyer par courriel.

book/04-git-server/sections/git-daemon.asc

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
== Démon (_Daemon_) Git
1+
=== Démon (_Daemon_) Git
22

33
(((servir des dépôts, protocole git)))
44
Dans la suite, nous allons configurer un _daemon_ qui servira des dépôts sur le protocole « Git ».
@@ -13,46 +13,45 @@ Grossièrement, il suffit de lancer la commande suivante en tant que _daemon_ :
1313

1414
[source,console]
1515
----
16-
git daemon --reuseaddr --base-path=/opt/git/ /opt/git/
16+
git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
1717
----
1818

1919
`--reuseaddr` autorise le serveur à redémarrer sans devoir attendre que les anciennes connexions expirent, l'option `--base-path` autorise les utilisateurs à cloner des projets sans devoir spécifier le chemin complet, et le chemin en fin de ligne indique au _daemon_ Git l'endroit où chercher des dépôts à exporter.
2020
Si vous utilisez un pare-feu, il sera nécessaire de rediriger le port 9418 sur la machine hébergeant le serveur.
2121

2222
Transformer ce processus en _daemon_ peut s'effectuer de différentes manières qui dépendent du système d'exploitation sur lequel il est lancé.
23-
Sur une machine Ubuntu, c'est un script Upstart.
24-
Donc dans le fichier :
23+
24+
Puisque `systemd` est le système d'init le plus habitituel sur les distributions Linux modernes, vous pouvez l'utiliser pour cela.
25+
Placez simplement un fichier `/etc/systemd/system/git-daemon.service` avec le contenu suivant :
2526

2627
[source,console]
2728
----
28-
/etc/event.d/local-git-daemon
29-
----
29+
[Unit]
30+
Description=Start Git Daemon
3031
31-
mettez le script suivant :
32+
[Service]
33+
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
3234
33-
[source,console]
34-
----
35-
start on startup
36-
stop on shutdown
37-
exec /usr/bin/git daemon \
38-
--user=git --group=git \
39-
--reuseaddr \
40-
--base-path=/opt/git/ \
41-
/opt/git/
42-
respawn
43-
----
35+
Restart=always
36+
RestartSec=500ms
4437
45-
Par sécurité, ce _daemon_ devrait être lancé par un utilisateur n'ayant que des droits de lecture seule sur les dépôts — simplement en créant un nouvel utilisateur « git-ro » qui servira à lancer le _daemon_.
46-
Par simplicité, nous le lancerons avec le même utilisateur « git » qui est utilisé par `git-shell`.
38+
StandardOutput=syslog
39+
StandardError=syslog
40+
SyslogIdentifier=git-daemon
4741
48-
Au redémarrage de la machine, votre _daemon_ Git démarrera automatiquement et redémarrera s'il meurt.
49-
Pour le lancer sans avoir à redémarrer, vous pouvez lancer ceci :
42+
User=git
43+
Group=git
5044
51-
[source,console]
52-
----
53-
initctl start local-git-daemon
45+
[Install]
46+
WantedBy=multi-user.target
5447
----
5548

49+
Vous aurez noté que ce daemon Git est lancé ici avec comme utilisateur et groupe `git`.
50+
Modifiez-le pour correspondre à vos besoins et assurez-vous que l'utilisateur fourni existe sur le système.
51+
Vérifiez aussi que le binaire Git est bien à l'emplacement `/usr/bin/git` ou changer le chemin si nécessaire.
52+
53+
Enfin, lancez `systemctl enable git-daemon` pour démarrer automatiquement le service au démarrage ; vous pouvez démarrer et arrêter le service avec respectivement `systemctl start git-daemon` et `systemctl stop git-daemon`.
54+
5655
Sur d'autres systèmes, le choix reste large, allant de `xinetd` à un script de système `sysvinit` ou à tout autre moyen — tant que le programme est démonisé et surveillé.
5756

5857
Ensuite, il faut spécifier à Git quels dépôts sont autorisés en accès non authentifié au moyen du serveur.

book/04-git-server/sections/git-on-a-server.asc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[[s_git_on_the_server]]
2-
== Installation de Git sur un serveur
2+
=== Installation de Git sur un serveur
33

44
Nous allons à présent traiter de la configuration d'un service Git gérant ces protocoles sur votre propre serveur.
55

@@ -34,7 +34,7 @@ Il y a quelques légères différences dans le fichier de configuration mais pou
3434
La commande extrait le répertoire Git sans répertoire de travail et crée un répertoire spécifique pour l'accueillir.
3535

3636
[[s_bare_repo]]
37-
=== Copie du dépôt nu sur un serveur
37+
==== Copie du dépôt nu sur un serveur
3838

3939
À présent que vous avez une copie nue de votre dépôt, il ne reste plus qu'à la placer sur un serveur et à régler les protocoles.
4040
Supposons que vous avez mis en place un serveur nommé `git.exemple.com` auquel vous avez accès par SSH et que vous souhaitez stocker vos dépôts Git dans le répertoire `/srv/git`.
@@ -74,13 +74,13 @@ Dans les chapitres à venir, nous traiterons de mises en place plus sophistiqué
7474
Ces sujets incluront l'élimination du besoin de créer un compte système pour chaque utilisateur, l'accès public aux dépôts, la mise en place d'interfaces utilisateur web, etc.
7575
Néanmoins, gardez à l'esprit que pour collaborer avec quelques personnes sur un projet privé, tout ce qu'il faut, c'est un serveur SSH et un dépôt nu.
7676

77-
=== Petites installations
77+
==== Petites installations
7878

7979
Si vous travaillez dans un petit groupe ou si vous n'êtes qu'en phase d'essai de Git au sein de votre société avec peu de développeurs, les choses peuvent rester simples.
8080
Un des aspects les plus compliqués de la mise en place d'un serveur Git est la gestion des utilisateurs.
8181
Si vous souhaitez que certains dépôts ne soient accessibles à certains utilisateurs qu'en lecture seule et en lecture/écriture pour d'autres, la gestion des accès et des permissions peut devenir difficile à régler.
8282

83-
==== Accès SSH
83+
===== Accès SSH
8484

8585
(((servir des dépôts, SSH)))
8686
Si vous disposez déjà d'un serveur auquel tous vos développeurs ont un accès SSH, il est généralement plus facile d'y mettre en place votre premier dépôt car vous n'aurez quasiment aucun réglage supplémentaire à faire (comme nous l'avons expliqué dans le chapitre précédent).

book/04-git-server/sections/gitlab.asc

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,27 @@
1-
== GitLab
1+
=== GitLab
22

33
(((servir des dépôts, GitLab)))(((GitLab)))
44
GitWeb reste tout de même simpliste.
55
Si vous cherchez un serveur Git plus moderne et complet, il existe quelques solutions libres pertinentes.
66
Comme GitLab est un des plus populaires, nous allons prendre son installation et son utilisation comme exemple.
77
Cette solution est plus complexe que l'option GitWeb et demandera indubitablement plus de maintenance, mais elle est aussi plus complète.
88

9-
=== Installation
9+
==== Installation
1010

1111
GitLab est une application web reposant sur une base de données, ce qui rend son installation un peu plus lourde que certains autres serveurs Git.
1212
Celle-ci est heureusement très bien documentée et supportée.
13+
GitLab recommande fortement d'installer GitLab sur votre serveur via le paquet officiel Omnibus GitLab.
1314

14-
GitLab peut s'installer de différentes manières.
15-
Pour obtenir rapidement quelque chose qui tourne, vous pouvez télécharger une image de machine virtuelle ou un installateur rapide depuis https://bitnami.com/stack/gitlab[], puis configurer plus finement selon vos besoins.(((bitnami)))
16-
Une touche particulière incluse par Bitnami concerne l'écran d'identification (accessible via `alt + →`) qui vous indique l'adresse IP, l'utilisateur et le mot de passe par défaut de l'instance GitLab installée.
15+
Les autres options d'installation de GitLab sont :
1716

18-
[[bitnami]]
19-
.L'écran d’identification de la machine virtuelle du GitLab de Bitnami.
20-
image::images/bitnami.png[L'écran d’identification de la machine virtuelle du GitLab de Bitnami.]
17+
* GitLab Helm chart, pour une utilisation avec Kubernetes,
18+
* des paquets GitLab dockerisés pour une utilisation dans Docker,
19+
* depuis les fichiers source,
20+
* Avec un fournisseur Cloud tel que AWS, Google Cloud Platform, Azure, OpenShift et Digital Ocean.
2121

22-
Pour toute autre méthode, suivez les instructions du readme du _GitLab Community Edition_, qui est consultable à https://gitlab.com/gitlab-org/gitlab-ce/tree/master[].
23-
Vous y trouverez une aide pour installer GitLab en utilisant une recette Chef, une machine virtuelle sur Digital Ocean, ou encore via RPM ou DEB (qui, au moment de la rédaction du présent livre sont en bêta).
24-
Il existe aussi des guides « non-officiels » pour faire fonctionner GitLab avec des systèmes d'exploitation ou de base données non standards, un script d'installation totalement manuel et d'autres guides couvrant d'autres sujets.
22+
Pour de plus amples informations, référez-vous au https://gitlab.com/gitlab-org/gitlab-foss/-/blob/master/README.md[readme de GitLab Community Edition (CE)].
2523

26-
=== Administration
24+
==== Administration
2725

2826
L'interface d'administration de GitLab passe par le web.
2927
Pointez simplement votre navigateur sur le nom d'hôte ou l'adresse IP où GitLab est hébergé et identifiez-vous comme administrateur.
@@ -34,7 +32,7 @@ Une fois identifié, cliquez sur l’icône « Admin area » dans le menu en h
3432
.L'entrée « Admin area » dans le menu GitLab.
3533
image::images/gitlab-menu.png[L’entrée « Admin area » dans le menu GitLab.]
3634

37-
==== Utilisateurs
35+
===== Utilisateurs
3836

3937
Les utilisateurs dans GitLab sont des comptes qui correspondent à des personnes.
4038
Les comptes utilisateurs ne sont pas très complexes ; ce sont principalement des collections d'informations personnelles rattachées à chaque information d'identification.
@@ -53,7 +51,7 @@ Tous les projets et les données situées dans son espace de nom sont effacés e
5351
Il s'agit clairement d'une action plus destructive et permanente, et son usage est assez rare.
5452

5553
[[s_gitlab_groups_section]]
56-
==== Groupes
54+
===== Groupes
5755

5856
Un groupe GitLab est un assemblage de projets, accompagné des informations de droits d'accès à ces projets.
5957
Chaque groupe a un espace de nom de projet (de la même manière que les utilisateurs), donc si le groupe +formation+ a un projet +matériel+, son URL sera `http://serveur/formation/matériel`.
@@ -66,7 +64,7 @@ Chaque groupe est associé à des utilisateurs, dont chacun dispose d'un niveau
6664
Ces niveaux s'échelonnent de _invité_ : `Guest` (tickets et discussions seulement) à _propriétaire_ : `Owner` (contrôle complet du groupe, ses membres et ses projets).
6765
Les types de permissions sont trop nombreux pour être énumérés ici, mais GitLab fournit un lien très utile sur son écran d'administration.
6866

69-
==== Projets
67+
===== Projets
7068

7169
Un projet GitLab correspond grossièrement à un dépôt Git unique.
7270
Tous les projets appartiennent à un espace de nom unique, que ce soit un utilisateur ou un groupe.
@@ -77,13 +75,13 @@ Si un projet est privé (_Private_), l'accès au projet doit être explicitement
7775
Un projet interne (_Internal_) est visible par tout utilisateur identifié, et un projet public (_Public_) est un projet visible par tout le monde.
7876
Notez que ces droits contrôlent aussi bien les accès pour git `fetch` que les accès à l'interface utilisateur web du projet.
7977

80-
==== Crochets (_Hooks_)
78+
===== Crochets (_Hooks_)
8179

8280
GitLab inclut le support pour les crochets, tant au niveau projet que système.
8381
Pour ces deux niveaux, le serveur GitLab lance des requêtes HTTP POST contenant un JSON de description lorsque certains événements précis arrivent.
8482
C'est une excellent moyen de connecter vos dépôts Git et votre instance GitLab avec le reste de vos automatisations de développement, telles que serveurs d'intégration continue, forum de discussion et outils de déploiement.
8583

86-
=== Usage de base
84+
==== Usage de base
8785

8886
La première chose à faire avec GitLab est de créer un nouveau projet.
8987
Pour cela, il suffit de cliquer sur l’icône `+` sur la barre d'outils.
@@ -111,7 +109,7 @@ $ git clone https://serveur/espace_de_nom/projet.git
111109
L'interface utilisateur web donne accès à différentes vues utiles du dépôt lui-même.
112110
La page d'accueil de chaque projet montre l'activité récente et des liens alignés en haut vous mènent aux fichiers du projet et au journal des _commits_.
113111

114-
=== Coopérer
112+
==== Coopérer
115113

116114
Le moyen le plus simple de coopérer sur un projet GitLab consiste à donner à un autre utilisateur un accès direct en écriture sur le dépôt Git.
117115
Vous pouvez ajouter un utilisateur à un projet en sélectionnant la section `Members` des paramètres du projet et en associant le nouvel utilisateur à un niveau d'accès (les différents niveaux d'accès sont abordés dans <<ch04-git-server#s_gitlab_groups_section>>).

book/04-git-server/sections/gitweb.asc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
== GitWeb
1+
=== GitWeb
22

33
(((servir des dépôts, GitWeb)))(((GitWeb)))
44
Après avoir réglé les accès de base en lecture/écriture et en lecture seule pour vos projets, vous souhaiterez peut-être mettre en place une interface web simple de visualisation.

book/04-git-server/sections/hosted.asc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
== Git hébergé
1+
=== Git hébergé
22

33
Si vous ne vous ne voulez pas vous investir dans la mise en place de votre propre serveur Git, il reste quelques options pour héberger vos projets Git sur un site externe dédié à l'hébergement.
44
Cette méthode offre de nombreux avantages : un site en hébergement est généralement rapide à créer et facilite le démarrage de projets, et n'implique pas de maintenance et de surveillance de serveur.

0 commit comments

Comments
 (0)