<?php $page_title = "edbrz9 - Créer et maintenir à jour un site avec git"; ?> <?php include($_SERVER['DOCUMENT_ROOT']."/assets/php/header.php"); ?> <nav> <section id="left-nav"> <a href="/"> <span class="byl-icon-home"></span> </a> <a href="/ressources"> <span>/ressources</span> </a> </section> <section id="right-nav"> <a href="" class="islang">FR</a> / <a href="EN/">ENG</a> </section> </nav> <main> <article> <h1>Créer et maintenir à jour un site avec git</h1> <p>Dans ce billet, je vais présenter une manière de gérer un site web statique via un dépôt git. Je ferais certaines références à <a href="https://yunohost.org/#/" target="_blank"></a> mais cette approche peut se décliner sur n'importe quel serveur.</p> <h2>La racine</h2> <p>Si vous avez déjà votre propre serveur (sous nginx, apache, lighttpd...) vous pouvez passer cette étape.</p> <p>Sur Yunohost, si on ne veut pas mettre les mains dans les configs nginx, il va falloir installer un "bac à sable", une application vide qui sera la racine de notre site.</p> <p>Lors de ma première installation de Yunohost, cette appli était disponible depuis l'interface mais il faut maintenant copier-coller ce lien dans le formulaire "Install custom app" en bas de la page d'installation.</p> <a href="https://github.com/YunoHost-Apps/multi_webapp_ynh" target="_blank">https://github.com/YunoHost-Apps/multi_webapp_ynh</a> <h2>Gitea</h2> <p>Si ce n'est pas déjà fait, on va commencer par installer un serveur Gitea (disponible sur YunoHost).</p> <p>Pour pouvoir créer des hooks côté serveur, il va d'abord falloir rajouter une ligne au fichier /opt/gitea/custom/conf/app.ini :</p> <pre><code>[security] DISABLE_GIT_HOOKS = false </code></pre> <p><a href="https://docs.gitea.io/en-us/config-cheat-sheet/">(liste complète des options)</a></p> <p>Penser ensuite à redémarrer gitea</p> <pre><code>$ yunohost service restart gitea</code></pre> <p>Vous pourrez maintenant créer un post-receive hook sur votre dépot. (sur le dépot: Settings -> Git Hooks)</p> <pre><code>#!/bin/sh TARGET=/var/www/webapp_user/domain.tld_/ git --work-tree=$TARGET clean -fd git --work-tree=$TARGET checkout --force</code></pre> <p>Enfin, n'oubliez pas de donner l'accès à gitea sur le serveur:</p> <pre><code>$ chown gitea:gitea /var/www/webapp_user/domain.tld_/</code></pre> <p>Dès que vous ferez un git push depuis votre client vers le dépot, git se chargera de mettre à jour à votre site.</p> <h2>Problème de taille</h2> <p>Si vous avez besoin de gros fichiers pour votre site (audio/vidéo) ou si vous rajoutez beaucoup de fichiers d'un coup, vous risquez d'être bloqué par la limite d'envoi.</p> <p>Vous pouvez contourner ce problème en augmentant la limite de git sur votre machine avec la commande:</p> <pre><code>$ git config --global http.postBuffer 400000000</code></pre> <p>Ce qui vous donnera une taille maximale de 50 Mo par push (1 Mo par défaut)</p> <p><a href="https://git-scm.com/docs/git-config#Documentation/git-config.txt-httppostBuffer">(documentation)</a></p> <p>Si vous voyez l'erreur suivante:</p> <pre><code>error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413</code></pre> <p>Vous pouvez remonter la limite en éditant le fichier /etc/nginx/conf.d/git.domain.tld.d/gitea.conf (sur le serveur)</p> <pre><code>client_max_body_size 50M;</code></pre> <p>Puis redémarrer nginx:</p> <pre><code>$ yunohost service restart nginx</code></pre> <p><a href="http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size">(documentation)</a></p> <h2>Autoindex / serveur de fichier basique</h2> <p>Si vous voulez pouvoir vous consulter l'arborescence de votre serveur depuis n'importe quel navigateur, vous pouvez activer l'autoindex en modifiant le fichier /etc/nginx/conf.d/domain.tld.d/webapp_domain.tld_.conf</p> <pre><code>location / { autoindex on; alias /path/to/root/ ; }</code></pre> <p>Attention cependant, tout le monde pourra voir ce que vous avez sur votre serveur.</p> <p>Le seul cas qui me vienne à l'esprit dans lequel cette visibilité pourrait poser problème est si vous avez des mots de passe écrit "en dur" dans un fichier mais c'est une très mauvaise pratique à éviter dans tous les cas.</p> <p>Sur un domaine j'utilise l'autoindex pour facilement retrouver des fichiers de police (.woff, .ttf) ou quelques librairies javascript.</p> </article> <section class="comments"> <!-- <iframe src="" class="mastodon-embed" style="max-width: 100%; border: 0" width="400" allowfullscreen="allowfullscreen"></iframe><script src="https://mamot.fr/embed.js" async="async"></script> --> </section> </main> <?php include($_SERVER['DOCUMENT_ROOT']."/assets/php/footer.php"); ?>