---
title: HUGO - 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.
tags: [webmaster]
type:
  - article
category:
  - "[[Logiciels et Outils]]"
status: brouillon
lastmod: 2026-02-21 12:19
date: 2026-02-19 12:49
---
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

```
<VirtualHost *:80>
    ServerName www.votre-domaine.com
    DocumentRoot /var/www/mon-site

    <Directory /var/www/mon-site>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
```

### 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é.
