From 5828aac4f52d9daced834ef4bb11a6a775606f23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9drix?= Date: Thu, 14 May 2026 09:49:40 +0200 Subject: [PATCH] docs: ajouter README avec guide d'installation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- README.md | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..31d1ab9 --- /dev/null +++ b/README.md @@ -0,0 +1,146 @@ +# 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 + +```bash +git clone https://git.abonnel.fr/cedricAbonnel/folio mon-site +cd mon-site +composer install --no-dev +``` + +### 2. Configurer l'environnement + +```bash +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 + +```bash +createdb monsite +``` + +### 4. Initialiser le schéma et jouer les migrations + +```bash +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 + +```apache + + ServerName example.com + DocumentRoot /var/www/mon-site/public + + + AllowOverride All + Require all granted + + +``` + +Le fichier `public/.htaccess` gère le routage via `mod_rewrite`. `AllowOverride All` est requis. + +
+Nginx + +```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 + +```bash +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` : + +```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 + +```bash +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](LICENSE)