--- tags: - webmaster title: HUGO, le générateur de sites statiques description: Hugo est un générateur de sites statiques (SSG) à partir de fichiers Markdown. Des modèles ou templates peuvent être définis. page_type: - article theme: "[[Logiciels et Outils]]" auteur: "[[Cédrix]]" date_create: 2026-02-20 article_etat: - brouillon --- Hugo est un **générateur de sites statiques (SSG)** propulsé par le langage **Go**. Là où un CMS traditionnel comme WordPress génère chaque page à la volée via une base de données, Hugo adopte une approche radicale : il pré-compile l’intégralité de votre site. Le résultat ? Une performance brute traduite par des fichiers HTML, CSS et JS légers, prêts à être déployés partout. Reconnu comme le SSG le plus rapide au monde, il traite des milliers de pages en une fraction de seconde. En éliminant le PHP et les bases de données, il neutralise les failles de sécurité classiques. Côté rédaction, tout se passe en **Markdown** : vous écrivez, Hugo s'occupe du reste, sans dépendances logicielles complexes. ## 1. Installer Hugo sur Debian Bien que Hugo soit disponible dans les dépôts officiels de Debian (`sudo apt install hugo`), la version y est souvent ancienne. Pour bénéficier des dernières fonctionnalités (et du support de thèmes récents), il est préférable d'utiliser le binaire officiel. 1. Allez sur la page [Releases de Hugo](https://github.com/gohugoio/hugo/releases). 2. Téléchargez le pack `.deb` correspondant à votre architecture (généralement `hugo_extended_X.X.X_linux-amd64.deb`). 3. Installez-le avec `dpkg` : ```bash sudo dpkg -i hugo_extended_*.deb ``` 4. Vérifiez l'installation : `hugo version`. --- ## 2. Générer votre site Placez-vous dans votre dossier de travail et créez votre projet : ```bash hugo new site mon-super-site cd mon-super-site # Ajoutez un thème (exemple avec Ananke) git init git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git themes/ananke echo "theme = 'ananke'" >> hugo.toml ``` Une fois que votre contenu est prêt (dans le dossier `content/`), générez le site final : ```bash hugo ``` Cela crée un dossier **`public/`** à la racine de votre projet. C'est **ce dossier seul** qu'Apache doit servir. --- ## 3. Configurer Apache Apache va simplement servir les fichiers statiques générés par Hugo. ### Déplacer les fichiers Le plus propre est de copier le contenu de votre dossier `public/` vers le répertoire web standard : ```bash sudo cp -r public/* /var/www/mon-site/ sudo chown -R www-data:www-data /var/www/mon-site/ ``` ### Créer le VirtualHost Créez un fichier de configuration pour votre site : `sudo nano /etc/apache2/sites-available/mon-site.conf` Collez-y cette configuration minimale : Apache ``` ServerName www.votre-domaine.com DocumentRoot /var/www/mon-site Options Indexes FollowSymLinks AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined ``` ### Activer le site Bash ``` sudo a2ensite mon-site.conf sudo systemctl reload apache2 ``` --- ## Le flux de travail idéal (Workflow) Pour que ce soit efficace, vous ne devriez pas travailler directement dans `/var/www/`. Voici comment font les pros : 1. **Local :** Vous rédigez vos articles sur votre PC et testez avec `hugo server`. 2. **Génération :** Une fois prêt, vous lancez la commande `hugo`. 3. **Déploiement :** Vous envoyez le dossier `public/` vers votre serveur Debian (via `rsync`, `scp` ou un simple `git pull`). --- **Un petit conseil :** Comme votre site est statique, n'oubliez pas d'activer le module **`mod_expires`** d'Apache. Cela permettra aux navigateurs de vos visiteurs de mettre en cache les images et le CSS, rendant votre site encore plus instantané.