Artifact ID: | 885e5c8103987f56562110a3634c40ffdbf83a02b897268c0226b2a3e06e0e09 |
---|---|
Page Name: | Multi-sites |
Date: | 2021-05-01 17:28:17 |
Original User: | bohwaz |
Mimetype: | text/x-markdown |
Parent: | 57a4e5a4068688210d2d57b23b8a013d7b03012c (diff) |
Next | 86fb502361d9ddbe22cea832c08dd7b2aa9e894c2e569d86ca5f774a16657558 |
Installation multi-sites (ferme ou usine à Garradins)
Il est possible assez facilement de personnaliser l'installation de Garradin pour héberger plusieurs associations avec le même code, permettant de n'avoir qu'une seule copie du code à mettre à jour. C'est comme ça que fonctionne le service garradin.eu, ainsi que les instances chez AnimaFac par exemple.
Pour mettre en place ce fonctionnement il faut jouer avec la constante DATA_ROOT
dans le fichier config.local.php
.
Exemple
Faire pointer les sous-domaines des associations vers un répertoire où a été placé le code de Garradin (sans procéder à l'installation). Dans le répertoire créer un fichier config.local.php
contenant :
<?php
namespace Garradin;
if (!preg_match('/^([a-z]+)\.monsite\.tld$/', $_SERVER['SERVER_NAME'], $match)) {
die('Accès invalide');
}
$user = $match[1];
$user_data_dir = __DIR__ . '/users/' . $user;
if (!is_dir($user_data_dir)) {
mkdir($user_data_dir, 0700, true);
}
// Définir le dossier où sont stockés les données
const DATA_ROOT = $user_data_dir;
// Désactiver le log des erreurs PHP visible dans l'interface (sécurité)
const ENABLE_TECH_DETAILS = false;
// Ne pas afficher les erreurs de code PHP
const SHOW_ERRORS = false;
// Envoyer les erreurs PHP par mail à cette adresse
const MAIL_ERRORS = 'administrateur@monsite.tld';
// Indiquer que l'on va utiliser cron pour lancer les tâches à exécuter (envoi de rappels de cotisation)
const USE_CRON = true;
Ainsi chaque instance stockera ses données dans le répertoire garradin/users/identifiant
.
Il faut ensuite créer un cron qui lance scripts/cron.php
de chaque association au moins une fois par jour.
Pour gérer les mises à jour il existe un script en ligne de commande scripts/upgrade.php
.
Si vous avez besoin de plus d'aide pour mettre en place un tel service vous pouvez contacter les développeurs.