Logo Khaganat

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édentesRévision précédente
Prochaine révision
Révision précédente
fr:dokuwiki_farm [2018/05/29 20:57] – [Bug sur les flux des derniers changements] zatalyzfr:dokuwiki_farm [2022/07/22 11:02] (Version actuelle) – [Une seule authentification] zatalyz
Ligne 30: Ligne 30:
 Pour plus de sécurité, installez le dokuwiki-maître à une autre adresse. Cependant, il faut adapter le reste du tutoriel. J'ai souvent eu des soucis en tentant de le mettre ailleurs. Pour plus de sécurité, installez le dokuwiki-maître à une autre adresse. Cependant, il faut adapter le reste du tutoriel. J'ai souvent eu des soucis en tentant de le mettre ailleurs.
  
- --- //[[wiki:user:zatalyz| zatalyz]] 2016/01/31 21:03//+ --- //[[user:zatalyz| zatalyz]] 2016/01/31 21:03//
 </WRAP> </WRAP>
  
Ligne 154: Ligne 154:
 ==== Détail ==== ==== Détail ====
  
-=== Configurer le fermier à accueillir les animaux === +=== Paramétrage de base de preload.php === 
-Ou le maître à avoir des esclaves.+Dans le dokuwiki-maître, copiez ''./inc/preload.php.dist'' en ''./inc/preload.php''. Ce fichier ''./inc/preload.php'' va surcharger certains paramètres par défaut pour permettre à la ferme de fonctionner
  
-Dans le dokuwiki-maîtrecopiez ''./inc/preload.php.dist'' en ''./inc/preload.php'afin qu'il contienne ceci :+Avant toutles aspects concernant la ferme elle-même : 
 +<code php> 
 +// set this to share some config : DOKU_CONF_SHARED = path to farmer conf = /var/www/dokuwiki/conf/ 
 +if(!defined('DOKU_CONF_SHARED')) define('DOKU_CONF_SHARED', '/var/www/dokuwiki/conf/');
  
-<code php>// set this to your farm directory + 
-if(!defined('DOKU_FARMDIR')) define('DOKU_FARMDIR', '/var/www/farm');+// set this to your farm directory 
 +if(!defined('DOKU_FARMDIR')) define('DOKU_FARMDIR', '/var/www/farm/');
  
 // include this after DOKU_FARMDIR if you want to use farms // include this after DOKU_FARMDIR if you want to use farms
 include(fullpath(dirname(__FILE__)).'/farm.php'); include(fullpath(dirname(__FILE__)).'/farm.php');
 +</code>
  
