cedricAbonnel 5828aac4f5 docs: ajouter README avec guide d'installation
Couvre prérequis, installation pas-à-pas (clone, .env, BDD, migrations,
vhost Apache/Nginx, permissions), paramètres du site, mise à jour et
structure du projet. Fixes #55.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 09:58:05 +02:00

Folio

Moteur de blog PHP minimaliste — articles Markdown, authentification SSO (OIDC) ou lien magique, commentaires, recherche, flux RSS.


Prérequis

  • PHP ≥ 8.2 avec les extensions pdo, pdo_pgsql, mbstring, openssl
  • PostgreSQL ≥ 14
  • Composer
  • Apache avec mod_rewrite (ou Nginx — voir ci-dessous)

Installation

1. Cloner et installer les dépendances

git clone https://git.abonnel.fr/cedricAbonnel/folio mon-site
cd mon-site
composer install --no-dev

2. Configurer l'environnement

cp .env.example .env

Remplir les valeurs dans .env :

Variable Description
APP_URL URL publique du site (https://example.com)
ADMIN_EMAIL Email de l'administrateur principal
SESSION_NAME Nom du cookie de session — doit être unique par instance
OIDC_ISSUER / OIDC_CLIENT_ID / OIDC_CLIENT_SECRET SSO OpenID Connect
DB_DSN / DB_USER / DB_PASS Connexion PostgreSQL
SMTP_* Serveur email sortant (commentaires, contact, lien magique)
CONTACT_EMAIL Destinataire du formulaire de contact

3. Créer la base de données

createdb monsite

4. Initialiser le schéma et jouer les migrations

php database/migrate.php

Ce script crée toutes les tables et applique les migrations dans l'ordre. À relancer après chaque mise à jour.

5. Configurer le vhost Apache

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/mon-site/public

    <Directory /var/www/mon-site/public>
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Le fichier public/.htaccess gère le routage via mod_rewrite. AllowOverride All est requis.

Nginx
server {
    listen 443 ssl;
    server_name example.com;
    root /var/www/mon-site/public;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

6. Permissions fichiers

chown -R www-data:www-data data/
chmod 640 .env

PHP-FPM tourne en www-data. Le .env doit être lisible par www-data mais pas par les autres (640, owner user:www-data).

7. Paramètres du site

Au premier lancement, se connecter en tant qu'admin et aller dans Administration → Paramètres du site pour définir le titre, le claim, la langue et la licence.

Ou créer directement data/site_settings.json :

{
    "site_title": "Mon site",
    "site_claim": "Un blog propulsé par Folio",
    "site_lang": "fr-FR",
    "site_license_label": "CC BY 4.0",
    "site_license_url": "https://creativecommons.org/licenses/by/4.0/",
    "posts_per_page": 12
}

Mise à jour

git pull
composer install --no-dev
php database/migrate.php

Structure du projet

├── config/         Configuration (charge .env, définit APP_URL)
├── data/           Articles, cache, settings (non versionné)
├── database/       Schéma SQL et runner de migrations
├── docs/           Documentation technique
├── public/         Racine web (index.php, assets, .htaccess)
├── src/            Code applicatif (PSR-4, App\)
└── templates/      Vues PHP

Licence

MIT

S
Description
Folio — moteur de blog PHP
Readme MIT 2.5 MiB
Languages
PHP 86.6%
JavaScript 7.2%
CSS 5.1%
Shell 0.9%
Hack 0.2%