Installation de paheko

De wiki.infini

Paheko est une Application Web de gestion d'association.

Cette documentation concerne l'installation de Paheko sur la plate-forme d'hébergement d'Infini, Alternc3, à laquelle vous accédez par https://panel.infini.fr.

Étape 1

Dans panel, créer un répertoire et un sous-domaine, par exemple: paheko.pourmonasso.infini.fr

Dans le menu a gauche, sélectionner le domaine "parent" , puis cliquer sur le bouton "Ajouter un sous-domaine"

Créer le sous-domaine pour Paheko, choisir la version de PHP (7.4, 8.2 et 8.3 fonctionnelles) et pointer (temporairement) vers le répertoire www


Étape 2

Télécharger Paheko sur votre ordinateur et transférer l'archive dans le répertoire www, directement depuis le "gestionnaire de fichiers" du Panel Infini (dans le menu à gauche)

On trouve Paheko sur cette page (format .tar.gz): https://fossil.kd2.org/paheko/doc/trunk/doc/index.md

Une fois le fichier chargé, il apparaît un bouton "Extraire" sur la droite, cliquez dessus, ce qui devrait créer un répertoire paheko-1.3.13, patienter un peu (quelques minutes), le temps que l'extraction soit effective.

Ensuite renommer ce répertoire paheko


Étape 3

Modifier le chemin vers lequel pointe le sous-domaine pour aller vers paheko.pourmonasso.infini.fr/paheko/www (le sous-dossier www, pas celui qui se situe à la racine de l’hébergement)


Étape 4

Dans le gestionnaire de fichiers, cliquer sur le fichier .htaccess qui se trouve dans paheko.pourmonasso.infini.fr/paheko/www (le sous-dossier www, pas celui qui se situe à la racine de l’hébergement) puis aller sur l'onglet "Modifier"

Dans le fichier .htaccess, repérer la ligne :

Options -Indexes -Multiviews +FollowSymlinks

Puis la mettre en commentaire :

# Options -Indexes -Multiviews +FollowSymlinks


Étape 5

Attendre 5 min environ puis aller sur le site et suivre les instructions pour finaliser l'installation


Étape 6

Demander le certificat SSL à l’équipe tech, puis ajouter au fichier paheko.pourmonasso.infini.fr/paheko/config.local.php la variable:

const WWW_URL = "https://paheko.pourmonasso.infini.fr/";

Le / à la fin est important

Plus de détails concernant le certficat SSL et le protocole HTTPS en suivant ce lien : https://wiki.infini.fr/index.php/Passer_au_HTTPS


Attention : Pour éviter la corruption de la base de données, il faut éviter d’accéder à la base en même temps qu’un autre utilisateur.

Il faut également régulièrement faire des sauvegardes du fichier situé à paheko.pourmonasso.infini.fr/paheko/data/association.sqlite (1 fois/jour si possible).

Malgré ces précautions, nous ne pouvons pas garantir l'absence totale de corruption de la base. Merci de votre vigilance.


Considérations techniques

Notre infrastructure utilise NFS, qui est un système de fichiers réseau et l'application utilise SQLite qui est un fichier unique contenant l'intégralité de la base de données.


SQLite utilise un système de verrous pour empêcher que plusieurs programmes n’écrivent simultanément dans ce fichier, afin d’éviter la corruption des données. Cependant, la gestion des verrous sur NFS est limitée, ce qui rend la compatibilité entre NFS et SQLite problématique, notamment lors d’accès concurrents.


Dans le cadre de notre utilisation de Paheko, nous avons rencontré un incident de corruption de la base de données. Ce problème est probablement survenu car plusieurs utilisateurs ont tenté d’accéder et d’écrire simultanément dans la base, provoquant des conflits d’écriture.


Ce que l'on peut donc en déduire c'est que le système de base de données qu'utilise Paheko est incompatible avec l'infrastructure d'Infini, pour que l'application fonctionne normalement, il faudrait que Paheko supporte d'autres systèmes de base de données qu'SQLite.


Après plusieurs tests effectués, nous n'avons pas réussi à reproduire la corruption de base, nous vous conseillons tout de même d'éviter d'utiliser Paheko sur notre infrastructure tant que l'application ne sera pas compatible avec un système de base de données tel que MySQL.

Cf https://fossil.kd2.org/paheko/wiki?name=Documentation+d%C3%A9veloppeur&p/#faq

Références

(en) Blog concernant la corruption de base de données SQLite

(en) FAQ SQLite