Stockage des fichiers
Les plugins, la base de données, les sauvegardes et les fichiers de cache sont tous stockés dans un sous-répertoire data par défaut, afin de réunir tous les fichiers modifiés par Paheko dans le même dossier.
Normalement Paheko n'écrit dans aucun autre répertoire par défaut.
Modifier la taille des fichiers autorisés à l'envoi
Par défaut, avec Apache, Paheko autorise les envois (upload) jusqu'à 256 Mo. Mais il est possible que ce réglage ne fonctionne pas. Dans ce cas (utilisation d'un autre serveur web parexemple), si vous désirez augmenter la taille des fichiers autorisés à l'envoi dans Paheko, il faut modifier les paramètres suivants de votre fichier php.ini (exemple ici pour 100 Mo) :
upload_max_filesize = 100M
post_max_size = 100M
Stockage des documents
Par défaut les documents sont stockés dans la base de données, ainsi il suffit de sauvegarder le fichier SQLite de la base de données (association.sqlite) pour tout sauvegarder, simple et rapide !
Quel est la différence ?
| Stockage dans SQLite | Stockage dans le système de fichiers |
|---|---|
| un seul fichier à sauvegarder ou à archiver | plus complexe à sauvegarder : il faut sauvegarder la base de données d'un côté, et les fichiers de l'autre |
| un peu moins rapide | 10% plus rapide que SQLite (60% avec X-SendFile) |
| taille maximale d'un fichier de 1 Go | pas de limite |
| ralentissements des sauvegardes et mises à jour au-delà de 1 Go de documents | pas de limite |
| restaurer une sauvegarde restaure aussi les fichiers | restaurer une sauvegarde ne revient pas en arrière sur les fichiers, tout est séparé |
FileSystem) si vous souhaitez stocker des fichiers de plus de 1 Go, ou si vous commencez à dépasser 1 Go de fichiers stockés au total.
Bien que SQLite soit capable de stocker jusqu'à 140 To, d'autres facteurs entrent en jeu pour Paheko, notamment les sauvegardes et mises à jour. En effet à chaque mise à jour Paheko effectue une sauvegarde avant la mise à jour, pour pouvoir revenir en arrière en cas de souci lors de la mise à jour. Hors cette sauvegarde implique de copier le fichier de base de données. Plus ce fichier est gros, plus le temps de sauvegarde est long. Et parfois sur des serveurs mutualisés (qui sont assez lents), le temps de sauvegarde d'une base de données de 1 Go, additionné au temps de mise à jour, peut commencer à dépasser 30 secondes, qui est généralement le temps maximum d'exécution d'un script PHP.
C'est pour cela qu'il est conseillé, pour les associations qui commencent à avoir beaucoup de stockage de documents, de stocker les documents hors de la base de données, comme décrit ci-dessous.
Comment stocker les fichiers sur le système de fichiers
Si vous préférez stocker les documents dans des fichiers séparés, il faut positionner les constantes suivantes dans le fichier config.local.php :
const FILE_STORAGE_BACKEND = 'FileSystem';
const FILE_STORAGE_CONFIG = __DIR__ . '/data/files';
Ceci stockera les fichiers dans le répertoire data/files de Paheko, au lieu de la base de données.
Migration entre systèmes de stockage
Il est possible de changer de système de stockage de fichiers, en utilisant les commandes paheko storage import et paheko storage export. Voir la page Ligne de commande pour les détails.
Il est également possible de faire cette manipulation dans le menu Configuration, bouton Configuration du serveur.
Cela permettra de migrer les fichiers depuis/vers le système de fichier.
Quota de stockage des documents
Par défaut Paheko autorise les documents à prendre tout l'espace disponible sur le système de fichier.
Pour limiter cela, il faut positionner la constante FILE_STORAGE_QUOTA (en octets).
const FILE_STORAGE_QUOTA = 10*1024*1024*1024; // 10 Go
Activation de X-SendFile
Ce réglage permet d'améliorer la rapidité d'envoi des documents. En effet dans ce cas c'est le serveur web qui renvoie le fichier directement au navigateur, sans passer par PHP. C'est donc environ deux fois plus rapide.
Cela ne fonctionne qu'avec les serveurs web suivants :
- Apache avec mod_xsendfile (paquet Debian/Ubuntu
libapache2-mod-xsendfile) - Lighttpd
N'activez cette fonctionnalité que si vous êtes sûr que le module est installé et activé (sinon les fichiers ne pourront être vus ou téléchargés).
Nginx n'est PAS supporté, car X-Accel-Redirect ne peut gérer que des fichiers qui sont dans le document root du vhost, ce qui n'est pas le cas ici.
Pour activer X-SendFile mettre dans la config du virtualhost de Paheko les lignes suivantes :
XSendFile On
XSendFilePath /var/www/paheko
Adapter le chemin pour coller à votre configuration locale. Ce chemin doit être la racine de Paheko.