5828aac4f52d9daced834ef4bb11a6a775606f23
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>
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
Languages
PHP
86.6%
JavaScript
7.2%
CSS
5.1%
Shell
0.9%
Hack
0.2%