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
Prochaine révisionLes deux révisions suivantes
technique:gravmultisite [2018/02/12 22:07] – [Le fichier setup.php] francoisatechnique:gravmultisite [2018/02/13 00:19] – ancienne révision (2018/02/12 21:09) restaurée 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 []; 
-} 
-</code> 
- 
-// 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/ 
- 
-<code> 
-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 
-</code> 
- 
 ===== Côté client ===== ===== Côté client =====
  
  • technique/gravmultisite.txt
  • Dernière modification : 2024/04/02 15:08
  • de 127.0.0.1