Gérer Un SPIP Mutualisé Avec SSH Et SVN
Total Page:16
File Type:pdf, Size:1020Kb
Gérer un SPIP mutualisé avec SSH et SVN Extrait du Geekographie Maïeulesque http://geekographie.maieul.net/Gerer-un-SPIP-mutualise-avec-SSH Gérer un SPIP mutualisé avec SSH et SVN - SPIP - Date de mise en ligne : dimanche 5 décembre 2010 Geekographie Maïeulesque Copyright © Geekographie Maïeulesque Page 1/9 Gérer un SPIP mutualisé avec SSH et SVN Pourquoi installer trois fois SPIP lorsqu'on a trois sites chez le même hébergeur ? Pourquoi ne pas garder un seul noyau qui servirait aux trois sites ? Voici un petit tutorial sur : utiliser ssh et svn chez un hébergeur mutualiser un site SPIP. Ce tutoriel explique comment j'ai pratiqué chez l'Autre.net pour avoir un site mutualisé. Définition SSH est un protocole qui permet d'exécuter des lignes de commandes sur un ordinateur distant, via internet, et ce de manière sécurisé. SVN est un système de gestion de versions de code sources. C'est celui utilisé par SPIP. Un SPIP mutualisé, c'est la possibilité d'avoir une seul fois le code de SPIP pour plusieurs sites chez le même hébergeur. Ce qu'on cherche à faire Avoir un SPIP mutualisé. Pouvoir facilement le mettre à jour. Interêt La mutualisation permet un gain de place et de temps lors des mises à jour de SPIP : un seul SPIP à mettre à jour. L'accès SSH évite d'avoir à passer par FTP depuis votre ordinateur, et donc de subir la lenteur des connexions sortantes proposés en ADSL. Préalable Il est nécéssaire de pouvoir faire du SSH. Sur mac / linux, il faut utiliser le terminal ou l'invite de commande. Sous Windows il faut un logiciel spécifique. Voir le tutoriel de l'Autre.net. Tout les hébergeurs ne proposent pas d'accès SSH, car cela pose des problèmes en termes de sécurité. L'Autre.net en plus d'être un Alter-Hébergeur le permet. Tant mieux ! [1] Copyright © Geekographie Maïeulesque Page 2/9 Gérer un SPIP mutualisé avec SSH et SVN Tout les hébergeurs proposant SSH ne proposent pas forcément SVN. Si c'est le cas du votre, négociez avec lui. Et si vous échouez, ce tutoriel vous sera inutile. J'ai trois site : bidule.tld truc.tld machin.tld Il est nécessaire de régler les DNS pour qu'ils pointent sur le même hébergeur, puis chez l'hébergeur, il faut que chaque domaine pointent vers le même répertoire. Voir avec l'hébergeur pour cela. J'imagine ici que mes trois domaines sont réglés pour accéder au répertoire spip_mutu. Se connecter via SSH Dans le terminal [2], taper [3] : % ssh login@adresse Le login et l'adresse ssh sont fournis par l'hébergeur. A l'invitation, taper votre mot de pass SSH. Désormais, tout ce que vous frapperez sera exécuté sur le serveur de votre hébergeur. Donc attention ! Récuperer le code de SPIP Tout d'abord, se déplacer dans le dossier spip_mutu : % cd spip_mutu Il existe sur le serveur SVN de SPIP un dossier tags qui contient des « instanés » des version de SPIP. En gros, il contient les versions distribuées sur SPIP.net. Récuperons cela par SVN. Ici la version 2.1.2 % svn co svn://trac.rezo.net/spip/tags/spip-2.1.2 . ! Attention, ne pas oublier le point final. Il permet que le contenu du dossier spip-2.1.2 soit mis directement dans le dossier courant. Le jour où SPIP passera en 2.1.3, il suffira de faire Copyright © Geekographie Maïeulesque Page 3/9 Gérer un SPIP mutualisé avec SSH et SVN % svn switch svn://trac.rezo.net/spip/tags/spip-2.1.3 qui basculera seulement les fichiers modifiés entre la 2.1.2 et la 2.1.3 Récuperer le gestionaire de mutualisation Il existe un pseudo-plugin SPIP qui permet de gérer un SPIP mutualisé. Récuperons le % svn co svn://zone.spip.org/spip-zone/_plugins_/mutualisation Il faut ensuite créer un dossier sites, dans lequel chaque site aura un dossier spécifique. Pour cela : % mkdir sites Installer les plugins La plupart des plugins SPIP sont dévellopés sur la SPIP-Zone, en SVN. Trouvez ici la liste : http://zone.spip.org/trac/spip-zone..., et les squelettes sont par là http://zone.spip.org/trac/spip-zone... Créons notre dossier plugins, puis allons y. % mkdir plugins % cd plugins Maintenant récuperons les plugins qui nous intéresse % svn co svn://zone.spip.org/spip-zone/_plugins_/dossierduplugin ou dossierduplugin est à remplacer à chaque fois par le dossier du plugin qui nous intéresse. Lorsqu'on voudra mettre à jour un plugin, on fera %svn up dossierduplugin Configurer la mutalisation Tout d'abord retournons à la racine de notre site % cd .. Puis copions le fichier mes_options.php.txt dans le dossier config de SPIP, en le renommant. % cp mutualisation/mes_options.php.txt config/mes_options.php éditons avec pico le fichier copié % pico config/mes_options.php . Copyright © Geekographie Maïeulesque Page 4/9 Gérer un SPIP mutualisé avec SSH et SVN Voici le fichier tel que livré aujourd'hui : <?php if (!defined("_ECRIRE_INC_VERSION")) return; require _DIR_RACINE.'mutualisation/mutualiser.php'; /* placer dans ce tableau les sites ou l'on ne veut pas la redirection canonique */ $www = array(); $site = str_replace('www.', '', $_SERVER['HTTP_HOST']); if ($site != $_SERVER['HTTP_HOST'] AND !in_array($site, $www)) { include_spip('inc/headers'); redirige_par_entete('http://'.$site.'/'); } define ('_INSTALL_SERVER_DB', 'mysql'); define ('_INSTALL_HOST_DB', 'localhost'); define ('_INSTALL_USER_DB', 'loginsql'); define ('_INSTALL_PASS_DB', '123456HDJ'); define ('_INSTALL_NAME_DB', 'mu_'.prefixe_mutualisation($site)); /* mettre en commentaire la ligne suivante si vous utilisez l'option table_prefixe plus bas dans la config */ define ('_INSTALL_TABLE_PREFIX', 'spip'); /* * Si le nom du serveur est different du nom dns, * ca peut parfois poser probleme * il faut alors le definir ici */ # define ('_INSTALL_HOST_DB_LOCALNAME', 'nom_serveur'); /* * Si le serveur n'est pas mysql, il faut le preciser obligatoirement. * # define ('_INSTALL_SERVER_DB', 'pg'); // mysql|pg|sqlite2|sqlite3 * * /!\ En PG, il est conseille d'utiliser la creation d'utilisateur SQL */ /* * Creer automatiquement les users SQL (pg|mysql) * * Cela permet * - d'avoir un utilisateur root possedant les droits * de creation de bases (cet utilisateur possedant obligatoirement * une base a son nom en PG - PG ne se connecte pas sans donner un nom de bdd) * - de creer des utilisateurs sql automatiquement * ne possedant que les droits d'administation * de leur base de donnee qui sera creee * Copyright © Geekographie Maïeulesque Page 5/9 Gérer un SPIP mutualisé avec SSH et SVN * Il faut remplacer alors * _INSTALL_(USER|PASS)_DB par _INSTALL_(USER|PASS)_DB_ROOT * * et ajouter dans demarrer_site l'option * 'creer_user_base' => true */ # define ('_INSTALL_USER_DB_ROOT', 'mon_root'); # define ('_INSTALL_PASS_DB_ROOT', '********'); /* * Creer les bases de donnees via un ping sur une URL (methode AlternC) * * Il suffit de renseigner l'option url_creer_base, en lui passant les bons parametres : * 'url_creer_base' => 'https://bureau.tld/admin/sql_doadd.php?username=USER&password=PASS&dbn='.prefixe_mutualisation($site) */ /* * Transformer sur les pages publiques les url des images * /sites/mon_site/IMG/* -> /IMG/* * /sites/mon_site/local/* -> /local/* * * - Necessite le mod_rewrite (reecriture d'url) d'apache * - Ne fonctionne qu'avec des mutualisations de nom de domaine * ('http_host' : http://mon_site_mutu.tld) * (donc pas avec une mutualisation de repertoire - http://site/mon_spip_mutu/) * * et ajouter dans demarrer_site l'option * 'url_img_courtes' => true * * Il est possible de regenerer les fichiers .htaccess * crees automatiquement dans /IMG et /local * grace a ?var_mode=creer_htaccess_img * */ /* * Inscrire ici le nom du site d'administration du tableau de bord * de la mutualisation (ou plusieurs, separes par des virgules) * (dans cet exemple, 'scriibe.net' est le top level domain, TLD) * pour autoriser tous les sites, ne pas definir la constante ; * Si le site maitre n'est pas dans sites/ mais a la racine, mettre '' * et ajouter 'mutualisation' dans $dossier_squelettes */ define ('_SITES_ADMIN_MUTUALISATION', 'scriibe.net'); demarrer_site($site, array( 'creer_site' => true, // Creer ou non le site s'il n'existe pas (defaut: false) 'creer_base' => true, // Creer ou non la base de donnee si elle n'existe pas (false) Copyright © Geekographie Maïeulesque Page 6/9 Gérer un SPIP mutualisé avec SSH et SVN 'creer_user_base' => false, // Creer ou non un utilisateur pour la nouvelle base de donnee (false) 'mail' => '', // Adresse mail pour recevoir un mail lors d'une creation de site mutualise ('') 'code' => 'ecureuil', // Code d'activation ('ecureuil') 'table_prefix' => false, // Definir automatiquement le prefixe de table (false) ... mettre true si tous les sites dans la meme base 'cookie_prefix' => true, // Definir automatiquement le prefixe de cookie (false) 'repertoire' => 'sites', // Nom du repertoire contenant les sites mutualises ('sites') 'url_img_courtes' => true, // Utiliser la redirection des URL d'images courtes dans la partie publique (false) // /!\ il faut qu'apache ait le droit d'ecrire dans les dossiers IMG/ et local/ a la racine du site ! // C'est la que la mutualisation va ecrire les regles de redirection automatiques pour les images de chaque site # 'utiliser_panel' => false, // Utiliser une table externe pour recuperer des identifiants ... (code, user, pass) permettant a un utilisateur d'installer le site (false) # 'annonce' => ' Un service proposé par la communauté SPIP ', // Texte a afficher en bas du formulaire d'activation de la mutualisation 'url_creer_base' => '' // Creer la base de donnees via une URL (methode AlternC) ) ); /* * Notes concernant