index.html 48 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000
  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. <title>Installation de git et de gogs - The Yojik Server Installation Guide</title>
  9. <link rel="shortcut icon" href="../img/favicon.ico">
  10. <link href='https://fonts.googleapis.com/css?family=Lato:400,700|Roboto+Slab:400,700|Inconsolata:400,700' rel='stylesheet' type='text/css'>
  11. <link rel="stylesheet" href="../css/theme.css" type="text/css" />
  12. <link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
  13. <link rel="stylesheet" href="../css/highlight.css">
  14. <script>
  15. // Current page data
  16. var mkdocs_page_name = "Installation de git et de gogs";
  17. var mkdocs_page_input_path = "19-dixneuf.md";
  18. var mkdocs_page_url = "/19-dixneuf/";
  19. </script>
  20. <script src="../js/jquery-2.1.1.min.js"></script>
  21. <script src="../js/modernizr-2.8.3.min.js"></script>
  22. <script type="text/javascript" src="../js/highlight.pack.js"></script>
  23. <script src="../js/theme.js"></script>
  24. </head>
  25. <body class="wy-body-for-nav" role="document">
  26. <div class="wy-grid-for-nav">
  27. <nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
  28. <div class="wy-side-nav-search">
  29. <a href=".." class="icon icon-home"> The Yojik Server Installation Guide</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" />
  33. </form>
  34. </div>
  35. </div>
  36. <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
  37. <ul class="current">
  38. <li>
  39. <li class="toctree-l1 ">
  40. <a class="" href="..">Home</a>
  41. </li>
  42. <li>
  43. <li>
  44. <li class="toctree-l1 ">
  45. <a class="" href="../1-un/">Installation d'un serveur Debian/Stretch sécurisé</a>
  46. </li>
  47. <li>
  48. <li>
  49. <li class="toctree-l1 ">
  50. <a class="" href="../2-deux/">Premières étapes de sécurisation du serveur</a>
  51. </li>
  52. <li>
  53. <li>
  54. <li class="toctree-l1 ">
  55. <a class="" href="../3-trois/">Configuration du réseau</a>
  56. </li>
  57. <li>
  58. <li>
  59. <li class="toctree-l1 ">
  60. <a class="" href="../4-quatre/">Installation d'un serveur de temps</a>
  61. </li>
  62. <li>
  63. <li>
  64. <li class="toctree-l1 ">
  65. <a class="" href="../5-cinq/">Installation d'un pare-feu</a>
  66. </li>
  67. <li>
  68. <li>
  69. <li class="toctree-l1 ">
  70. <a class="" href="../6-six/">Contrer les attaques de brute-force avec fail2ban</a>
  71. </li>
  72. <li>
  73. <li>
  74. <li class="toctree-l1 ">
  75. <a class="" href="../7-sept/">Installation d'un serveur de courrier basique</a>
  76. </li>
  77. <li>
  78. <li>
  79. <li class="toctree-l1 ">
  80. <a class="" href="../8-huit/">Installation du serveur DNS</a>
  81. </li>
  82. <li>
  83. <li>
  84. <li class="toctree-l1 ">
  85. <a class="" href="../9-neuf/">Installation d'un serveur web</a>
  86. </li>
  87. <li>
  88. <li>
  89. <li class="toctree-l1 ">
  90. <a class="" href="../10-dix/">Installation de dovecot et de l'authentification</a>
  91. </li>
  92. <li>
  93. <li>
  94. <li class="toctree-l1 ">
  95. <a class="" href="../11-onze/">Installation des certificats letsencrypt</a>
  96. </li>
  97. <li>
  98. <li>
  99. <li class="toctree-l1 ">
  100. <a class="" href="../12-douze/">Ajout des enregistrements SPF et DKIM au fichier de zone DNS</a>
  101. </li>
  102. <li>
  103. <li>
  104. <li class="toctree-l1 ">
  105. <a class="" href="../17-dixsept/">Installation de programmes de surveillance du serveur</a>
  106. </li>
  107. <li>
  108. <li>
  109. <li class="toctree-l1 ">
  110. <a class="" href="../18-dixhuit/">Installation d'un webmail</a>
  111. </li>
  112. <li>
  113. <li>
  114. <li class="toctree-l1 current">
  115. <a class="current" href="./">Installation de git et de gogs</a>
  116. <ul>
  117. <li class="toctree-l3"><a href="#installation-dun-serveur-basique">Installation d'un serveur *basique"</a></li>
  118. <li><a class="toctree-l4" href="#installation-de-git">Installation de git</a></li>
  119. <li><a class="toctree-l4" href="#installation-de-lutilisateur-git-et-du-groupe-git">Installation de l'utilisateur git et du groupe git</a></li>
  120. <li><a class="toctree-l4" href="#copie-de-la-clef-ssh-pour-un-acces-sans-mot-de-passe">Copie de la clef ssh pour un accès sans mot de passe.</a></li>
  121. <li><a class="toctree-l4" href="#creation-dun-repertoire-qui-va-contenir-nos-depots-git">Création d'un répertoire qui va contenir nos dépots git</a></li>
  122. <li><a class="toctree-l4" href="#creation-dun-premier-depot-sur-le-serveur">Création d'un premier dépot sur le serveur</a></li>
  123. <li><a class="toctree-l4" href="#creation-dun-projet-sur-la-machine-locale">Création d'un projet sur la machine locale</a></li>
  124. <li class="toctree-l3"><a href="#installation-et-configuration-de-gitweb">Installation et configuration de gitweb</a></li>
  125. <li><a class="toctree-l4" href="#installation">Installation</a></li>
  126. <li><a class="toctree-l4" href="#configuration">Configuration</a></li>
  127. <li class="toctree-l3"><a href="#installation-de-git-et-de-gogs">Installation de git et de gogs</a></li>
  128. <li><a class="toctree-l4" href="#installation-de-git_1">Installation de git</a></li>
  129. <li><a class="toctree-l4" href="#creation-de-lutilisateur-git-au-sein-du-systeme">Création de l'utilisateur git au sein du système</a></li>
  130. <li><a class="toctree-l4" href="#creation-de-lutilisateur-git-au-sein-du-systeme_1">Création de l'utilisateur git au sein du système</a></li>
  131. <li><a class="toctree-l4" href="#creation-dun-repertoire-reserve-au-binaire-gogs-appartenant-a-lutilisateur-git">Création d'un répertoire réservé au binaire gogs appartenant à l'utilisateur git</a></li>
  132. <li><a class="toctree-l4" href="#telechargement-du-binaire-gogs-dans-notre-repertoire-nouvellement-cree">Téléchargement du binaire gogs dans notre répertoire nouvellement créé</a></li>
  133. <li><a class="toctree-l4" href="#decompression-de-larchive-et-suppression-de-larchive">Décompression de l'archive et suppression de l'archive</a></li>
  134. <li><a class="toctree-l4" href="#creation-de-lenregistrement-bind">Création de l'enregistrement bind</a></li>
  135. <li><a class="toctree-l4" href="#creation-du-fichier-de-configuration-dapache">Création du fichier de configuration d'apache</a></li>
  136. <li><a class="toctree-l4" href="#creation-du-certificat-letsencrypt-correspondant">Création du certificat letsencrypt correspondant</a></li>
  137. <li><a class="toctree-l4" href="#creation-des-fichiers-de-configuration-systemd">Création des fichiers de configuration systemd</a></li>
  138. <li><a class="toctree-l4" href="#tests">Tests</a></li>
  139. <li><a class="toctree-l4" href="#tests_1">Tests</a></li>
  140. </ul>
  141. </li>
  142. <li>
  143. </ul>
  144. </div>
  145. &nbsp;
  146. </nav>
  147. <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
  148. <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
  149. <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
  150. <a href="..">The Yojik Server Installation Guide</a>
  151. </nav>
  152. <div class="wy-nav-content">
  153. <div class="rst-content">
  154. <div role="navigation" aria-label="breadcrumbs navigation">
  155. <ul class="wy-breadcrumbs">
  156. <li><a href="..">Docs</a> &raquo;</li>
  157. <li>Installation de git et de gogs</li>
  158. <li class="wy-breadcrumbs-aside">
  159. </li>
  160. </ul>
  161. <hr/>
  162. </div>
  163. <div role="main">
  164. <div class="section">
  165. <p># Installation de <em>git</em></p>
  166. <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>
  167. <h2 id="installation-dun-serveur-basique">Installation d'un serveur *basique"</h2>
  168. <h3 id="installation-de-git">Installation de <em>git</em></h3>
  169. <pre><code class="shell">root@atom:/home/ericadmin# apt install git
  170. Lecture des listes de paquets... Fait
  171. Construction de l'arbre des dépendances
  172. Lecture des informations d'état... Fait
  173. The following additional packages will be installed:
  174. git-man
  175. Paquets suggérés :
  176. git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn
  177. Les NOUVEAUX paquets suivants seront installés :
  178. git git-man
  179. 0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
  180. Il est nécessaire de prendre 0 o/6 311 ko dans les archives.
  181. Après cette opération, 34,8 Mo d'espace disque supplémentaires seront utilisés.
  182. Souhaitez-vous continuer ? [O/n] o
  183. Sélection du paquet git-man précédemment désélectionné.
  184. (Lecture de la base de données... 39220 fichiers et répertoires déjà installés.)
  185. Préparation du dépaquetage de .../git-man_1%3a2.11.0-3+deb9u4_all.deb ...
  186. Dépaquetage de git-man (1:2.11.0-3+deb9u4) ...
  187. Sélection du paquet git précédemment désélectionné.
  188. Préparation du dépaquetage de .../git_1%3a2.11.0-3+deb9u4_i386.deb ...
  189. Dépaquetage de git (1:2.11.0-3+deb9u4) ...
  190. Paramétrage de git-man (1:2.11.0-3+deb9u4) ...
  191. Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
  192. Paramétrage de git (1:2.11.0-3+deb9u4) ...
  193. root@atom:/home/ericadmin# mc
  194. </code></pre>
  195. <h3 id="installation-de-lutilisateur-git-et-du-groupe-git">Installation de l'utilisateur <em>git</em> et du groupe <em>git</em></h3>
  196. <pre><code class="shell">root@atom:/home/ericadmin# adduser git
  197. Ajout de l'utilisateur « git » ...
  198. Ajout du nouveau groupe « git » (1001) ...
  199. Ajout du nouvel utilisateur « git » (1001) avec le groupe « git » ...
  200. Création du répertoire personnel « /home/git »...
  201. Copie des fichiers depuis « /etc/skel »...
  202. Entrez le nouveau mot de passe UNIX :
  203. Retapez le nouveau mot de passe UNIX :
  204. passwd: password updated successfully
  205. Changing the user information for git
  206. Enter the new value, or press ENTER for the default
  207. Full Name []:
  208. Room Number []:
  209. Work Phone []:
  210. Home Phone []:
  211. Other []:
  212. Cette information est-elle correcte ? [O/n]o
  213. root@atom:/home/ericadmin#
  214. </code></pre>
  215. <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>
  216. <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>
  217. <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>
  218. <blockquote>
  219. <p>AllowUsers ericadmin git</p>
  220. </blockquote>
  221. <p>Rechargez <em>sshd</em> en lançant:</p>
  222. <blockquote>
  223. <p>service sshd restart
  224. Copie de votre clef sur le serveur: dans un premier temps, il faut remettre la configuration d'origine de <em>sshd</em>. Pour cela, copiez cotre fichier actuel en sshd_config.n. Cipiez le fichier /etc/ssh/sshd_config.orig en /etc/ssh/sshd_config et relancez sshd avec service sshd restart.</p>
  225. <p>Vous devez pouvoir vous connecter sur le compte git en tapant ceci:</p>
  226. </blockquote>
  227. <pre><code class="shell">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 class="shell">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: &quot;ssh 'git@atom'&quot;
  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 class="shell">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.
  259. Déconnectez-vous à nouveau (Ctrl D)
  260. Remettez le fichier sshd_config (qui contient le AllowUsers que nous avons configuré auparavant).
  261. Test:</p>
  262. <pre><code class="shell">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 class="shell">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. <pre><code class="shell">git@atom:~$ cd Repos/
  279. git@atom:~/Repos$ mkdir Essai1.git
  280. git@atom:~/Repos$ cd Essai1.git/
  281. git@atom:~/Repos/Essai1.git$ git init --bare
  282. Dépôt Git vide initialisé dans /home/git/Repos/Essai1.git/
  283. git@atom:~/Repos/Essai1.git$
  284. </code></pre>
  285. <h3 id="creation-dun-projet-sur-la-machine-locale">Création d'un projet sur la machine locale</h3>
  286. <p>(pour moi dans le répertoire /home/Eric/Devs)</p>
  287. <pre><code class="shell">eric@aldebaran:~/Devs$ mkdir Essai1
  288. eric@aldebaran:~/Devs$ cd Essai1/
  289. eric@aldebaran:~/Devs/Essai1$ git init
  290. Dépôt Git vide initialisé dans /home/eric/Devs/Essai1/.git/
  291. eric@aldebaran:~/Devs/Essai1$ ls -al
  292. total 12
  293. drwxr-xr-x 3 eric eric 4096 déc. 30 10:01 .
  294. drwxr-xr-x 18 eric eric 4096 déc. 30 10:00 ..
  295. drwxr-xr-x 7 eric eric 4096 déc. 30 10:01 .git
  296. eric@aldebaran:~/Devs/Essai1$
  297. </code></pre>
  298. <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>
  299. <pre><code class="shell">eric@aldebaran:~/Devs/Essai1$ touch README.md
  300. eric@aldebaran:~/Devs/Essai1$ ls
  301. README.md
  302. eric@aldebaran:~/Devs/Essai1$ echo &quot;Un premier fichier&quot; &gt; README.md
  303. eric@aldebaran:~/Devs/Essai1$ cat README.md
  304. Un premier fichier
  305. eric@aldebaran:~/Devs/Essai1$
  306. </code></pre>
  307. <p>Ajoutons-le à la base <em>git</em></p>
  308. <pre><code class="shell">eric@aldebaran:~/Devs/Essai1$ git add .
  309. eric@aldebaran:~/Devs/Essai1$ git commit -m &quot;mon premier commit&quot;
  310. [master (commit racine) bc25e5b] mon premier commit
  311. 1 file changed, 1 insertion(+)
  312. create mode 100644 README.md
  313. eric@aldebaran:~/Devs/Essai1$ git status
  314. Sur la branche master
  315. rien à valider, la copie de travail est propre
  316. eric@aldebaran:~/Devs/Essai1$
  317. </code></pre>
  318. <p>Notre fichier a été ajouté à notre base git locale. Nous allons ajouter le dépot distant situé sur notre serveur.</p>
  319. <pre><code class="shell">eric@aldebaran:~/Devs/Essai1$ git remote add origin ssh://git@atom.yojik.net:Repos/Essai1.git
  320. eric@aldebaran:~/Devs/Essai1$ git remote
  321. origin
  322. eric@aldebaran:~/Devs/Essai1$ git remote -v
  323. origin ssh://git@atom/Repos/Essai1.git (fetch)
  324. origin ssh://git@atom/Repos/Essai1.git (push)
  325. eric@aldebaran:~/Devs/Essai1$
  326. </code></pre>
  327. <p>J'ai ajouté les commandes de vérification.</p>
  328. <p>Nous allons "pousser" notre projet sur le serveur.</p>
  329. <pre><code class="shell">eric@aldebaran:~/Devs/Essai1$ git push origin master
  330. Décompte des objets: 3, fait.
  331. Écriture des objets: 100% (3/3), 220 bytes | 0 bytes/s, fait.
  332. Total 3 (delta 0), reused 0 (delta 0)
  333. To atom.yojik.net:Repos/Essai1.git
  334. * [new branch] master -&gt; master
  335. </code></pre>
  336. <p>Tests suivants:
  337. 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>:
  338. <strong>Protocole *git</strong>*:</p>
  339. <pre><code class="shell">eric@aldebaran:~/Devs$ git clone git@atom.yojik.net:Repos/Essai1.git Essai1
  340. Clonage dans 'Essai1'...
  341. remote: Décompte des objets: 3, fait.
  342. remote: Total 3 (delta 0), reused 0 (delta 0)
  343. Réception d'objets: 100% (3/3), fait.
  344. eric@aldebaran:~/Devs$ cd Essai1/
  345. eric@aldebaran:~/Devs/Essai1$ ls
  346. README.md
  347. eric@aldebaran:~/Devs/Essai1$ cat README.md
  348. Essai2
  349. eric@aldebaran:~/Devs/Essai1$ echo &quot; d'un deuxième poussage&quot; &gt;&gt; README.md
  350. eric@aldebaran:~/Devs/Essai1$ cat README.md
  351. Essai2
  352. d'un deuxième poussage
  353. eric@aldebaran:~/Devs/Essai1$ git add .
  354. eric@aldebaran:~/Devs/Essai1$ git commit -m &quot;2ème poussage&quot;
  355. [master 4edff63] 2ème poussage
  356. 1 file changed, 1 insertion(+)
  357. eric@aldebaran:~/Devs/Essai1$ git push origin master
  358. Décompte des objets: 3, fait.
  359. Écriture des objets: 100% (3/3), 280 bytes | 0 bytes/s, fait.
  360. Total 3 (delta 0), reused 0 (delta 0)
  361. To atom.yojik.net:Repos/Essai1.git
  362. e9cd815..4edff63 master -&gt; master
  363. eric@aldebaran:~/Devs/Essai1$
  364. </code></pre>
  365. <p><strong>Protocole *https</strong>*:</p>
  366. <pre><code class="shell">
  367. </code></pre>
  368. <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>
  369. <h2 id="installation-et-configuration-de-gitweb">Installation et configuration de <em>gitweb</em></h2>
  370. <h3 id="installation">Installation</h3>
  371. <pre><code class="shell">root@atom:/home/ericadmin# apt install gitweb
  372. Lecture des listes de paquets... Fait
  373. Construction de l'arbre des dépendances
  374. Lecture des informations d'état... Fait
  375. The following additional packages will be installed:
  376. libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
  377. Paquets suggérés :
  378. git-doc libdata-dump-perl
  379. Les NOUVEAUX paquets suivants seront installés :
  380. gitweb libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl
  381. 0 mis à jour, 6 nouvellement installés, 0 à enlever et 0 non mis à jour.
  382. Il est nécessaire de prendre 1 067 ko dans les archives.
  383. Après cette opération, 1 605 ko d'espace disque supplémentaires seront utilisés.
  384. Souhaitez-vous continuer ? [O/n] o
  385. Réception de:1 http://deb.debian.org/debian stretch/main i386 libhtml-tagset-perl all 3.20-3 [12,7 kB]
  386. Réception de:2 http://deb.debian.org/debian stretch/main i386 libhtml-parser-perl i386 3.72-3 [105 kB]
  387. Réception de:3 http://deb.debian.org/debian stretch/main i386 libcgi-pm-perl all 4.35-1 [222 kB]
  388. Réception de:4 http://deb.debian.org/debian stretch/main i386 gitweb all 1:2.11.0-3+deb9u4 [676 kB]
  389. Réception de:5 http://deb.debian.org/debian stretch/main i386 libfcgi-perl i386 0.78-2 [40,2 kB]
  390. Réception de:6 http://deb.debian.org/debian stretch/main i386 libcgi-fast-perl all 1:2.12-1 [11,2 kB]
  391. 1 067 ko réceptionnés en 0s (6 128 ko/s)
  392. Sélection du paquet libhtml-tagset-perl précédemment désélectionné.
  393. (Lecture de la base de données... 40075 fichiers et répertoires déjà installés.)
  394. Préparation du dépaquetage de .../0-libhtml-tagset-perl_3.20-3_all.deb ...
  395. Dépaquetage de libhtml-tagset-perl (3.20-3) ...
  396. Sélection du paquet libhtml-parser-perl précédemment désélectionné.
  397. Préparation du dépaquetage de .../1-libhtml-parser-perl_3.72-3_i386.deb ...
  398. Dépaquetage de libhtml-parser-perl (3.72-3) ...
  399. Sélection du paquet libcgi-pm-perl précédemment désélectionné.
  400. Préparation du dépaquetage de .../2-libcgi-pm-perl_4.35-1_all.deb ...
  401. Dépaquetage de libcgi-pm-perl (4.35-1) ...
  402. Sélection du paquet gitweb précédemment désélectionné.
  403. Préparation du dépaquetage de .../3-gitweb_1%3a2.11.0-3+deb9u4_all.deb ...
  404. Dépaquetage de gitweb (1:2.11.0-3+deb9u4) ...
  405. Sélection du paquet libfcgi-perl précédemment désélectionné.
  406. Préparation du dépaquetage de .../4-libfcgi-perl_0.78-2_i386.deb ...
  407. Dépaquetage de libfcgi-perl (0.78-2) ...
  408. Sélection du paquet libcgi-fast-perl précédemment désélectionné.
  409. Préparation du dépaquetage de .../5-libcgi-fast-perl_1%3a2.12-1_all.deb ...
  410. Dépaquetage de libcgi-fast-perl (1:2.12-1) ...
  411. Paramétrage de libhtml-tagset-perl (3.20-3) ...
  412. Paramétrage de libhtml-parser-perl (3.72-3) ...
  413. Paramétrage de libcgi-pm-perl (4.35-1) ...
  414. Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
  415. Paramétrage de libfcgi-perl (0.78-2) ...
  416. Paramétrage de gitweb (1:2.11.0-3+deb9u4) ...
  417. apache2_invoke: Enable configuration gitweb
  418. Paramétrage de libcgi-fast-perl (1:2.12-1) ...
  419. root@atom:/home/ericadmin#
  420. </code></pre>
  421. <h3 id="configuration">Configuration</h3>
  422. <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>
  423. <blockquote>
  424. <p>$projectroot = "/home/git/Repos";
  425. C'est la racine de nos dépots.</p>
  426. </blockquote>
  427. <p>Activez <em>cgi</em> dans <em>apache</em> et rechargez la configuration:</p>
  428. <pre><code class="shell">root@atom:/home/ericadmin# a2enmod cgi
  429. Enabling module cgi.
  430. To activate the new configuration, you need to run:
  431. systemctl restart apache2
  432. root@atom:/home/ericadmin# systemctl restart apache2
  433. </code></pre>
  434. <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, à par 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>
  435. <h2 id="installation-de-git-et-de-gogs">Installation de <em>git</em> et de <em>gogs</em></h2>
  436. <p>Nous allons installer un serveur git sur notre petit serveur. Gogs est un serveur git écrit en <strong>go</strong>.
  437. 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 ...)
  438. Je me suis inspiré de la documentation officielle ainsi que de ce tutorial:
  439. <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>
  440. <p>Commençons par installer <strong>git</strong>.</p>
  441. <h3 id="installation-de-git_1">Installation de <em>git</em></h3>
  442. <pre><code class="shell">root@atom:~# apt-get install git
  443. Lecture des listes de paquets... Fait
  444. Construction de l'arbre des dépendances
  445. Lecture des informations d'état... Fait
  446. The following additional packages will be installed:
  447. git-man liberror-perl patch rsync
  448. Paquets suggérés :
  449. git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn ed diffutils-doc
  450. Les NOUVEAUX paquets suivants seront installés :
  451. git git-man liberror-perl patch rsync
  452. 0 mis à jour, 5 nouvellement installés, 0 à enlever et 0 non mis à jour.
  453. Il est nécessaire de prendre 6 869 ko dans les archives.
  454. Après cette opération, 35,9 Mo d'espace disque supplémentaires seront utilisés.
  455. Souhaitez-vous continuer ? [O/n] o
  456. Réception de:1 http://deb.debian.org/debian stretch/main i386 liberror-perl all 0.17024-1 [26,9 kB]
  457. Réception de:2 http://deb.debian.org/debian stretch/main i386 git-man all 1:2.11.0-3+deb9u4 [1 433 kB]
  458. Réception de:3 http://deb.debian.org/debian stretch/main i386 git i386 1:2.11.0-3+deb9u4 [4 879 kB]
  459. Réception de:4 http://deb.debian.org/debian stretch/main i386 patch i386 2.7.5-1+deb9u1 [124 kB]
  460. Réception de:5 http://deb.debian.org/debian stretch/main i386 rsync i386 3.1.2-1+deb9u1 [407 kB]
  461. 6 869 ko réceptionnés en 0s (12,4 Mo/s)
  462. Sélection du paquet liberror-perl précédemment désélectionné.
  463. (Lecture de la base de données... 37491 fichiers et répertoires déjà installés.)
  464. Préparation du dépaquetage de .../liberror-perl_0.17024-1_all.deb ...
  465. Dépaquetage de liberror-perl (0.17024-1) ...
  466. Sélection du paquet git-man précédemment désélectionné.
  467. Préparation du dépaquetage de .../git-man_1%3a2.11.0-3+deb9u4_all.deb ...
  468. Dépaquetage de git-man (1:2.11.0-3+deb9u4) ...
  469. Sélection du paquet git précédemment désélectionné.
  470. Préparation du dépaquetage de .../git_1%3a2.11.0-3+deb9u4_i386.deb ...
  471. Dépaquetage de git (1:2.11.0-3+deb9u4) ...
  472. Sélection du paquet patch précédemment désélectionné.
  473. Préparation du dépaquetage de .../patch_2.7.5-1+deb9u1_i386.deb ...
  474. Dépaquetage de patch (2.7.5-1+deb9u1) ...
  475. Sélection du paquet rsync précédemment désélectionné.
  476. Préparation du dépaquetage de .../rsync_3.1.2-1+deb9u1_i386.deb ...
  477. Dépaquetage de rsync (3.1.2-1+deb9u1) ...
  478. Paramétrage de git-man (1:2.11.0-3+deb9u4) ...
  479. Paramétrage de liberror-perl (0.17024-1) ...
  480. Paramétrage de rsync (3.1.2-1+deb9u1) ...
  481. Created symlink /etc/systemd/system/multi-user.target.wants/rsync.service → /lib/systemd/system/rsync.service.
  482. Paramétrage de patch (2.7.5-1+deb9u1) ...
  483. Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u6) ...
  484. Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
  485. Paramétrage de git (1:2.11.0-3+deb9u4) ...
  486. root@atom:~#
  487. </code></pre>
  488. <h3 id="creation-de-lutilisateur-git-au-sein-du-systeme">Création de l'utilisateur <em>git</em> au sein du système</h3>
  489. <blockquote>
  490. <p>commande adduser </p>
  491. </blockquote>
  492. <pre><code>root@atom:/home/ericadmin# adduser --disabled-login --gecos 'Gogs' git
  493. Ajout de l'utilisateur « git » ...
  494. Ajout du nouveau groupe « git » (1001) ...
  495. Ajout du nouvel utilisateur « git » (1001) avec le groupe « git » ...
  496. Création du répertoire personnel « /home/git »...
  497. Copie des fichiers depuis « /etc/skel »...
  498. root@atom:/home/ericadmin#
  499. ### Installation de la base de données *Postgresql*
  500. Nous aurions pu utiliser à la place de **Postgresql**, **mysql** ou **sqlite3**.
  501. </code></pre>
  502. <p>root@atom:/home/ericadmin# apt install -y postgresql postgresql-client libpq-dev
  503. Lecture des listes de paquets... Fait
  504. Construction de l'arbre des dépendances <br />
  505. Lecture des informations d'état... Fait
  506. The following additional packages will be installed:
  507. libpq5 libsensors4 postgresql-9.6 postgresql-client-9.6 postgresql-client-common postgresql-common postgresql-contrib-9.6 sysstat
  508. Paquets suggérés :
  509. postgresql-doc-9.6 lm-sensors postgresql-doc locales-all libdbd-pg-perl isag
  510. Les NOUVEAUX paquets suivants seront installés :
  511. libpq-dev libpq5 libsensors4 postgresql postgresql-9.6 postgresql-client postgresql-client-9.6 postgresql-client-common postgresql-common
  512. postgresql-contrib-9.6 sysstat
  513. 0 mis à jour, 11 nouvellement installés, 0 à enlever et 0 non mis à jour.
  514. Il est nécessaire de prendre 7 398 ko dans les archives.
  515. Après cette opération, 33,7 Mo d'espace disque supplémentaires seront utilisés.
  516. Réception de:1 http://deb.debian.org/debian stretch/main i386 libpq5 i386 9.6.10-0+deb9u1 [142 kB]
  517. Réception de:2 http://deb.debian.org/debian stretch/main i386 libpq-dev i386 9.6.10-0+deb9u1 [224 kB]
  518. Réception de:3 http://deb.debian.org/debian stretch/main i386 libsensors4 i386 1:3.4.0-4 [54,0 kB]
  519. Réception de:4 http://deb.debian.org/debian stretch/main i386 postgresql-client-common all 181+deb9u2 [79,2 kB]
  520. Réception de:5 http://deb.debian.org/debian stretch/main i386 postgresql-client-9.6 i386 9.6.10-0+deb9u1 [1 271 kB]
  521. Réception de:6 http://deb.debian.org/debian stretch/main i386 postgresql-common all 181+deb9u2 [217 kB]
  522. Réception de:7 http://deb.debian.org/debian stretch/main i386 postgresql-9.6 i386 9.6.10-0+deb9u1 [4 395 kB]
  523. Réception de:8 http://deb.debian.org/debian stretch/main i386 postgresql all 9.6+181+deb9u2 [55,8 kB]
  524. Réception de:9 http://deb.debian.org/debian stretch/main i386 postgresql-client all 9.6+181+deb9u2 [55,8 kB]
  525. Réception de:10 http://deb.debian.org/debian stretch/main i386 postgresql-contrib-9.6 i386 9.6.10-0+deb9u1 [531 kB]
  526. Réception de:11 http://deb.debian.org/debian stretch/main i386 sysstat i386 11.4.3-2 [373 kB]
  527. 7 398 ko réceptionnés en 0s (11,8 Mo/s) <br />
  528. Préconfiguration des paquets...
  529. Sélection du paquet libpq5:i386 précédemment désélectionné.
  530. (Lecture de la base de données... 38406 fichiers et répertoires déjà installés.)
  531. Préparation du dépaquetage de .../00-libpq5_9.6.10-0+deb9u1_i386.deb ...
  532. Dépaquetage de libpq5:i386 (9.6.10-0+deb9u1) ...
  533. Sélection du paquet libpq-dev précédemment désélectionné.
  534. Préparation du dépaquetage de .../01-libpq-dev_9.6.10-0+deb9u1_i386.deb ...
  535. Dépaquetage de libpq-dev (9.6.10-0+deb9u1) ...
  536. Sélection du paquet libsensors4:i386 précédemment désélectionné.
  537. Préparation du dépaquetage de .../02-libsensors4_1%3a3.4.0-4_i386.deb ...
  538. Dépaquetage de libsensors4:i386 (1:3.4.0-4) ...
  539. Sélection du paquet postgresql-client-common précédemment désélectionné.
  540. Préparation du dépaquetage de .../03-postgresql-client-common_181+deb9u2_all.deb ...
  541. Dépaquetage de postgresql-client-common (181+deb9u2) ...
  542. Sélection du paquet postgresql-client-9.6 précédemment désélectionné.
  543. Préparation du dépaquetage de .../04-postgresql-client-9.6_9.6.10-0+deb9u1_i386.deb ...
  544. Dépaquetage de postgresql-client-9.6 (9.6.10-0+deb9u1) ...
  545. Sélection du paquet postgresql-common précédemment désélectionné.
  546. Préparation du dépaquetage de .../05-postgresql-common_181+deb9u2_all.deb ...
  547. Ajout de « détournement de /usr/bin/pg_config en /usr/bin/pg_config.libpq-dev par postgresql-common »
  548. Dépaquetage de postgresql-common (181+deb9u2) ...
  549. Sélection du paquet postgresql-9.6 précédemment désélectionné.
  550. Préparation du dépaquetage de .../06-postgresql-9.6_9.6.10-0+deb9u1_i386.deb ...
  551. Dépaquetage de postgresql-9.6 (9.6.10-0+deb9u1) ...
  552. Sélection du paquet postgresql précédemment désélectionné.
  553. Préparation du dépaquetage de .../07-postgresql_9.6+181+deb9u2_all.deb ...
  554. Dépaquetage de postgresql (9.6+181+deb9u2) ...
  555. Sélection du paquet postgresql-client précédemment désélectionné.
  556. Préparation du dépaquetage de .../08-postgresql-client_9.6+181+deb9u2_all.deb ...
  557. Dépaquetage de postgresql-client (9.6+181+deb9u2) ...
  558. Sélection du paquet postgresql-contrib-9.6 précédemment désélectionné.
  559. Préparation du dépaquetage de .../09-postgresql-contrib-9.6_9.6.10-0+deb9u1_i386.deb ...
  560. Dépaquetage de postgresql-contrib-9.6 (9.6.10-0+deb9u1) ...
  561. Sélection du paquet sysstat précédemment désélectionné.
  562. Préparation du dépaquetage de .../10-sysstat_11.4.3-2_i386.deb ...
  563. Dépaquetage de sysstat (11.4.3-2) ...
  564. Paramétrage de libpq5:i386 (9.6.10-0+deb9u1) ...
  565. Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
  566. Paramétrage de postgresql-client-common (181+deb9u2) ...
  567. Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u6) ...
  568. Paramétrage de postgresql-common (181+deb9u2) ...
  569. Adding user postgres to group ssl-cert</p>
  570. <p>Creating config file /etc/postgresql-common/createcluster.conf with new version</p>
  571. <p>Creating config file /etc/logrotate.d/postgresql-common with new version
  572. Building PostgreSQL dictionaries from installed myspell/hunspell packages...
  573. Removing obsolete dictionary files:
  574. Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /lib/systemd/system/postgresql.service.
  575. Paramétrage de libsensors4:i386 (1:3.4.0-4) ...
  576. Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
  577. Paramétrage de libpq-dev (9.6.10-0+deb9u1) ...
  578. Paramétrage de sysstat (11.4.3-2) ...</p>
  579. <p>Creating config file /etc/default/sysstat with new version
  580. update-alternatives: utilisation de « /usr/bin/sar.sysstat » pour fournir « /usr/bin/sar » (sar) en mode automatique
  581. Paramétrage de postgresql-client-9.6 (9.6.10-0+deb9u1) ...
  582. update-alternatives: utilisation de « /usr/share/postgresql/9.6/man/man1/psql.1.gz » pour fournir « /usr/share/man/man1/psql.1.gz » (psql.1.gz) en mode automatique
  583. Paramétrage de postgresql-9.6 (9.6.10-0+deb9u1) ...
  584. Creating new cluster 9.6/main ...
  585. config /etc/postgresql/9.6/main
  586. data /var/lib/postgresql/9.6/main
  587. locale fr_FR.UTF-8
  588. socket /var/run/postgresql
  589. port 5432
  590. update-alternatives: utilisation de « /usr/share/postgresql/9.6/man/man1/postmaster.1.gz » pour fournir « /usr/share/man/man1/postmaster.1.gz » (postmaster.1.gz) en mode automatique
  591. Paramétrage de postgresql (9.6+181+deb9u2) ...
  592. Paramétrage de postgresql-client (9.6+181+deb9u2) ...
  593. Paramétrage de postgresql-contrib-9.6 (9.6.10-0+deb9u1) ...
  594. Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u6) ...
  595. Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
  596. root@atom:/home/ericadmin# </p>
  597. <pre><code>
  598. Lancement du serveur Postgresql et configuration pour un lancement automatique au démarrage de la machine:
  599. &gt; systemctl start postgresql
  600. systemctl enable postgresql
  601. </code></pre>
  602. <p>root@atom:/home/ericadmin# systemctl start postgresql
  603. root@atom:/home/ericadmin# systemctl enable postgresql
  604. Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.
  605. Executing: /lib/systemd/systemd-sysv-install enable postgresql
  606. root@atom:/home/ericadmin#</p>
  607. <pre><code>Nous allons nous connecter sous le user &quot;postgres&quot; pour configurer notre serveur de base de données et créer la base initiale pour **gogs**, ainsi que l'utilisateur **gogs**..
  608. Voici les données que nous allons utiliser:
  609. &gt; gestionnaire principal de la base de données postgres: postgres
  610. &gt; mot de passe correspondant : ****
  611. &gt; utilisateur de la base de données postgres: git
  612. &gt; mot de passe de l'utlisateur git dans postgres: ****
  613. &gt; base de données postgres, appartenant à l'utilisateur git de postgres: gogsdb
  614. </code></pre>
  615. <p>root@atom:/home/ericadmin# su - postgres
  616. postgres@atom:~$ </p>
  617. <pre><code>Nous allons lancer le shell *postgres* qui nous permettra de configurer notre base:
  618. ```shell
  619. postgres@atom:~$ psql
  620. psql (9.6.10)
  621. Saisissez « help » pour l'aide.
  622. postgres=#
  623. </code></pre>
  624. <p>Création de l'utilisateur <em>git</em> ainsi que le <em>mot de passe</em> pour cet utilisateur:</p>
  625. <pre><code>postgres=# CREATE USER git CREATEDB;
  626. CREATE ROLE
  627. postgres=# \password git
  628. Saisissez le nouveau mot de passe : ****
  629. Saisissez-le à nouveau : ****
  630. postgres=#
  631. </code></pre>
  632. <p>Remplacez bien sûr les **** par un vrai mot de passe et notez le bien soigneusement.</p>
  633. <p>Création de la base de donnée et vérification:</p>
  634. <pre><code>postgres=# CREATE DATABASE gogsdb OWNER git;
  635. CREATE DATABASE
  636. postgres=# \du
  637. Liste des rôles
  638. Nom du rôle | Attributs | Membre de
  639. -------------+---------------------------------------------------------------------------------+-----------
  640. git | Créer une base | {}
  641. postgres | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS | {}
  642. postgres=# \l
  643. Liste des bases de données
  644. Nom | Propriétaire | Encodage | Collationnement | Type caract. | Droits d'accès
  645. -----------+--------------+----------+-----------------+--------------+-----------------------
  646. gogsdb | git | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |
  647. postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |
  648. template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +
  649. | | | | | postgres=CTc/postgres
  650. template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +
  651. | | | | | postgres=CTc/postgres
  652. (4 lignes)
  653. postgres=#
  654. </code></pre>
  655. <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>
  656. <h3 id="creation-de-lutilisateur-git-au-sein-du-systeme_1">Création de l'utilisateur <em>git</em> au sein du système</h3>
  657. <blockquote>
  658. <p>commande adduser
  659. Avant, n'oubliez pas de repasser sous utilisateur <em>root</em> en tapant <em>Ctrl D</em></p>
  660. </blockquote>
  661. <pre><code>root@atom:/home/ericadmin# adduser --disabled-login --gecos 'Gogs' git
  662. Ajout de l'utilisateur « git » ...
  663. Ajout du nouveau groupe « git » (1001) ...
  664. Ajout du nouvel utilisateur « git » (1001) avec le groupe « git » ...
  665. Création du répertoire personnel « /home/git »...
  666. Copie des fichiers depuis « /etc/skel »...
  667. root@atom:/home/ericadmin#
  668. </code></pre>
  669. <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>
  670. <pre><code>root@atom:/home/ericadmin# su - git
  671. git@atom:~$ mkdir -p /home/git/bin
  672. git@atom:~$
  673. </code></pre>
  674. <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>
  675. <pre><code>git@atom:~$ cd bin
  676. git@atom:~/bin$ wget https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz
  677. --2018-11-29 14:12:26-- https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz
  678. Résolution de dl.gogs.io (dl.gogs.io)… 68.183.105.37
  679. Connexion à dl.gogs.io (dl.gogs.io)|68.183.105.37|:443… connecté.
  680. requête HTTP transmise, en attente de la réponse… 200 OK
  681. Taille : 20296268 (19M) [application/x-gzip]
  682. Sauvegarde en : « gogs_0.11.66_linux_386.tar.gz »
  683. gogs_0.11.66_linux_386.tar.gz 100%[====================================================================&gt;] 19,36M 6,65MB/s in 2,9s
  684. 2018-11-29 14:12:30 (6,65 MB/s) — « gogs_0.11.66_linux_386.tar.gz » sauvegardé [20296268/20296268]
  685. git@atom:~/bin$
  686. </code></pre>
  687. <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>
  688. <h3 id="decompression-de-larchive-et-suppression-de-larchive">Décompression de l'archive et suppression de l'archive</h3>
  689. <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
  690. </code></pre>
  691. <p>Notez bien que toutes ces dernières étapes se font sous utilisateur <strong>git</strong>.</p>
  692. <p>Voici le résultat dans le répertoire <em>gogs</em> créé préalablement:</p>
  693. <pre><code class="shell">git@atom:~/bin/gogs$ ls
  694. gogs LICENSE public README.md README_ZH.md scripts templates
  695. git@atom:~/bin/gogs$
  696. </code></pre>
  697. <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.
  698. Tapez :</p>
  699. <blockquote>
  700. <p>./gogs web</p>
  701. </blockquote>
  702. <p>et lancez votre navigateur sur le nom de votre serveur suivi de :3000
  703. 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 ;).
  704. Confirmez votre choix, reconnectez-vous et ça y est:)
  705. Créez ensuite un <em>utilisateur</em> avec son mot de passe (à noter précieusement ...)
  706. 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>
  707. <h3 id="creation-de-lenregistrement-bind">Création de l'enregistrement <em>bind</em></h3>
  708. <p>On ajoute un enregistrement CNAME</p>
  709. <blockquote>
  710. <p>git IN CNAME atom.yojik.net.</p>
  711. </blockquote>
  712. <h3 id="creation-du-fichier-de-configuration-dapache">Création du fichier de configuration d'<em>apache</em></h3>
  713. <p>On crée le fichier <em>/etc/apache2/sites-available/git.conf avec le contenu suivant:
  714. Il faut activer les modules </em>apache<em> suivants avec </em>a2enmod*, parce que il y aura une redirection du port 443 (https) vers le port 3000 interne (non -accessible de l'extérieur du serveur):</p>
  715. <blockquote>
  716. <p>proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html</p>
  717. </blockquote>
  718. <pre><code class="shell">&lt;VirtualHost *:80&gt;
  719. ServerAdmin webmaster@localhost
  720. ProxyPreserveHost On
  721. # Servers to proxy the connection, or;
  722. # List of application servers:
  723. # Usage:
  724. # ProxyPass / http://[IP Addr.]:[port]/
  725. # ProxyPassReverse / http://[IP Addr.]:[port]/
  726. # Example:
  727. ProxyPass / http://localhost:3000/
  728. ProxyPassReverse / http://localhost:3000/
  729. ServerName git.yojik.net
  730. ErrorLog ${APACHE_LOG_DIR}/error.log
  731. CustomLog ${APACHE_LOG_DIR}/access.log combined
  732. &lt;/VirtualHost&gt;
  733. </code></pre>
  734. <p>On <em>relance </em>apache*</p>
  735. <blockquote>
  736. <p>service apache2 restart</p>
  737. </blockquote>
  738. <h3 id="creation-du-certificat-letsencrypt-correspondant">Création du certificat <em>letsencrypt</em> correspondant</h3>
  739. <p>On lance la commande suivante:</p>
  740. <blockquote>
  741. <p>certbot --apache
  742. Et on suit les instructions ...</p>
  743. </blockquote>
  744. <h3 id="creation-des-fichiers-de-configuration-systemd">Création des fichiers de configuration <em>systemd</em></h3>
  745. <p>Il y a un exemple de fichier dans le sous-répertoire scripts/systemd de <em>gogs</em></p>
  746. <pre><code class="shell">root@atom:/etc/systemd/system# cat gogs.service
  747. [Unit]
  748. Description=Gogs
  749. After=syslog.target
  750. After=network.target
  751. After=postgresql.service
  752. [Service]
  753. # Modify these two values and uncomment them if you have
  754. # repos with lots of files and get an HTTP error 500 because
  755. # of that
  756. ###
  757. #LimitMEMLOCK=infinity
  758. #LimitNOFILE=65535
  759. Type=simple
  760. User=git
  761. Group=git
  762. WorkingDirectory=/home/git/bin/gogs
  763. ExecStart=/home/git/bin/gogs/gogs web
  764. Restart=always
  765. Environment=USER=git HOME=/home/git/
  766. [Install]
  767. WantedBy=multi-user.target
  768. root@atom:/etc/systemd/system#
  769. </code></pre>
  770. <p>Pour le lancer automatiquement au démarrage et activer la prise en compte par <em>systemd</em>, lancer:</p>
  771. <blockquote>
  772. <p>systemctl daemon-reload
  773. systemctl enable gogs</p>
  774. </blockquote>
  775. <pre><code class="shell">root@atom:/etc/systemd/system# systemctl enable gogs
  776. Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service → /etc/systemd/system/gogs.service.
  777. root@atom:/etc/systemd/system#
  778. </code></pre>
  779. <h3 id="tests">Tests</h3>
  780. <p>Lancez les commandes suivantes pour vous assurer que tout est fonctionnel:</p>
  781. <pre><code class="shell">root@atom:/etc/systemd/system# service gogs start
  782. root@atom:/etc/systemd/system# tail -f /var/log/daemon.log
  783. Dec 16 17:14:38 atom systemd[1]: Failed to start Gogs.
  784. Dec 16 17:14:38 atom systemd[1]: gogs.service: Unit entered failed state.
  785. Dec 16 17:14:38 atom systemd[1]: gogs.service: Failed with result 'exit-code'.
  786. Dec 16 17:16:09 atom systemd[1]: Reloading.
  787. Dec 16 17:16:09 atom systemd[1]: apt-daily.timer: Adding 6h 12min 40.966652s random time.
  788. Dec 16 17:16:13 atom systemd[1]: Started Gogs.
  789. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Custom path: /home/git/bin/gogs/custom
  790. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log
  791. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)
  792. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916
  793. root@atom:/etc/systemd/system# service gogs stop
  794. root@atom:/etc/systemd/system# service gogs start
  795. root@atom:/etc/systemd/system# tail -f /var/log/daemon.log
  796. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log
  797. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)
  798. Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916
  799. Dec 16 17:16:28 atom systemd[1]: Stopping Gogs...
  800. Dec 16 17:16:28 atom systemd[1]: Stopped Gogs.
  801. Dec 16 17:16:33 atom systemd[1]: Started Gogs.
  802. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Custom path: /home/git/bin/gogs/custom
  803. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log path: /home/git/bin/gogs/log
  804. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log Mode: File (Trace)
  805. Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [ INFO] Gogs on Yojik.net 0.11.66.0916
  806. </code></pre>
  807. <p>Le lancement de <em>gogs</em> marche parfaitement.
  808. 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>
  809. <h3 id="tests_1">Tests</h3>
  810. </div>
  811. </div>
  812. <footer>
  813. <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
  814. <a href="../18-dixhuit/" class="btn btn-neutral" title="Installation d'un webmail"><span class="icon icon-circle-arrow-left"></span> Previous</a>
  815. </div>
  816. <hr/>
  817. <div role="contentinfo">
  818. <!-- Copyright etc -->
  819. </div>
  820. Built with <a href="http://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>.
  821. </footer>
  822. </div>
  823. </div>
  824. </section>
  825. </div>
  826. <div class="rst-versions" role="note" style="cursor: pointer">
  827. <span class="rst-current-version" data-toggle="rst-current-version">
  828. <span><a href="../18-dixhuit/" style="color: #fcfcfc;">&laquo; Previous</a></span>
  829. </span>
  830. </div>
  831. </body>
  832. </html>