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
technique:gravmultisite [2017/11/26 11:43] – [Côté serveur] francoisatechnique:gravmultisite [2020/05/28 19:07] (Version actuelle) francoisa
Ligne 9: Ligne 9:
 ===== Côté serveur ===== ===== Côté serveur =====
  
-Installation d'un serveur web sur Ubuntu 16.04 avec les modules recquis : +Installation d'un serveur web sur Ubuntu 16.04 avec les modules requis :
 <code> <code>
 +
 apt install nginx php-fpm php-mbstring php-cli php-opcache php-xml php-zip php-gd php-curl php-apcu php-yaml apt install nginx php-fpm php-mbstring php-cli php-opcache php-xml php-zip php-gd php-curl php-apcu php-yaml
 +
 </code> </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. +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. 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 : 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 :
Ligne 29: Ligne 37:
 find . -type d | xargs chmod +s find . -type d | xargs chmod +s
 umask 0002 umask 0002
 +
 </code> </code>
  
Ligne 38: Ligne 47:
  
 Ici, j'ai copié/collé le fichier dans /etc/nginx/sites-available/grav avec le lien qui va bien depuis /etc/nginx/sites-enable. 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> <code>
 +
 ln -s /etc/nginx/sites-available/grav /etc/nginx/sites-enable/ ln -s /etc/nginx/sites-available/grav /etc/nginx/sites-enable/
 +
 </code> </code>
  
Ligne 48: Ligne 58:
 root /var/www/html/grav; root /var/www/html/grav;
 server_name grav; server_name grav;
 +
 </code> </code>
  
Ligne 54: Ligne 65:
 <code> <code>
 nginx -s reload nginx -s reload
 +
 </code> </code>
  
Ligne 60: Ligne 72:
 <code> <code>
 ufw allow 7000 ufw allow 7000
 +
 </code> </code>
  
-Pour finir, pour tester, on lance sur le serveur, la commande de lancement de grav : +Pour finir, **pour tester**, on lance sur le serveur, la commande de lancement de grav :
 <code> <code>
 php -S radios.cemea.org:7000 system/router.php php -S radios.cemea.org:7000 system/router.php
 +
 </code> </code>
  
Ligne 71: Ligne 84:
  
 Et ça marche ! On a là un beau site statique qu'on peut modifier à la main depuis le serveur. 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 ==== ==== 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) :+on vérifie la version utilisée, on met à jour et on installe le plugin et on accepte les dépendances (y) :
  
 <code> <code>
Ligne 80: Ligne 100:
 bin/gpm selfupgrade bin/gpm selfupgrade
 bin/gpm install admin bin/gpm install admin
 +
 </code> </code>
  
Ligne 86: Ligne 107:
 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. 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 à…+Par contre, il faut maintenant s'attaquer à …
  
 ==== La configuration multi-sites ==== ==== La configuration multi-sites ====
Ligne 92: Ligne 113:
 La doc détaillée [[https://learn.getgrav.org/advanced/multisite-setup|multisites est ici.]] 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 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.+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**. Dans le dossier **grav/user**, on crée un dossier **sites**.
 <code> <code>
 +
 mkdir /var/www/html/grav/user/sites mkdir /var/www/html/grav/user/sites
 +
 </code> </code>
  
Ligne 104: Ligne 127:
 mkdir test && cd test mkdir test && cd test
 mkdir config pages plugins themes mkdir config pages plugins themes
 +
 </code> </code>
  
 Il suffira de dupliquer ce site pour chaque nouveau compte. Il suffira de dupliquer ce site pour chaque nouveau compte.
  
-Le fichier setup.php+==== 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).+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à : Pour les sous-dossiers, il contient ce code-là :
Ligne 117: Ligne 141:
 <?php <?php
 /** /**
- * Multisite setup for sub-directories or path based +* Multisite setup for sub-directories or path based 
- * URLs for subsites. +* URLs for subsites. 
- * +
- * DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING! +* DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING! 
- */+*/
  
 +/**
 +Code corrigé par Romain :
 +Au lieu de :
 use GravCommonFilesystemFolder; use GravCommonFilesystemFolder;
- 
 // Get relative path from Grav root. // Get relative path from Grav root.
 $path = isset($_SERVER['PATH_INFO']) $path = isset($_SERVER['PATH_INFO'])
    ? $_SERVER['PATH_INFO']    ? $_SERVER['PATH_INFO']
    : Folder::getRelativePath($_SERVER['REQUEST_URI'], ROOT_DIR);    : 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 // Extract name of subsite from path
Ligne 139: Ligne 176:
 } }
  
-// Prefix all pages with the name of the subsite +//Extract name of subsite from path\ $name = Folder::shift($path); $folder = "sites/{$name}"; $prefix = "/{$name}"; if (!$name || !is_dir(ROOT_DIR . "user/{$folder}")) { 
-$container['pages']->base($prefix);+return []; 
 +} //  Prefix all pages with the name of the subsite 
 +$container['pages']base($prefix);
  
 return [ return [
-    'environment' => $name, +'environment' ⇒ $name, 
-    'streams' => +'streams' ⇒ 
-        'schemes' => +'schemes' ⇒ 
-            'user' => +'user' ⇒ 
-               'type' => 'ReadOnlyStream', +'type' ⇒ 'ReadOnlyStream', 
-               'prefixes' => +'prefixes' ⇒ 
-                   '' => ["user/{$folder}"], +'' ⇒ ["user/{$folder}"], 
-               +
-            +
-        +
-    ]+]
 ]; ];
 +
 </code> </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 162: Ligne 235:
  
 A suivre… A suivre…
 +
  
  • technique/gravmultisite.1511693005.txt.gz
  • Dernière modification : 2020/04/11 02:26
  • (modification externe)