ed.brz9.dev/ressources/git-static-site/index.php

125 lines
4.7 KiB
PHP

<?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"); ?>