# 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)