index.html 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828
  1. <!DOCTYPE html>
  2. <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
  3. <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
  4. <head>
  5. <meta charset="utf-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8. <link rel="shortcut icon" href="../../../img/favicon.ico">
  9. <title>Installation de *git* - Les Tutoriels du Yojik</title>
  10. <link rel="stylesheet" href="../../../css/theme.css" />
  11. <link rel="stylesheet" href="../../../css/theme_extra.css" />
  12. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/github.min.css" />
  13. <script>
  14. // Current page data
  15. var mkdocs_page_name = "Installation de *git*";
  16. var mkdocs_page_input_path = "Tutoriels/tutostretch/Installation-Serveur-Git.md";
  17. var mkdocs_page_url = null;
  18. </script>
  19. <script src="../../../js/jquery-2.1.1.min.js" defer></script>
  20. <script src="../../../js/modernizr-2.8.3.min.js" defer></script>
  21. <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js"></script>
  22. <script>hljs.initHighlightingOnLoad();</script>
  23. </head>
  24. <body class="wy-body-for-nav" role="document">
  25. <div class="wy-grid-for-nav">
  26. <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
  27. <div class="wy-side-scroll">
  28. <div class="wy-side-nav-search">
  29. <a href="../../.." class="icon icon-home"> Les Tutoriels du Yojik</a>
  30. <div role="search">
  31. <form id ="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
  32. <input type="text" name="q" placeholder="Search docs" title="Type search term here" />
  33. </form>
  34. </div>
  35. </div>
  36. <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
  37. <p class="caption"><span class="caption-text">Home</span></p>
  38. <ul>
  39. <li class="toctree-l1"><a class="reference internal" href="../../..">Page d'accueil</a>
  40. </li>
  41. </ul>
  42. <p class="caption"><span class="caption-text">Tutoriels</span></p>
  43. <ul>
  44. <li class="toctree-l1"><a class="reference internal" href="../../tutos/">Introduction</a>
  45. </li>
  46. <li class="toctree-l1"><a class="reference internal" href="#">Installation d'un serveur sécurisé, version Debian/Stretch (obsolète)</a>
  47. <ul>
  48. <li class="toctree-l2"><a class="reference internal" href="../tutostretch/">Présentation</a>
  49. </li>
  50. <li class="toctree-l2"><a class="reference internal" href="#">Installation</a>
  51. <ul>
  52. <li class="toctree-l3"><a class="reference internal" href="../Installation-de-base/">Installation du système de base</a>
  53. </li>
  54. <li class="toctree-l3"><a class="reference internal" href="../ovh/">Démarrage sur serveur OVH</a>
  55. </li>
  56. <li class="toctree-l3"><a class="reference internal" href="../Premi%C3%A8re-Etape-S%C3%A9curisation/">Première étapes de sécurisation du serveur</a>
  57. </li>
  58. <li class="toctree-l3"><a class="reference internal" href="../Configuration-R%C3%A9seau/">Configuration du réseau</a>
  59. </li>
  60. <li class="toctree-l3"><a class="reference internal" href="../Installation-Serveur-Temps/">Installation d'un serveur de temps</a>
  61. </li>
  62. <li class="toctree-l3"><a class="reference internal" href="../Installation-Parre-Feu/">Installation d'un pare-feu</a>
  63. </li>
  64. <li class="toctree-l3"><a class="reference internal" href="../Installation-Fail2ban/">Contrer les attaques de brute-force avec fail2ban</a>
  65. </li>
  66. <li class="toctree-l3"><a class="reference internal" href="../Installation-Serveur-Courrier-Basique/">Installation d'un serveur de courrier basique</a>
  67. </li>
  68. <li class="toctree-l3"><a class="reference internal" href="../Installation-Serveur-DNS/">Installation du serveur DNS</a>
  69. </li>
  70. <li class="toctree-l3"><a class="reference internal" href="../Installation-Serveur-Web/">Installation d'un serveur web</a>
  71. </li>
  72. <li class="toctree-l3"><a class="reference internal" href="../Installation-Dovecot-Authentification/">Installation de dovecot et de l'authentification</a>
  73. </li>
  74. <li class="toctree-l3"><a class="" href="../Installation-Certificats-Letsencrypt.md)">Installation des certificats letsencrypt</a>
  75. </li>
  76. <li class="toctree-l3"><a class="" href="../courrier-SPF-DKIM-OPENDMARC.md">Ajout des enregistrements **spf**, **DKIM**, **DMARC** au fichier de zone DNS</a>
  77. </li>
  78. <li class="toctree-l3"><a class="reference internal" href="../Courrier-Comptes-Virtuels/">Ajout des comptes émail virtuels</a>
  79. </li>
  80. <li class="toctree-l3"><a class="reference internal" href="../Surveillance-Serveur/">Installation de programmes de surveillance du serveur</a>
  81. </li>
  82. <li class="toctree-l3"><a class="reference internal" href="../Installation-Webmail/">Installation d'un webmail (rainloop)</a>
  83. </li>
  84. <li class="toctree-l3"><a class="" href="../Sécurisation-Serveur-Web">Sécurisation d'un serveur WEB</a>
  85. </li>
  86. </ul>
  87. </li>
  88. </ul>
  89. </li>
  90. <li class="toctree-l1"><a class="reference internal" href="#">Installation d'un serveur sécurisé, version Debian/Buster (en cours d'écriture)</a>
  91. <ul>
  92. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/1-tutobuster/">Présentation</a>
  93. </li>
  94. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/2-Installation-de-base/">Installation de base</a>
  95. </li>
  96. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/3-ovh/">Démarrage sur serveur OVH</a>
  97. </li>
  98. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/4-Plan/">Plan d'ensemble</a>
  99. </li>
  100. <li class="toctree-l2"><a class="reference internal" href="../../tutobuster/5-Premi%C3%A8re-Etape-S%C3%A9curisation/">Premières étapes de sécurisation du serveur</a>
  101. </li>
  102. </ul>
  103. </li>
  104. <li class="toctree-l1"><a class="reference internal" href="#">Installation d'un serveur sécurisé, version Debian/Buster sur RaspberryPI</a>
  105. <ul>
  106. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/R%C3%A9sum%C3%A9/">Résumé</a>
  107. </li>
  108. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/tutoraspi/">Présentation</a>
  109. </li>
  110. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Installation-de-base/">Installation de base</a>
  111. </li>
  112. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Premier-d%C3%A9marrage/">Premier démarrage</a>
  113. </li>
  114. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Etat-des-lieux/">État des lieux</a>
  115. </li>
  116. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/S%C3%A9curisation-SSH/">Sécurisation SSH</a>
  117. </li>
  118. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/R%C3%A9seau/">Réseau (des IPs fixes)</a>
  119. </li>
  120. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Knot/">Installation de Knot-resolver</a>
  121. </li>
  122. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Firewall/">Installation d'un pare-feux</a>
  123. </li>
  124. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Fail2ban/">Contrer les attaques de force brute</a>
  125. </li>
  126. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Logwatch/">Surveillance du serveur</a>
  127. </li>
  128. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Installation-courrier-basique/">Installation d'un serveur de courriers basique</a>
  129. </li>
  130. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Exemple-d-utilisation-serveur-Web/">Exemple d'utilisation avec un serveur Web</a>
  131. </li>
  132. <li class="toctree-l2"><a class="reference internal" href="../../tutoraspi/Annexe/">Annexe</a>
  133. </li>
  134. </ul>
  135. </li>
  136. </ul>
  137. </div>
  138. </div>
  139. </nav>
  140. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  141. <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
  142. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  143. <a href="../../..">Les Tutoriels du Yojik</a>
  144. </nav>
  145. <div class="wy-nav-content">
  146. <div class="rst-content">
  147. <div role="navigation" aria-label="breadcrumbs navigation">
  148. <ul class="wy-breadcrumbs">
  149. <li><a href="../../..">Docs</a> &raquo;</li>
  150. <li>Installation de *git*</li>
  151. <li class="wy-breadcrumbs-aside">
  152. </li>
  153. </ul>
  154. <hr/>
  155. </div>
  156. <div role="main">
  157. <div class="section">
  158. <h1 id="installation-de-git">Installation de <em>git</em></h1>
  159. <p>Il y a plusieurs façons d'installer un serveur <em>git</em> sur notre serveur. Nous allons essayer plusieurs solutions, d'une solution complètement basique sans serveur graphique, suivie de solutions graphiques avec plus ou moins de capacités (suivi de tickets, wiki, gestion des utilisateurs, intégration continue.</p>
  160. <p>Après avoir lu le <strong>git-book</strong> ainsi que de nombreux tutoriaux, je me rend compte que cette partie est vraiment incomplète et ne parle pas des différents protocoles utilisables, ainsi que leurs caractéristiques. Certains permettent l'authentification, d'autres non et reposent sur les restrictions du système sur lequel est installé le serveur.</p>
  161. <h2 id="les-differents-protocoles">Les différents protocoles</h2>
  162. <h3 id="installation-dun-serveur-git-avec-le-protocole-local">Installation d'un serveur git avec le protocole <em>local</em></h3>
  163. <h3 id="installation-dun-serveur-git-avec-le-protocole-http-basique">Installation d'un serveur git avec le protocole <em>http basique</em></h3>
  164. <h3 id="installation-dun-serveur-git-avec-le-protocole-http-evolue">Installation d'un serveur git avec le protocole <em>http évolué</em></h3>
  165. <h3 id="installation-dun-serveur-git-avec-le-protocole-git">Installation d'un serveur git avec le protocole <em>git</em></h3>
  166. <h2 id="installation-dun-serveur-git-basique-mais-parfaitement-fonctionnel">Installation d'un serveur git <em>basique</em> (mais parfaitement fonctionnel :) )</h2>
  167. <h3 id="installation-de-git-premiere-version">Installation de <em>git</em> première version</h3>
  168. <pre><code>root@atom:/home/ericadmin# apt install git
  169. Lecture des listes de paquets... Fait
  170. Construction de l'arbre des dépendances
  171. Lecture des informations d'état... Fait
  172. The following additional packages will be installed:
  173. git-man
  174. Paquets suggérés :
  175. git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn
  176. Les NOUVEAUX paquets suivants seront installés :
  177. git git-man
  178. 0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
  179. Il est nécessaire de prendre 0 o/6 311 ko dans les archives.
  180. Après cette opération, 34,8 Mo d'espace disque supplémentaires seront utilisés.
  181. Souhaitez-vous continuer ? [O/n] o
  182. Sélection du paquet git-man précédemment désélectionné.
  183. (Lecture de la base de données... 39220 fichiers et répertoires déjà installés.)
  184. Préparation du dépaquetage de .../git-man_1%3a2.11.0-3+deb9u4_all.deb ...
  185. Dépaquetage de git-man (1:2.11.0-3+deb9u4) ...
  186. Sélection du paquet git précédemment désélectionné.
  187. Préparation du dépaquetage de .../git_1%3a2.11.0-3+deb9u4_i386.deb ...
  188. Dépaquetage de git (1:2.11.0-3+deb9u4) ...
  189. Paramétrage de git-man (1:2.11.0-3+deb9u4) ...
  190. Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
  191. Paramétrage de git (1:2.11.0-3+deb9u4) ...
  192. root@atom:/home/ericadmin# mc
  193. </code></pre>
  194. <h3 id="installation-de-lutilisateur-git-et-du-groupe-git">Installation de l'utilisateur <em>git</em> et du groupe <em>git</em></h3>
  195. <pre><code>root@atom:/home/ericadmin# adduser git
  196. Ajout de l'utilisateur « git » ...
  197. Ajout du nouveau groupe « git » (1001) ...
  198. Ajout du nouvel utilisateur « git » (1001) avec le groupe « git » ...
  199. Création du répertoire personnel « /home/git »...
  200. Copie des fichiers depuis « /etc/skel »...
  201. Entrez le nouveau mot de passe UNIX :
  202. Retapez le nouveau mot de passe UNIX :
  203. passwd: password updated successfully
  204. Changing the user information for git
  205. Enter the new value, or press ENTER for the default
  206. Full Name []:
  207. Room Number []:
  208. Work Phone []:
  209. Home Phone []:
  210. Other []:
  211. Cette information est-elle correcte ? [O/n]o
  212. root@atom:/home/ericadmin#
  213. </code></pre>
  214. <p>Un répertoire /home/git a été créé ainsi que le groupe git et l'utilisateur git, avec son mot de passe que vous avez saisi dans l'étape ci-dessus.</p>
  215. <h3 id="copie-de-la-clef-ssh-pour-un-acces-sans-mot-de-passe">Copie de la clef <em>ssh</em> pour un accès sans mot de passe.</h3>
  216. <p>Pour cela, il faut ajouter l'utilisateur <em>git</em> dans le fichier de configuration de <em>sshd</em>. Modifiez la ligne qui contient AllowUsers pour obtenir ceci:</p>
  217. <pre><code>AllowUsers ericadmin git
  218. </code></pre>
  219. <p>Rechargez <em>sshd</em> en lançant:</p>
  220. <pre><code>service sshd restart
  221. </code></pre>
  222. <p>Copie de votre clef sur le serveur: dans un premier temps, il faut remettre la configuration d'origine de <em>sshd</em>.</p>
  223. <p>Pour cela, copiez cotre fichier actuel en sshd_config.n. Copiez le fichier /etc/ssh/sshd_config.orig en /etc/ssh/sshd_config et relancez sshd avec service sshd restart.</p>
  224. <pre><code>service sshd restart
  225. </code></pre>
  226. <p>Vous devez pouvoir vous connecter sur le compte git en tapant ceci:</p>
  227. <pre><code>eric@aldebaran:~$ ssh git@atom
  228. git@atom's password:
  229. Linux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686
  230. The programs included with the Debian GNU/Linux system are free software;
  231. the exact distribution terms for each program are described in the
  232. individual files in /usr/share/doc/*/copyright.
  233. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
  234. permitted by applicable law.
  235. git@atom:~$
  236. </code></pre>
  237. <p>Déconnectez-vous en tapant Ctrl D et copiez votre clef sur le serveur:</p>
  238. <pre><code>eric@aldebaran:~$ ssh-copy-id git@atom
  239. /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
  240. /usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys
  241. git@atom's password:
  242. Number of key(s) added: 2
  243. Now try logging into the machine, with: "ssh 'git@atom'"
  244. and check to make sure that only the key(s) you wanted were added.
  245. eric@aldebaran:~$
  246. </code></pre>
  247. <p>Testez avec la commande fournie:</p>
  248. <pre><code>eric@aldebaran:~$ ssh 'git@atom'
  249. Linux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686
  250. The programs included with the Debian GNU/Linux system are free software;
  251. the exact distribution terms for each program are described in the
  252. individual files in /usr/share/doc/*/copyright.
  253. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
  254. permitted by applicable law.
  255. Last login: Sun Dec 30 09:40:18 2018 from 192.168.111.150
  256. git@atom:~$
  257. </code></pre>
  258. <p>Vous avez pu vous connecter sans taper votre mot de passe.</p>
  259. <p>Déconnectez-vous à nouveau (Ctrl D)</p>
  260. <p>Remettez le fichier sshd_config (qui contient le AllowUsers que nous avons configuré auparavant).</p>
  261. <p>Test:</p>
  262. <pre><code>eric@aldebaran:~$ ssh 'git@atom'
  263. Last login: Sun Dec 30 09:45:36 2018 from 192.168.111.150
  264. git@atom:~$
  265. </code></pre>
  266. <p>Ça marche. Nous avons un accès à notre compte <em>git</em> sans mot de passe, par échange de clefs, et avons bloqué l'accès par mot de passe, comme pour notre utilisateur d'administration <em>ericadmin</em>.</p>
  267. <h3 id="creation-dun-repertoire-qui-va-contenir-nos-depots-git">Création d'un répertoire qui va contenir nos dépots <em>git</em></h3>
  268. <p>On se connecte sous l'utilisateur git et on crée un répertoire <em>Repos</em> (Choisissez le nom que vous voulez ...)</p>
  269. <pre><code>eric@aldebaran:~$ ssh 'git@atom'
  270. Last login: Sun Dec 30 09:48:14 2018 from 192.168.111.150
  271. git@atom:~$ mkdir Repos
  272. git@atom:~$ ls
  273. Repos
  274. git@atom:~$
  275. </code></pre>
  276. <p>Voilà, le répertoire est créé.</p>
  277. <h3 id="creation-dun-premier-depot-sur-le-serveur">Création d'un premier dépot sur le serveur</h3>
  278. <p>La commande <strong>git init --bare</strong> permet la création, d'un dépot qui ne contient que les données <strong>git</strong> sans les sources/documents.</p>
  279. <pre><code>git@atom:~$ cd Repos/
  280. git@atom:~/Repos$ mkdir Essai1.git
  281. git@atom:~/Repos$ cd Essai1.git/
  282. git@atom:~/Repos/Essai1.git$ git init --bare
  283. Dépôt Git vide initialisé dans /home/git/Repos/Essai1.git/
  284. git@atom:~/Repos/Essai1.git$
  285. </code></pre>
  286. <h3 id="creation-dun-projet-sur-la-machine-locale">Création d'un projet sur la machine locale</h3>
  287. <p>(pour moi dans le répertoire /home/eric/Devs)</p>
  288. <pre><code>eric@aldebaran:~/Devs$ mkdir Essai1
  289. eric@aldebaran:~/Devs$ cd Essai1/
  290. eric@aldebaran:~/Devs/Essai1$ git init
  291. Dépôt Git vide initialisé dans /home/eric/Devs/Essai1/.git/
  292. eric@aldebaran:~/Devs/Essai1$ ls -al
  293. total 12
  294. drwxr-xr-x 3 eric eric 4096 déc. 30 10:01 .
  295. drwxr-xr-x 18 eric eric 4096 déc. 30 10:00 ..
  296. drwxr-xr-x 7 eric eric 4096 déc. 30 10:01 .git
  297. eric@aldebaran:~/Devs/Essai1$
  298. </code></pre>
  299. <p>Le répertoire de notre projet est vide, nous venons de le créer. Ajoutons un premier fichier <em>README.md</em> avec un contenu quelconque au projet.</p>
  300. <pre><code>eric@aldebaran:~/Devs/Essai1$ touch README.md
  301. eric@aldebaran:~/Devs/Essai1$ ls
  302. README.md
  303. eric@aldebaran:~/Devs/Essai1$ echo "Un premier fichier" &gt; README.md
  304. eric@aldebaran:~/Devs/Essai1$ cat README.md
  305. Un premier fichier
  306. eric@aldebaran:~/Devs/Essai1$
  307. </code></pre>
  308. <p>Ajoutons-le à la base <em>git</em></p>
  309. <pre><code>eric@aldebaran:~/Devs/Essai1$ git add .
  310. eric@aldebaran:~/Devs/Essai1$ git commit -m "mon premier commit"
  311. [master (commit racine) bc25e5b] mon premier commit
  312. 1 file changed, 1 insertion(+)
  313. create mode 100644 README.md
  314. eric@aldebaran:~/Devs/Essai1$ git status
  315. Sur la branche master
  316. rien à valider, la copie de travail est propre
  317. eric@aldebaran:~/Devs/Essai1$
  318. </code></pre>
  319. <p>Notre fichier a été ajouté à notre base git locale. Nous allons ajouter le dépot distant situé sur notre serveur.</p>
  320. <pre><code>eric@aldebaran:~/Devs/Essai1$ git remote add origin ssh://git@atom.yojik.net:Repos/Essai1.git
  321. eric@aldebaran:~/Devs/Essai1$ git remote
  322. origin
  323. eric@aldebaran:~/Devs/Essai1$ git remote -v
  324. origin ssh://git@atom/Repos/Essai1.git (fetch)
  325. origin ssh://git@atom/Repos/Essai1.git (push)
  326. eric@aldebaran:~/Devs/Essai1$
  327. </code></pre>
  328. <p>J'ai ajouté les commandes de vérification.</p>
  329. <p>Nous allons <em>pousser</em> notre projet sur le serveur.</p>
  330. <pre><code>eric@aldebaran:~/Devs/Essai1$ git push origin master
  331. Décompte des objets: 3, fait.
  332. Écriture des objets: 100% (3/3), 220 bytes | 0 bytes/s, fait.
  333. Total 3 (delta 0), reused 0 (delta 0)
  334. To atom.yojik.net:Repos/Essai1.git
  335. - [new branch] master -&gt; master
  336. </code></pre>
  337. <p>Tests suivants:</p>
  338. <p>Effacement des projets sur notre machine locale et clonage de notre dépôt distant, avec le protocole <em>git</em> ainsi qu'avec le protocole <em>https</em>:</p>
  339. <p><strong>Protocole <em>git</em></strong>:</p>
  340. <pre><code>eric@aldebaran:~/Devs$ git clone git@atom.yojik.net:Repos/Essai1.git Essai1
  341. Clonage dans 'Essai1'...
  342. remote: Décompte des objets: 3, fait.
  343. remote: Total 3 (delta 0), reused 0 (delta 0)
  344. Réception d'objets: 100% (3/3), fait.
  345. eric@aldebaran:~/Devs$ cd Essai1/
  346. eric@aldebaran:~/Devs/Essai1$ ls
  347. README.md
  348. eric@aldebaran:~/Devs/Essai1$ cat README.md
  349. Essai2
  350. eric@aldebaran:~/Devs/Essai1$ echo " d'un deuxième poussage" &gt;&gt; README.md
  351. eric@aldebaran:~/Devs/Essai1$ cat README.md
  352. Essai2
  353. d'un deuxième poussage
  354. eric@aldebaran:~/Devs/Essai1$ git add .
  355. eric@aldebaran:~/Devs/Essai1$ git commit -m "2ème poussage"
  356. [master 4edff63] 2ème poussage
  357. 1 file changed, 1 insertion(+)
  358. eric@aldebaran:~/Devs/Essai1$ git push origin master
  359. Décompte des objets: 3, fait.
  360. Écriture des objets: 100% (3/3), 280 bytes | 0 bytes/s, fait.
  361. Total 3 (delta 0), reused 0 (delta 0)
  362. To atom.yojik.net:Repos/Essai1.git
  363. e9cd815..4edff63 master -&gt; master
  364. eric@aldebaran:~/Devs/Essai1$
  365. </code></pre>
  366. <p><strong>Protocole <em>https</em></strong>:</p>
  367. <p>Essai de clonage du dépot git contenant les sources de ce tutorial avec la commande suivante; vous noterez que les sources du dépot sont légèrement différentes, suite à l'installation de <strong>gogs</strong>, mais le principe est le même.</p>
  368. <pre><code>git clone https://git.yojik.net/eric/InstallationServeur.git
  369. eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/InstallationServeur.git
  370. Clonage dans 'InstallationServeur'...
  371. remote: Décompte des objets: 431, fait.
  372. remote: Compression des objets: 100% (357/357), fait.
  373. remote: Total 431 (delta 145), reused 252 (delta 30)
  374. Réception d'objets: 100% (431/431), 4.74 MiB | 6.37 MiB/s, fait.
  375. Résolution des deltas: 100% (145/145), fait.
  376. eric@aldebaran:~/temp$
  377. </code></pre>
  378. <p>Voilà, la configuration d'un serveur git de base est effectuée; il nous faut bien sûr nous loguer sur le serveur pour créer un dépot avant de l'utiliser. Des programmes, souvent graphiques d'ailleurs, permettent de créer les dépots à partir d'une interface <em>web</em>. Nous allons en voir quelques uns en commençant par le serveur graphique fourni avec <em>git</em>, appelé <em>gitweb</em>.</p>
  379. <h2 id="installation-et-configuration-de-gitweb">Installation et configuration de <em>gitweb</em></h2>
  380. <h3 id="installation">Installation</h3>
  381. <pre><code>root@atom:/home/ericadmin# apt install gitweb
  382. Lecture des listes de paquets... Fait
  383. Construction de l'arbre des dépendances
  384. Lecture des informations d'état... Fait
  385. The following additional packages will be installed:
  386. libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
  387. Paquets suggérés :
  388. git-doc libdata-dump-perl
  389. Les NOUVEAUX paquets suivants seront installés :
  390. gitweb libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
  391. 0 mis à jour, 6 nouvellement installés, 0 à enlever et 0 non mis à jour.
  392. Il est nécessaire de prendre 1 067 ko dans les archives.
  393. Après cette opération, 1 605 ko d'espace disque supplémentaires seront utilisés.
  394. Souhaitez-vous continuer ? [O/n] o
  395. Réception de:1 http://deb.debian.org/debian stretch/main i386 libhtml-tagset-perl all 3.20-3 [12,7 kB]
  396. Réception de:2 http://deb.debian.org/debian stretch/main i386 libhtml-parser-perl i386 3.72-3 [105 kB]
  397. Réception de:3 http://deb.debian.org/debian stretch/main i386 libcgi-pm-perl all 4.35-1 [222 kB]
  398. Réception de:4 http://deb.debian.org/debian stretch/main i386 gitweb all 1:2.11.0-3+deb9u4 [676 kB]
  399. Réception de:5 http://deb.debian.org/debian stretch/main i386 libfcgi-perl i386 0.78-2 [40,2 kB]
  400. Réception de:6 http://deb.debian.org/debian stretch/main i386 libcgi-fast-perl all 1:2.12-1 [11,2 kB]
  401. 1 067 ko réceptionnés en 0s (6 128 ko/s)
  402. etc...
  403. root@atom:/home/ericadmin#
  404. </code></pre>
  405. <h3 id="configuration-de-gitweb">Configuration de <em>gitweb</em></h3>
  406. <p>La seule chose à configurer pour une utilisation basique est le fichier /etc/gitweb.conf. En faire une copie avant modification et modifiez la ligne suivante pour obtenir ce qui suit:</p>
  407. <pre><code>$projectroot = "/home/git/Repos";
  408. </code></pre>
  409. <p>C'est la racine de nos dépots.</p>
  410. <p>Activez le module <em>cgi</em> dans <em>apache</em> et rechargez la configuration de <em>apache</em>:</p>
  411. <pre><code>root@atom:/home/ericadmin# a2enmod cgi
  412. Enabling module cgi.
  413. To activate the new configuration, you need to run:
  414. systemctl restart apache2
  415. root@atom:/home/ericadmin# systemctl restart apache2
  416. </code></pre>
  417. <p>Vous pouvez accéder directement à l'interface graphique avec l'url suivante: atom.yojik.net/gitweb. Pour être honnête, je ne vois pas vraiment l'intérêt de cette interface, à part visualiser les projets sur le serveur. Je n'ai pas trouvé s'il est possible de télécharger une archive du projet, s'il est possible de créer un projet, pas plus que je n'ai vu la possibilité de gérer des utilisateurs. Il faudra approfondir la question ... L'utilisation de l'url par défaut n'est pas sécurisée non plus (pas de https).</p>
  418. <h2 id="installation-de-gogs">Installation de <em>gogs</em></h2>
  419. <p>Nous allons installer un serveur git sur notre petit serveur. Gogs est un serveur git écrit en <strong>go</strong>.
  420. Nous allons l'installer progressivement, en ajoutant ensuite le démarrage par un service, et l'accès sur un port standard servi par <strong>apache</strong> et redirigé vers le port 3000 servi par <strong>gogs</strong>. Nous allons reprendre une installation à partir du début (avec l'installation de git etc ...)</p>
  421. <p>Je me suis inspiré de la documentation officielle ainsi que de ce tutorial:</p>
  422. <p><a href="https://www.howtoforge.com/tutorial/how-to-install-gogs-go-git-service-on-ubuntu-1604/"># How to Install Gogs Go Git Service on Ubuntu 16.04</a></p>
  423. <p>Commençons par installer <strong>git</strong>, si nous ne l'avons pas encore fait auparavant.</p>
  424. <h3 id="installation-de-git-repetition">Installation de <em>git</em> (répétition)</h3>
  425. <pre><code>root@atom:~# apt-get install git
  426. etc ...
  427. root@atom:~#
  428. </code></pre>
  429. <h3 id="creation-de-lutilisateur-git-au-sein-du-systeme">Création de l'utilisateur <em>git</em> au sein du système</h3>
  430. <pre><code>commande adduser
  431. root@atom:/home/ericadmin# adduser --disabled-login --gecos 'Gogs' git
  432. Ajout de l'utilisateur « git » ...
  433. Ajout du nouveau groupe « git » (1001) ...
  434. Ajout du nouvel utilisateur « git » (1001) avec le groupe « git » ...
  435. Création du répertoire personnel « /home/git »...
  436. Copie des fichiers depuis « /etc/skel »...
  437. root@atom:/home/ericadmin#
  438. </code></pre>
  439. <h3 id="installation-de-la-base-de-donnees-postgresql">Installation de la base de données <em>Postgresql</em></h3>
  440. <p>Nous aurions pu utiliser à la place de <strong>Postgresql</strong>, <strong>mysql</strong> ou <strong>sqlite3</strong>.</p>
  441. <pre><code>root@atom:/home/ericadmin# apt install -y postgresql postgresql-client libpq-dev
  442. etc...
  443. root@atom:/home/ericadmin#
  444. </code></pre>
  445. <p>Lancement du serveur Postgresql et configuration pour un lancement automatique au démarrage de la machine:</p>
  446. <pre><code>root@atom:/home/ericadmin# systemctl start postgresql
  447. root@atom:/home/ericadmin# systemctl enable postgresql
  448. Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.
  449. Executing: /lib/systemd/systemd-sysv-install enable postgresql
  450. root@atom:/home/ericadmin#
  451. </code></pre>
  452. <p>Nous allons nous connecter sous le user <em>postgres</em> pour configurer notre serveur de base de données et créer la base initiale pour <strong>gogs</strong>, ainsi que l'utilisateur <strong>gogs</strong>.</p>
  453. <p>Voici les données que nous allons utiliser:</p>
  454. <ul>
  455. <li>gestionnaire principal de la base de données postgres: postgres</li>
  456. <li>mot de passe correspondant : ****</li>
  457. <li>utilisateur de la base de données postgres: git</li>
  458. <li>mot de passe de l'utlisateur git dans postgres: ****</li>
  459. <li>
  460. <p>base de données postgres, appartenant à l'utilisateur git de postgres: gogsdb</p>
  461. <p>root@atom:/home/ericadmin# su - postgres
  462. postgres@atom:~$</p>
  463. </li>
  464. </ul>
  465. <p>Nous allons lancer le shell <em>postgres</em> qui nous permettra de configurer notre base:</p>
  466. <pre><code>postgres@atom:~$ psql
  467. psql (9.6.10)
  468. Saisissez « help » pour l'aide.
  469. postgres=#
  470. </code></pre>
  471. <p>Création de l'utilisateur <em>git</em> ainsi que le <em>mot de passe</em> pour cet utilisateur:</p>
  472. <pre><code>postgres=# CREATE USER git CREATEDB;
  473. CREATE ROLE
  474. postgres=# \password git
  475. Saisissez le nouveau mot de passe : ****
  476. Saisissez-le à nouveau : ****
  477. postgres=#
  478. </code></pre>
  479. <p>Remplacez bien sûr les **** par un vrai mot de passe et notez le bien soigneusement.</p>
  480. <p>Création de la base de donnée et vérification:</p>
  481. <pre><code>postgres=# CREATE DATABASE gogsdb OWNER git;
  482. CREATE DATABASE
  483. postgres=# \du
  484. Liste des rôles
  485. Nom du rôle | Attributs | Membre de
  486. -------------+---------------------------------------------------------------------------------+-----------
  487. git | Créer une base | {}
  488. postgres | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS | {}
  489. postgres=# \l
  490. Liste des bases de données
  491. Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès
  492. -----------+--------------+----------+-----------------+--------------+-----------------------
  493. gogsdb | git | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |
  494. postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |
  495. template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +
  496. | | | | | postgres=CTc/postgres
  497. template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +
  498. | | | | | postgres=CTc/postgres
  499. (4 lignes)
  500. postgres=#
  501. </code></pre>
  502. <p>Voilà, nous avons installé le serveur de base de données (postgres), la base de données nécessaire à <em>gogs</em> (gogsdb), ainsi que l'utilisateur <em>git</em> (au sein de la base de données) qui pourra gérer les données de <strong>gogs</strong>.</p>
  503. <h3 id="creation-dun-repertoire-reserve-au-binaire-gogs-appartenant-a-lutilisateur-git">Création d'un répertoire réservé au binaire <em>gogs</em> appartenant à l'utilisateur <em>git</em></h3>
  504. <pre><code>root@atom:/home/ericadmin# su - git
  505. git@atom:~$ mkdir -p /home/git/bin
  506. git@atom:~$
  507. </code></pre>
  508. <h3 id="telechargement-du-binaire-gogs-dans-notre-repertoire-nouvellement-cree">Téléchargement du binaire <em>gogs</em> dans notre répertoire nouvellement créé</h3>
  509. <pre><code>git@atom:~$ cd bin
  510. git@atom:~/bin$ wget https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz
  511. --2018-11-29 14:12:26-- https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz
  512. Résolution de dl.gogs.io (dl.gogs.io)… 68.183.105.37
  513. Connexion à dl.gogs.io (dl.gogs.io)|68.183.105.37|:443… connecté.
  514. requête HTTP transmise, en attente de la réponse… 200 OK
  515. Taille : 20296268 (19M) [application/x-gzip]
  516. Sauvegarde en : « gogs_0.11.66_linux_386.tar.gz »
  517. gogs_0.11.66_linux_386.tar.gz 100%[====================================================================&gt;] 19,36M 6,65MB/s in 2,9s
  518. 2018-11-29 14:12:30 (6,65 MB/s) — « gogs_0.11.66_linux_386.tar.gz » sauvegardé [20296268/20296268]
  519. git@atom:~/bin$
  520. </code></pre>
  521. <p>Mon serveur est en i386, et pas en amd64: prenez la version qui correspond au système d'exploitation que vous avez installé. Maintenant, c'est quasi exclusivement du amd64. Mon serveur est vieux .... (mais vaillant :).</p>
  522. <h3 id="decompression-de-larchive-et-suppression-de-larchive">Décompression de l'archive et suppression de l'archive</h3>
  523. <pre><code>git@atom:~/bin$ tar vxfz gogs_0.11.66_linux_386.tar.gz &amp;&amp; rm gogs_0.11.66_linux_386.tar.gz
  524. </code></pre>
  525. <p>Notez bien que toutes ces dernières étapes se font sous utilisateur <strong>git</strong>.</p>
  526. <p>Voici le résultat dans le répertoire <em>gogs</em> créé préalablement:</p>
  527. <pre><code>git@atom:~/bin/gogs$ ls
  528. gogs LICENSE public README.md README_ZH.md scripts templates
  529. git@atom:~/bin/gogs$
  530. </code></pre>
  531. <p>Bien, tous nos éléments sont en place, base de données, utilisateur <em>git</em>, programme <em>gogs</em>. Il nous reste à connecter le tout.
  532. Tapez :</p>
  533. <pre><code>./gogs web
  534. </code></pre>
  535. <p>et lancez votre navigateur sur le nom de votre serveur suivi de :3000</p>
  536. <p>Vous arriverez sur la page de configuration de <em>gogs</em>. Remplissez les champs avec les données précédemment entrées et que vous avez bien sûr notées ;).</p>
  537. <p>Confirmez votre choix, reconnectez-vous et ça y est. :)</p>
  538. <p>Créez ensuite un <em>utilisateur</em> avec son mot de passe (à noter précieusement ...)</p>
  539. <p>Il nous reste à installer les fichiers de lancement <em>systemd</em> ou <em>init</em>; pour moi, <em>systemd</em>, la redirection <em>apache</em>, les certificats <em>letsencrypt</em>.</p>
  540. <h3 id="creation-de-lenregistrement-bind">Création de l'enregistrement <em>bind</em></h3>
  541. <p>On ajoute un enregistrement CNAME</p>
  542. <pre><code>git IN CNAME atom.yojik.net.
  543. </code></pre>
  544. <h3 id="creation-du-fichier-de-configuration-dapache">Création du fichier de configuration d'<em>apache</em></h3>
  545. <ul>
  546. <li>On crée le fichier */etc/apache2/sites-available/git.conf avec le contenu suivant:</li>
  547. <li>Il faut activer les modules <em>apache</em> suivants avec <em>a2enmod</em>, parce que il y aura une redirection du port 443 (https) vers le port 3000 interne (non -accessible de l'extérieur du serveur):</li>
  548. </ul>
  549. <blockquote>
  550. <p>proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html</p>
  551. </blockquote>
  552. <pre><code>&lt;VirtualHost *:80&gt;
  553. ServerAdmin webmaster@localhost
  554. ProxyPreserveHost On
  555. # Servers to proxy the connection, or;
  556. # List of application servers:
  557. # Usage:
  558. # ProxyPass / http://[IP Addr.]:[port]/
  559. # ProxyPassReverse / http://[IP Addr.]:[port]/
  560. # Example:
  561. ProxyPass / http://localhost:3000/
  562. ProxyPassReverse / http://localhost:3000/
  563. ServerName git.yojik.net
  564. ErrorLog ${APACHE_LOG_DIR}/error.log
  565. CustomLog ${APACHE_LOG_DIR}/access.log combined
  566. &lt;/VirtualHost&gt;
  567. </code></pre>
  568. <p>On <em>relance </em>apache*</p>
  569. <pre><code>service apache2 restart
  570. </code></pre>
  571. <h3 id="creation-du-certificat-letsencrypt-correspondant">Création du certificat <em>letsencrypt</em> correspondant</h3>
  572. <p>On lance la commande suivante:</p>
  573. <pre><code>certbot --apache
  574. </code></pre>
  575. <p>Et on suit les instructions ...</p>
  576. <h3 id="creation-des-fichiers-de-configuration-systemd">Création des fichiers de configuration <em>systemd</em></h3>
  577. <p>Il y a un exemple de fichier dans le sous-répertoire scripts/systemd de <em>gogs</em></p>
  578. <pre><code>root@atom:/etc/systemd/system# cat gogs.service
  579. [Unit]
  580. Description=Gogs
  581. After=syslog.target
  582. After=network.target
  583. After=postgresql.service
  584. [Service]
  585. # Modify these two values and uncomment them if you have
  586. # repos with lots of files and get an HTTP error 500 because
  587. # of that
  588. ###
  589. #LimitMEMLOCK=infinity
  590. #LimitNOFILE=65535
  591. Type=simple
  592. User=git
  593. Group=git
  594. WorkingDirectory=/home/git/bin/gogs
  595. ExecStart=/home/git/bin/gogs/gogs web
  596. Restart=always
  597. Environment=USER=git HOME=/home/git/
  598. [Install]
  599. WantedBy=multi-user.target
  600. root@atom:/etc/systemd/system#
  601. </code></pre>
  602. <p>Pour le lancer automatiquement au démarrage et activer la prise en compte par <em>systemd</em>, lancer:</p>
  603. <pre><code>systemctl daemon-reload
  604. systemctl enable gogs
  605. root@atom:/etc/systemd/system# systemctl enable gogs
  606. Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service → /etc/systemd/system/gogs.service.
  607. root@atom:/etc/systemd/system#
  608. </code></pre>
  609. <h3 id="tests">Tests</h3>
  610. <p>Lancez les commandes suivantes pour vous assurer que tout est fonctionnel:</p>
  611. <pre><code>root@atom:/etc/systemd/system# service gogs start
  612. root@atom:/etc/systemd/system# tail -f /var/log/daemon.log
  613. Dec 16 17:14:38 atom systemd[1]: Failed to start Gogs.
  614. Dec 16 17:14:38 atom systemd[1]: gogs.service: Unit entered failed state.
  615. Dec 16 17:14:38 atom systemd[1]: gogs.service: Failed with result 'exit-code'.
  616. Dec 16 17:16:09 atom systemd[1]: Reloading.
  617. Dec 16 17:16:09 atom systemd[1]: apt-daily.timer: Adding 6h 12min 40.966652s random time.
  618. Dec 16 17:16:13 atom systemd[1]: Started Gogs.
  619. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Custom path: /home/git/bin/gogs/custom
  620. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log
  621. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)
  622. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916
  623. root@atom:/etc/systemd/system# service gogs stop
  624. root@atom:/etc/systemd/system# service gogs start
  625. root@atom:/etc/systemd/system# tail -f /var/log/daemon.log
  626. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log
  627. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)
  628. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916
  629. Dec 16 17:16:28 atom systemd[1]: Stopping Gogs...
  630. Dec 16 17:16:28 atom systemd[1]: Stopped Gogs.
  631. Dec 16 17:16:33 atom systemd[1]: Started Gogs.
  632. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Custom path: /home/git/bin/gogs/custom
  633. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log path: /home/git/bin/gogs/log
  634. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log Mode: File (Trace)
  635. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [ INFO] Gogs on Yojik.net 0.11.66.0916
  636. </code></pre>
  637. <p>Le lancement de <em>gogs</em> marche parfaitement.
  638. Connectez-vous à partir de votre navigateur sur <em>git.yojik.net</em> (ou plutôt l'url que vous avez définie auparavant); vous devez vous retrouver sur la page d'accueil de <em>gogs</em>.</p>
  639. <p>Voilà une capture d'écran de ce que vous devez obtenir (ici, avec le dépot de ce tutoriel)</p>
  640. <p><img alt="Gogs: projet de tutoriel" src="../../../Images/tutostretch/gogs2.png" /></p>
  641. <p>Pour lancer un démarrage automatique de gogs en cas de redémarrage de votre serveur, entrez la commande suivante:</p>
  642. <pre><code>root@atom:/etc/postfix# systemctl enable gogs
  643. Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service → /etc/systemd/system/gogs.service.
  644. root@atom:/etc/postfix#
  645. </code></pre>
  646. <h3 id="tests-de-gogs">Tests de gogs</h3>
  647. <p>Sur la page d'administration de notre projet, nous pouvons voir les commandes à effectuer pour différentes opérations sur notre dépot:</p>
  648. <ul>
  649. <li>Création d'un dépot</li>
  650. </ul>
  651. <p><img alt="Création d'un dépot" src="../../../Images/tutostretch/gogs3.png" /></p>
  652. <ul>
  653. <li>Création d'un dépot: formulaire et récapitulatif</li>
  654. </ul>
  655. <p><img alt="Création d'un dépot: formulaire" src="../../../Images/tutostretch/gogs4.png" /></p>
  656. <p><img alt="Création d'un dépot: récapitulatif" src="../../../Images/tutostretch/gogs5.png" /></p>
  657. <ul>
  658. <li>Affichage des commandes disponibles pour gérer notre dépot en https</li>
  659. </ul>
  660. <p><img alt="Commandes disponibles hhps" src="../../../Images/tutostretch/gogs7.png" /></p>
  661. <ul>
  662. <li>Affichage des commandes disponibles pour gérer notre dépot en ssh</li>
  663. </ul>
  664. <p><img alt="Commandes disponibles ssh" src="../../../Images/tutostretch/gogs8.png" /></p>
  665. <ul>
  666. <li>Création d'un répertoire local <strong>A1</strong></li>
  667. </ul>
  668. <p>Donnez-lui le nom que vous voulez.</p>
  669. <pre><code> eric@aldebaran:~/temp$ mkdir A1
  670. eric@aldebaran:~/temp$ cd A1
  671. eric@aldebaran:~/temp/A1$ git init
  672. Dépôt Git vide initialisé dans /home/eric/temp/A1/.git/
  673. eric@aldebaran:~/temp/A1$
  674. </code></pre>
  675. <ul>
  676. <li>Ajout du fichier epub au dépot local</li>
  677. </ul>
  678. <p>On copie notre fichier epub déjà existant dans notre répertoire et on l'ajoute au dépot local.</p>
  679. <pre><code> eric@aldebaran:~/temp/A1$ cp ~/Devs/Chinois/Chinese-grammar-wiki/Epub/Grammar-wiki-A1/Chinese-grammar-wiki-A1.epub .
  680. eric@aldebaran:~/temp/A1$git add .
  681. eric@aldebaran:~/temp/A1$ git commit -m "premier commit"
  682. [master (commit racine) 381b37b] premier commit
  683. 1 file changed, 0 insertions(+), 0 deletions(-)
  684. create mode 100644 Chinese-grammar-wiki-A1.epub
  685. eric@aldebaran:~/temp/A1$
  686. </code></pre>
  687. <ul>
  688. <li>
  689. <p>Ajout du fichier epub au dépot distant (sur atom) après configuration des dépots <strong>remote</strong> en <em>https</em> et <em>ssh</em> et <em>poussage</em> des données avec la méthode <em>https</em>.</p>
  690. <p>eric@aldebaran:~/temp/A1$ git remote add atomssh git@atom.yojik.net:eric/Repos/chinesegrammarwiki-a1.git
  691. eric@aldebaran:~/temp/A1$ git remote add atomhttp https://git.yojik.net/eric/ChineseGrammarWiki-A1.git
  692. eric@aldebaran:~/temp/A1$ git push atomhttp master
  693. Username for 'https://git.yojik.net': eric
  694. Password for 'https://eric@git.yojik.net':
  695. Décompte des objets: 3, fait.
  696. Delta compression using up to 12 threads.
  697. Compression des objets: 100% (3/3), fait.
  698. Écriture des objets: 100% (3/3), 13.90 MiB | 6.05 MiB/s, fait.
  699. Total 3 (delta 0), reused 0 (delta 0)
  700. To https://git.yojik.net/eric/ChineseGrammarWiki-A1.git
  701. - [new branch] master -&gt; master
  702. eric@aldebaran:~/temp/A1$</p>
  703. </li>
  704. <li>
  705. <p>Affichage des derniers commits</p>
  706. </li>
  707. </ul>
  708. <p><img alt="Dernier commits" src="../../../Images/tutostretch/gogs9.png" /></p>
  709. <ul>
  710. <li>
  711. <p>Test de clonage en <em>https</em></p>
  712. <pre><code>eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git
  713. Clonage dans 'ChineseGrammarWiki-A1'...
  714. Username for 'https://git.yojik.net': eric
  715. Password for 'https://eric@git.yojik.net':
  716. remote: Décompte des objets: 3, fait.
  717. remote: Compression des objets: 100% (3/3), fait.
  718. remote: Total 3 (delta 0), reused 0 (delta 0)
  719. Dépaquetage des objets: 100% (3/3), fait.
  720. eric@aldebaran:~/temp$
  721. </code></pre>
  722. </li>
  723. <li>
  724. <p>Test de clonage en <em>ssh</em></p>
  725. <pre><code>eric@aldebaran:~/temp$ git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git
  726. Clonage dans 'chinesegrammarwiki-a1'...
  727. remote: Décompte des objets: 3, fait.
  728. remote: Compression des objets: 100% (3/3), fait.
  729. remote: Total 3 (delta 0), reused 0 (delta 0)
  730. Réception d'objets: 100% (3/3), 13.90 MiB | 13.56 MiB/s, fait.
  731. </code></pre>
  732. </li>
  733. </ul>
  734. <p><strong>Explications sur les différences constatées entre les 2 types d'URL</strong></p>
  735. <p>Là, c'est un peu sioux pour trouver la bonne URL; tout d'abord, celle donnée par la page de <em>gogs</em> est fausse: il faut repérer le <strong>bon répertoire</strong> avec le <strong>bon chemin</strong> et mettre la dernière partie en minuscules pour la méthode <em>git</em>. Les URLs sont donc différentes en <em>https</em> et <em>git</em>.</p>
  736. <p>Voilà les différences entre les 2 URLs:</p>
  737. <pre><code>git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git
  738. git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git
  739. </code></pre>
  740. <p>Vous voyez que le chemin relatif, sans la partie <em>Repos</em>, est acceptée avec la méthode <em>https</em>, car le chemin <em>/home/git/Repos</em> est celui donné à <em>gogs</em> dans sa configuration de base. Par contre, avec la méthode <em>ssh</em>, il faut redonner le chemin complet, avec <em>Repos</em>.</p>
  741. <p>Gogs transforme le nom du projet en un nom tout en minuscules; ChineseGrammarWiki-A1.git devient chinesegrammarwiki-a1.git.</p>
  742. </div>
  743. </div>
  744. <footer>
  745. <hr/>
  746. <div role="contentinfo">
  747. <!-- Copyright etc -->
  748. </div>
  749. Built with <a href="https://www.mkdocs.org/">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
  750. </footer>
  751. </div>
  752. </div>
  753. </section>
  754. </div>
  755. <div class="rst-versions" role="note" aria-label="versions">
  756. <span class="rst-current-version" data-toggle="rst-current-version">
  757. </span>
  758. </div>
  759. <script>var base_url = '../../..';</script>
  760. <script src="../../../js/theme.js" defer></script>
  761. <script src="../../../search/main.js" defer></script>
  762. <script defer>
  763. window.onload = function () {
  764. SphinxRtdTheme.Navigation.enable(true);
  765. };
  766. </script>
  767. </body>
  768. </html>