technique:gravmultisite

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
technique:gravmultisite [2018/02/13 00:19] – ancienne révision (2018/02/12 21:09) restaurée francoisatechnique:gravmultisite [2020/05/28 19:07] francoisa
Ligne 1: Ligne 1:
 +====== Blog en mode multi-sites ======
 +
 +FIXME 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/|https://getgrav.org/]]
 +
 +===== Côté serveur =====
 +
 +Installation d'un serveur web sur Ubuntu 16.04 avec les modules requis :
 +<code>
 +
 +apt install nginx php-fpm php-mbstring php-cli php-opcache php-xml php-zip php-gd php-curl php-apcu php-yaml
 +
 +</code>
 +
 +Récupération de l'archive de Grav depuis [[https://getgrav.org/downloads/|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 [[https://getgrav.org/downloads/skeletons|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.
 +<code>
 +
 +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
 +
 +</code>
 +
 +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 :
 +
 +<code>
 +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
 +
 +</code>
 +
 +==== Modification du Virtualhost ====
 +
 +Grav est sympa et nous propose des [[https://github.com/getgrav/grav/tree/master/webserver-configs|config pour les serveurs web]] qui nous intéressent.
 +
 +J'ai prix [[https://github.com/getgrav/grav/blob/master/webserver-configs/nginx.conf|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.
 +<code>
 +
 +ln -s /etc/nginx/sites-available/grav /etc/nginx/sites-enable/
 +
 +</code>
 +
 +J'ai modifié les valeurs suivantes du fichier de config grav :
 +
 +<code>
 +root /var/www/html/grav;
 +server_name grav;
 +
 +</code>
 +
 +Et relancé la config de nginx
 +
 +<code>
 +nginx -s reload
 +
 +</code>
 +
 +On choisit un port utilisé (ex : 7000) pour le site et on l'ouvre avec son pare-feu :
 +
 +<code>
 +ufw allow 7000
 +
 +</code>
 +
 +Pour finir, **pour tester**, on lance sur le serveur, la commande de lancement de grav :
 +<code>
 +php -S radios.cemea.org:7000 system/router.php
 +
 +</code>
 +
 +Et on se loggue sur l'adresse du serveur : [[http://radios.cemea.org:7000|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 :
 +<code>
 +
 +/etc/init.d/php7.0-fpm start
 +
 +</code>
 +
 +==== Installation du plugin admin ====
 +
 +on vérifie la version utilisée, on met à jour et on installe le plugin et on accepte les dépendances (y) :
 +
 +<code>
 +bin/gpm version -f
 +bin/gpm selfupgrade
 +bin/gpm install admin
 +
 +</code>
 +
 +On réactualise la page du site [[http://radio.cemea.org:7000|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 [[https://learn.getgrav.org/advanced/multisite-setup|multisites est ici.]]
 +
 +Deux options possibles : soit on décide d'accéder aux sites en sous-domaines (lolo.webradios.cemea.org) ou en sous-dossiers (webradio.cemea.org/lolo). Ici c'est la seconde option qui est choisie.
 +
 +Dans le dossier **grav/user**, on crée un dossier **sites**.
 +<code>
 +
 +mkdir /var/www/html/grav/user/sites
 +
 +</code>
 +
 +Pour chaque site, il faudra créer un dossier dans sites (ex: **test**), qui contiendra 4 dossiers vides : **config pages plugins themes**
 +<code>
 +cd /var/www/html/grav/user/sites
 +mkdir test && cd test
 +mkdir config pages plugins themes
 +
 +</code>
 +
 +Il suffira de dupliquer ce site pour chaque nouveau compte.
 +
 +==== Le fichier setup.php ====
 +
 +Il est nécessaire 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à :
 +
 +<code>
 +<?php
 +/**
 +* Multisite setup for sub-directories or path based
 +* URLs for subsites.
 +*
 +* DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
 +*/
 +
 +/**
 +Code corrigé par Romain :
 +Au lieu de :
 +use GravCommonFilesystemFolder;
 +// Get relative path from Grav root.
 +$path = isset($_SERVER['PATH_INFO'])
 +   ? $_SERVER['PATH_INFO']
 +   : Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR);
 +*/
 +/** Remplacer par */
 +use Grav\Common\Filesystem\Folder;
 +
 +// Get relative path from Grav root.
 +// $path = isset($_SERVER['PATH_INFO'])
 +//    ? $_SERVER['PATH_INFO']
 +//    : Folder::getRelativePath($_SERVER['REQUEST_URI'], dirname($_SERVER['SCRIPT_NAME']));
 +
 +// FIX: nginx bug Romain ?
 +$path = $_SERVER['REQUEST_URI'];
 +
 +// Extract name of subsite from path
 +$name = Folder::shift($path);
 +$folder = "sites/{$name}";
 +$prefix = "/{$name}";
 +
 +if (!$name || !is_dir(ROOT_DIR . "user/{$folder}")) {
 +    return [];
 +}
 +
 +//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}"],
 +]
 +]
 +]
 +]
 +];
 +
 +</code>
 +
 +Commandes utiles dans grav/
 +<code>
 +
 +bin/gpm list # liste les commandes
 +bin/gpm update # met à jour le site
 +bin/gpm selfupgrade -f #m<font inherit/inherit;;inherit;;inherit></font>ise à 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
 +
 +</code>
 +
 +<code>
 +bin/plugin login newuser -u joeuser -e joeuser@grav.org -P b -N "Joe User" -t "Site Administrator" -p PASSWORD
 +
 +</code>
 +
 +=== Mise à jour sur serveur de Prod ===
 +
 +<code>
 +cd /var/www/radios/ && sudo -u radios bin/grav backup
 +sudo -u radios /var/www/radios/bin/gpm selfupgrade # pour MAJ Grav
 +sudo -u radios /var/www/radios/bin/gpm update # pour MAJ Plugins Grav
 +
 +</code>
 +
 +=====   =====
 +
 ===== Côté client ===== ===== Côté client =====
  
Ligne 4: Ligne 235:
  
 A suivre… A suivre…
 +
  
  • technique/gravmultisite.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1