-// you can overwrite the $config_cascade to your liking +Adaptez les chemins à votre installation. 
-//$config_cascade = array( + 
-//); +=== Permettre de surcharger les traductions === 
-$config_cascade['plainauth.users'] = array( +On peut créer des chaînes de traduction personnalisés dans Dokuwiki (voir [[dokuwiki>start?id=localization&go=%E2%86%92#changing_some_localized_texts_and_strings_in_your_installation|la doc officielle]]) mais cela ne marche dans une ferme qu'à condition d'ajouter le chemin absolu suivant vers les fichiers de langue dans ''./inc/preload.php''
-    'default'   => '/var/www/dokuwiki/conf/users.auth.php', +<code php> 
-);</code> +$config_cascade['lang'] = array( 
 +             'core'      => array(DOKU_CONF_SHARED . 'lang/'),  
 +             'plugin'    => array(DOKU_CONF_SHARED . 'plugin_lang/'),  
 +             'template'  =array(DOKU_CONF_SHARED . 'template_lang/')  
 +        ); 
 +</code> 
 + 
 + 
 +=== Une seule authentification === 
 + 
 +L'option suivante permet de partager le même fichier d'utilisateurs sur les animaux. Chaque animal peut avoir sa propre base d'utilisateurs (le fichier ''farm/animal/conf/users.auth.php''mais, si les divers wikis sont utilisés par les mêmes personnes, on peut utiliser un seul fichier, ce qui simplifie en cas de changement de mot de passe.  
 + 
 +Toujours dans ''./inc/preload.php'', ajoutez : 
 +<code php>$config_cascade['plainauth.users'] = array( 
 +    'default'   => DOKU_CONF_SHARED . 'users.auth.php', 
 +);  
 +</code> 
 + 
 +Dans ce cas, mieux vaut aussi s'identifier une seule fois pour toute la ferme. Il faut donc paramétrer le cookie différemment((Merci à IsilinBN pour l'astuce ; la [[https://simnomceu.tuxfamily.org/welcome/start?id=fr:authentication|source est ici]])).  
 + 
 +Modifiez ''dokuwiki/inc/init.php'' et cherchez la ligne  
 + 
 +<code php>define('DOKU_COOKIE', 'DW' . md5(DOKU_REL . (($conf['securecookie']) ? $serverPort : ''))); 
 +</code> 
 + 
 +Remplacez-la par 
 + 
 +<code php>define('DOKU_COOKIE', 'DW' md5(commoncookie));</code> 
 + 
 +<WRAP center round tip 100%> 
 +Pour plus de contexte : le bout de code complet une fois modifié est  
 +<code>// define cookie and session id, append server port when securecookie is configured FS#1664 
 +if (!defined('DOKU_COOKIE')) { 
 +    $serverPort = isset($_SERVER['SERVER_PORT']) ? $_SERVER['SERVER_PORT'] : ''; 
 +//    define('DOKU_COOKIE', 'DW' . md5(DOKU_REL . (($conf['securecookie']) ? $serverPort : ''))); 
 +    define('DOKU_COOKIE', 'DW' . md5(commoncookie)); 
 +    unset($serverPort); 
 +
 +</code> 
 + 
 +''DOKU_REL'' est une variable relative concernant le dossier du wiki et des animaux. On va simplement mettre à la place un chemin absolu. On supprime des bouts qui ne semblent servir à rien et nous foutent le bordel ; éviter ça si vous permettez la connexion en http (sans forcer en https). Mais pour quelle raison feriez-vous ça ? 
 +</WRAP> 
 + 
 +<WRAP center round help 100%> 
 + 
 +Je laisse ce message ici, si vous avez des soucis ; cependant dans Igor, laisser DOKU_REL à cet endroit ne semble pas poser de souci au cookie, donc vous pouvez ne pas changer ce morceau.  
 +<WRAP center round box 100%> 
 + 
 +Il faut aussi modifier cette valeur dans ''dokuwiki/inc/auth.php''. Il faut modifier deux fois la valeur dans ce fichierà chaque fois avec la même ligne : 
 +<code php>//    $cookieDir = empty($conf['cookiedir']? DOKU_REL : $conf['cookiedir']; 
 +    $cookieDir = empty($conf['cookiedir']) ? '/' : $conf['cookiedir']; 
 +</code> 
 +</WRAP> 
 + 
 + 
 +</WRAP> 
 + 
 + 
 +Ajoutez ou modifiez la valeur ''$conf['cookiedir']'' dans ''dokuwiki/conf/local.php''
 +<code php>$conf['cookiedir'] = '/';</code>
  
-La dernière option permet de partager le même fichier d'utilisateurs sur les animaux. Chaque animal peut avoir sa propre base d'utilisateurs (le fichier ''farm/animal/conf/users.auth.php''mais, si les divers wikis sont utilisés par les mêmes personnes, on peut utiliser un seul fichier, ce qui simplifie en cas de changement de mot de passe+Il faudra aussi modifier le fichier ''local.php'' des animaux mais on voit ça après
  
 === Dossier des animaux === === Dossier des animaux ===
Ligne 212: Ligne 276:
 #Vu qu'on a activé la réécriture des URLs, on doit le faire partout, sinon ça fait des sales bugs. #Vu qu'on a activé la réécriture des URLs, on doit le faire partout, sinon ça fait des sales bugs.
 $conf['userewrite'] = '1'; $conf['userewrite'] = '1';
 +# Pour utiliser le même cookie sur toute la ferme
 +$conf['cookiedir'] = '/';
 </code> </code>
  
Ligne 273: Ligne 339:
 </WRAP> </WRAP>
  
 +===== Mise à jour =====
 +Il suffit de mettre à jour le wiki principal. Attention, certaines choses peuvent casser, il convient de sauver le dossier avant la mise jour !
 +
 +Sur Khaganat, les fichiers suivants ont été modifiés et sont écrasés par la mise à jour. 
 +  * ''dokuwiki/inc''
 +    * auth.php
 +    * init.php
 +  * ''dokuwiki/inc/lang/fr''
 +    * denied.txt
 +    * edit.txt
 +    * lang.txt
 +
 +Les fichiers modifiés dans le dossier ''conf'' sont de la forme "*.local.php" : cela les préserve lors des mises à jour.
 +
 +==== Mise à jour de Hogfather vers Igor ====
 +Dokuwki ajoute le dossier ''data/log/'', nécessaire pour fonctionner. Pour l'ajouter dans tous les animaux du wiki, un script pour récupérer les commandes et automatiser la tâche :
 +  cd farm/
 +  cp -r ../dokuwiki/data/log _animal/data/log
 +  for farm in * ; do echo "sudo cp -r _animal/data/log $farm/data/log" ; echo "sudo chown -R www-data: $farm/data/log" ; done
 +
 +On nettoie, dans ce qu'on récupère, ce qui n'est pas une ferme qu'on veut mettre à jour (genre, si on a mis un index.php dans le coin), on vérifie que tout va bien puis on lance le lot de commande. 
 +
 +Le processus d'authentification a changé aussi, mais la page ici est mise à jour. Il suffit de modifier ''dokuwiki/inc/init.php'' et tout ira bien.
 +
 +Il faut aussi modifier le .htaccess et indiquer le passage suivant : 
 +<code>
 +<Files ~ "^([\._]ht|README$|VERSION$|COPYING$)">
 +    <IfModule mod_authz_core.c>
 +        Require all denied
 +    </IfModule>
 +    <IfModule !mod_authz_core.c>
 +        Order allow,deny
 +        Deny from all
 +    </IfModule>
 +</Files>
 +</code>
 +===== Nginx =====
 +<WRAP center round info 90%>
 +EN COURS DE TEST 
 +</WRAP>
 +<code bash>
 +server{
 +    listen 80;
 +    listen [::]:80;
 +    server_name khaganat.net;
 +
 +    access_log /var/log/nginx/dokuwki_access_log;
 +    error_log /var/log/nginx/dokuwiki_error_log;
 +
 +    root /var/www;
 +    index doku.php index.php index.html;
 +
 +    client_max_body_size 4M;
 +    client_body_buffer_size 128k;
 +
 +        location / {
 +                try_files $uri $uri/ @dokuwiki;
 +        }
 +
 +
 +        location /bienvenue {
 +            return 301 http://$host/farm/bienvenue/doku.php;
 +            }
 +
 +
 +        location /wikhan {
 +            return 301 http://$host/farm/wikhan/doku.php;
 +            }
 +
 +        location /rc {
 +            #return 301 http://$host/rc;
 +            alias /var/www/rc2/dev.ryzom.com/projects/ryzom/wiki;
 +            }
 +
 +        location ~ /farm {
 +            index index.php;
 +            autoindex on;
 +            rewrite ^/farm/?([^/]+)/(.*) /dokuwiki/$2?animal=$1;
 +            rewrite ^/farm/?([^/]+)$ /dokuwiki/?animal=$1;
 +
 +            }
 +
 +
 +        location @dokuwiki {
 +                rewrite ^/dokuwiki/_media/(.*) /lib/exe/fetch.php?media=$1 last;
 +                rewrite ^/dokuwiki/_detail/(.*) /lib/exe/detail.php?media=$1 last;
 +                rewrite ^/dokuwiki/_export/([^/]+)/(.*) /index.php?do=export_$1&id=$2 last;
 +                rewrite ^/dokuwiki/(?!lib/)(.*) /index.php?id=$1&$args last;
 +        }
 +
 +        location ~ \.php$ {
 +                if (!-f $request_filename) { return 404; }
 +                include fastcgi_params;
 +               fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
 +                include snippets/fastcgi-php.conf;
 +        }
 +
 +        location ~ /(data|conf|bin|inc)/ {
 +                deny all;
 +        }
 +
 +        location ~* \.(png|ico)$ {
 +                expires 90d;
 +        }
 +}
 +
 +</code>
 +
 +===== Annexes =====
 +==== preload.php dans nos installations ====
 +Voici le contenu complet de ''inc/preload.php'', modifié pour correspondre à nos usages (partage de la plupart de la config) :
 +<code php preload.php>
 +<?php
 +// set this to share some config : DOKU_CONF_SHARED = path to farmer conf = /var/www/dokuwiki/conf/
 +if(!defined('DOKU_CONF_SHARED')) define('DOKU_CONF_SHARED', '/var/www/dokuwiki/conf/');
 +
 +// set this to your farm directory
 +if(!defined('DOKU_FARMDIR')) define('DOKU_FARMDIR', '/var/www/farm');
 +
 +// include this after DOKU_FARMDIR if you want to use farms
 +include(fullpath(dirname(__FILE__)).'/farm.php');
 +
 +// you can overwrite the $config_cascade to your liking
 +//$config_cascade = array(
 +//);
 +
 +$config_cascade['plainauth.users'] = array(
 +    'default'   => DOKU_CONF_SHARED . 'users.auth.php',
 +);
 +
 +$config_cascade['lang'] = array(
 +             'core'      => array(DOKU_CONF_SHARED . 'lang/'), 
 +             'plugin'    => array(DOKU_CONF_SHARED . 'plugin_lang/'), 
 +             'template'  => array(DOKU_CONF_SHARED . 'template_lang/'
 +);
 +</code>
  
 {{tag>Tutoriel web}} {{tag>Tutoriel web}}
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/dokuwiki_farm.1527620276.txt.gz · Dernière modification : 2021/12/03 19:18 (modification externe)

Licences Mentions légales Accueil du site Contact