Ceci est une ancienne révision du document !
Blog en mode multi-sites
Documentation en cours de rédaction, en cours de tests
L'intérêt d'utiliser le mode multi-sites est qu'il permet de proposer à plusieurs webmasters différents, des sites qui reposent sur la même base, sans avoir à maintenir plusieurs fois le même code. Le moteur du site est commun, seules les données et la personnalisation du site change.
Test avec le CMS Grav : https://getgrav.org/
Côté serveur
Installation d'un serveur web sur Ubuntu 16.04 avec les modules recquis :
apt install nginx php-fpm php-mbstring php-cli php-opcache php-xml php-zip php-gd php-curl php-apcu php-yaml
Récupération de l'archive de Grav depuis le site, soit en mode brut avec 2 possibilités : Grav (un seul site statique modifiable à la main) ou Grav-admin (avec plugin de gestion de contenu), soit avec un squelette intégré avec le code de grav dedans.
On récupére ce qu'on veut sur le serveur et on l'extrait dans le dossier /var/www/html/grav par exemple.
wget https://getgrav.org/download/core/grav-admin/latest mv latest grav admin-v1.2.3.zip unzip grav-admin-v1.3.8.zip mv grav-admin grav
Il faut s'assurer que les droits sur le dossier grav et ses fichiers sont corrects (644 pour les fichiers, 775 pour les dossiers avec le groupe www-data). Ici avec nginx :
cd /var/www/html/grav chgrp -R www-data . find . -type f | xargs chmod 664 find ./bin -type f | xargs chmod 775 find . -type d | xargs chmod 775 find . -type d | xargs chmod +s umask 0002
Modification du Virtualhost
Grav est sympa et nous propose des config pour les serveurs web qui nous intéressent.
J'ai prix celui-ci pour nginx et renomme en “grav”.
Ici, j'ai copié/collé le fichier dans /etc/nginx/sites-available/grav avec le lien qui va bien depuis /etc/nginx/sites-enable.
ln -s /etc/nginx/sites-available/grav /etc/nginx/sites-enable/
J'ai modifié les valeurs suivantes du fichier de config grav :
root /var/www/html/grav; server_name grav;
Et relancé la config de nginx
nginx -s reload
On choisit un port utilisé (ex : 7000) pour le site et on l'ouvre avec son pare-feu :
ufw allow 7000
Pour finir, pour tester, on lance sur le serveur, la commande de lancement de grav :
php -S radios.cemea.org:7000 system/router.php
Et on se loggue sur l'adresse du serveur : http://radios.cemea.org:7000
Et ça marche ! On a là un beau site statique qu'on peut modifier à la main depuis le serveur.
Pour rendre l'installation fonctionnelle défintivement, on tue le processus précédent avec Ctrl C et on lance le php officiellement :
/etc/init.d/php7.0-fpm start
Installation du plugin admin
on vérifie la version utilisée, on met à jour eton install le plugin et on accepte les dépendances (y) :
bin/gpm version -f bin/gpm selfupgrade bin/gpm install admin
On réactualise la page du site http://radio.cemea.org:7000 et on tombe sur une page de création de compte admin.
On crée le compte admin et hop, on se retrouve sur l'interface d'admin où on peut faire joujou avec le contenu du site.
Par contre, il faut maintenant s'attaquer à…
Installation du plugin admin
on vérifie la version utilisée, on met à jour eton install le plugin et on accepte les dépendances (y) :
bin/gpm version -f bin/gpm selfupgrade bin/gpm install admin
On réactualise la page du site http://radio.cemea.org:7000 et on tombe sur une page de création de compte admin.
On crée le compte admin et hop, on se retrouve sur l'interface d'admin où on peut faire joujou avec le contenu du site.
Par contre, il faut maintenant s'attaquer à…
La configuration multi-sites
La doc détaillée multisites est ici.
Deux options possibles : soit on décide d'accéder aux site en sous-domains (lolo.webradios.cemea.org) ou en sous-dossiers (webrdio.cemea.org/lolo). Ici c'est la seconde option qui est choisie.
Dans le dossier grav/user, on crée un dossier sites.
mkdir /var/www/html/grav/user/sites
Pour chaque site, il faudra créer un dossier dans sites (ex: test), qui contiendra 4 dossiers vides : config pages plugins themes
cd /var/www/html/grav/user/sites mkdir test && cd test mkdir config pages plugins themes
Il suffira de dupliquer ce site pour chaque nouveau compte.
Le fichier setup.php
Il est nécessair de créer un fichier setup.php qui se trouvera dans le dossier grav et qui sera appelé pour chaque site. Il dépend de la configuration du multi-sites (sous-domaines ou sous-dossiers).
Pour les sous-dossiers, il contient ce code-là :
<?php /** * Multisite setup for sub-directories or path based * URLs for subsites. * * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING! */ use GravCommonFilesystemFolder; // Get relative path from Grav root. $path = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR); // Extract name of subsite from path $name = Folder::shift($path); $folder = "sites/{$name}"; $prefix = "/{$name}"; if (!$name || !is_dir(ROOT_DIR . "user/{$folder}")) { return []; } // Prefix all pages with the name of the subsite $container['pages']->base($prefix); return [ 'environment' => $name, 'streams' => [ 'schemes' => [ 'user' => [ 'type' => 'ReadOnlyStream', 'prefixes' => [ '' => ["user/{$folder}"], ] ] ] ] ];
Commandes utiles dans grav/
bin/gpm list # liste les commandes bin/gpm update # met à jour le site bin/gpm selfupgrade -f #mise à jour auto bin/gpm install nomduplugin # instalaltion d'un plugin bin/gpm install admin #installation du plugin admin bin/grav list #list les commandes bin/grav new-project dossier/nomprojet bin/grav backup #a faire dans un projet bin/grav clear-cache #vide le cache bin/grav install # met à jour les dépendances bin/plugin admin help #aide sur un plugin
Côté client
Sur l'interface d'admin…
A suivre…