Frappe Framework
Sites
Frappe est une plateforme multi-tenant : chaque tenant est un site avec sa propre base de données. Cette page décrit le dossier sites, la création d’un site, sa structure, son fichier site_config.json et la façon dont Frappe choisit le site à servir.
Un site, un tenant
Frappe est une plateforme multi-tenant (multitenant) : chaque tenant s’appelle un site. Un site possède sa propre base de données. Les sites se trouvent dans un dossier nommé sites, considéré comme le dossier de travail courant quand vous lancez une commande bench.
Le dossier sites
Le dossier frappe-bench/sites héberge tous les sites du bench. Il contient aussi d’autres fichiers et dossiers, décrits ci-dessous.
apps.txt
Ce fichier liste les apps Frappe. Une app doit y figurer avant de pouvoir être installée sur un site. Elle y est ajoutée automatiquement par les commandes bench get-app et bench new-app.
common_site_config.json
Ce fichier reçoit la configuration commune à tous les sites. En savoir plus sur la configuration du site.
assets
Le dossier assets contient les fichiers à servir au navigateur du client : en général des fichiers *.js, *.css et des images. Il est généré automatiquement par la commande bench build. En production, c’est Nginx qui sert ce dossier.
Créer un nouveau site
Pour créer un site, lancez la commande suivante depuis le dossier frappe-bench :
$ bench new-site mysite.localhost
Installing frappe...
Updating DocTypes for frappe : [========================================]
Updating country info : [========================================]
*** Scheduler is disabled ***Le dossier du site, mysite.localhost, est alors créé dans le dossier sites.
Structure du dossier d’un site
sites/mysite.localhost
├── locks
├── private
│ ├── backups
│ └── files
├── public
│ └── files
├── site_config.json
└── task-logslocks
Ce dossier est utilisé par le planificateur (scheduler) pour synchroniser les différentes tâches grâce au verrouillage de fichiers.
private
Ce dossier contient les fichiers dont l’accès exige une authentification : fichiers privés et sauvegardes. Ils sont accessibles via une URL de la forme /private/files/private-file.png.
public
Ce dossier contient les fichiers accessibles publiquement, via une URL de la forme /files/public-file.png.
site_config.json
Ce fichier contient la configuration propre au site.
Le fichier site_config.json
Chaque dossier de site contient un fichier site_config.json qui stocke la configuration spécifique au site. Ses valeurs sont disponibles dans la variable locale frappe.conf, sous forme de dictionnaire.
Exemple de site_config.json :
{
"db_name": "test_frappe",
"db_password": "test_frappe",
"admin_password": "admin",
}Pour en savoir plus sur la gestion des configurations au niveau du site ou du bench, consultez la page Configuration (site_config.json).
Résolution du site
Quand Frappe répond à une requête HTTP, il choisit automatiquement le site selon l’un des critères suivants :
- l’en-tête
Hostde la requête HTTP correspond à un site ; - l’en-tête
X-Frappe-Site-Namede la requête HTTP correspond à un site.
Vous pouvez aussi forcer le serveur de développement à servir un site précis en le lançant avec la commande :
bench --site mysite.localhost serveDéfinir un site comme site courant
Pour qu’un site soit utilisé par défaut, lancez :
bench use mysite.localhostAprès cette commande, les commandes propres à un site peuvent être lancées sans le paramètre --site.
Par exemple, au lieu de :
bench --site mysite.localhost migratevous pouvez simplement lancer :
bench migrate