SPIP

De ClissXXI.

SPIP permet de gérer un site de publication avec un modèle administrateur/rédacteur (validation a priori), un système de cache, de forums, de squelettes avec un language de requêtes sur les documents...

Sommaire

Mise à jour

Màj simple de SPIP: envoyer spip_loader.php3 sur le site, s'authentifier, aller sur http://site/spip_loader.php3, suivre les instructions. Corriger les squelettes si introduction d'une incompatibilité.

Mettre à jour la base

  • Allez dans l'interface administrateur
  • Cliquez sur le lien de mise à jour
  • Créez le dossier de confirmation dans ecrire/data
  • -> ce devrait être automatisé!! (ticket). Voir éventuellement [1]

Copier uniquement les fichiers spécifiques (non-SPIP)

\cp -a ../www/IMG .
rm -rf IMG/icones_barre/ IMG/icones/*-dist.* IMG/cache-*x*
rmdir IMG/icones/
\cp ../www/mes_fonctions.php3 mes_fonctions.php
\cp ../www/dossier_squelettes .

Mise à jour partielle des squelettes entre 1.8 et 1.9

cd dossier_squelettes
rm -f *.php3
sed -i -e 's/<INCLU[RD]E(\([^.]\+\)\.[^)]\+)\([^>]*\)>/<INCLURE{fond=\1}\2>/g' *.html
sed -i -e 's:#DOSSIER_SQUELETTE/\([a-zA-Z0-9_/.-]\+\):#CHEMIN{\1}:g' *.html


Utiliser SVN

But:

  • installation rapide:
svn co svn://trac.rezo.net/spip/branches/spip-2.0
chgrp -R www-data CACHE/ IMG/ ecrire/data/
chmod -R g+w CACHE/ IMG/ ecrire/data/
  • voir quels fichiers ont été modifiés/ajoutés dans une installation de SPIP
svn status
  • se mettre à jour les bugfixes rapidement:
svn update
  • pour mettre à jour vers la version d'après en supprimant les fichiers inutiles:
svn switch svn://trac.rezo.net/spip/branches/spip-2.1

Test Install

# sauvegarde de la base
mysqldump --opt base_spip > ~/spip-date.sql
# optionnel: utilisation de la base dans l'installation de test
mysql base_spip_test < ~/spip-date.sql 
# changement du nom du site
mysql base_spip_test -e "update spip_meta set valeur='http://spip.test.org' where nom='adresse_site';"
rm -rf tmp/meta_cache.php tmp/cache/*
# changement des paramètres
# file: ecrire/inc_connect.php3
# tidy permissions
chgrp -R www-data CACHE/ IMG/ ecrire/data/
chmod -R g+w CACHE/ IMG/ ecrire/data/

URLs "propres"

  • Déclarer le type d'URLs:
cat <<'EOF' > ecrire/mes_options.php
<?php
$type_urls = "propres";
EOF
  • Vérifier le .htaccess, en principe rien à faire si ce n'est vérifier qu'il est bien présent et bien nommé:
mv htaccess.txt .htaccess
  • Supprimer le cache:
rm -rf tmp/cache/*

EVA-Web

Les différences:

  • dossier eva/ avec l'aide en ligne
  • dossiers smileys/, images/ avec des images
  • des images associées aux articles dans IMG/
  • des fichiers PHP supplémentaires ecrire/eva_habillage.php3 ecrire/eva_colortable.gif pour modifier les .css depuis l'interface d'administration, fonction_deplier.js fonction_deplier.php3 pour les menus dépliants, spip_image_reduite.php3 pour les miniatures.
  • mes_fonctions.php3 avec de quoi gérer les smileys
  • ecrire/lang/local_fr.php3 pour des traductions spécifiques à EVA
  • ecrire/lang/spip_fr.php3 pour s/email/courriel/
  • eva_style.css, eva_style_print.css, eva_styles/ pour les styles

Passer EVA dans un SPIP 1.9.1

cp -a ../eva-web_v2.2/ecrire/eva_habillage.php3 ../eva-web_v2.2/ecrire/eva_colortable.gif ecrire/
cp -a ../eva-web_v2.2/fonction_deplier.* ../eva-web_v2.2/spip_image_reduite.php3 .
cp -a ../eva-web_v2.2/article-album-photo.php3 ../eva-web_v2.2/article-album.php3 .
cp -a ../eva-web_v2.2/mes_fonctions.php3 . # ou le faire à la main si vous avez modifié le ficher
cp -a ../eva-web_v2.2/smileys/ ../eva-web_v2.2/squelettes/ ../eva-web_v2.2/images/ .
cp -a ../eva-web_v2.2/eva_style.css ../eva-web_v2.2/eva_style_print.css ../eva-web_v2.2/eva_styles/ .
cp -a ../eva-web_v2.2/ecrire/lang/local_fr.php3 ecrire/lang/

fonction_deplier.php3 ne fonctionne plus, je l'ai remplacé par:

<?php
include_ecrire("inc_filtres.php3");
include_ecrire("inc_layer.php3");

Numéros réservés:

  • rub1: éléments de personnalisation
  • rub2: boutons de menu additionnels
  • rub16: rubrique Recherche avec présentation spéciale.
  • syndic7: logo du site en page d'accueil
  • article23: texte en page de connexion administrateur (ecrire/)

Donc:

  • Configuration/Référencement de sites et syndication: activer "Gérer un annuaire de sites Web"
  • Mots-clefs: groupe de mots-clef "Type d’affichage", assignable à une rubrique ou un article
    • agenda
    • album
    • bouton
    • calendrier
    • diaporama
    • editorial
  • Créer un secteur "Personnalisation d'EVA", logo "logo_eva.gif" (noter le numéro, rub1 dans EVA)
    • Une sous-rubrique "Boutons du menu" (noter le numéro, 2 dans EVA)
      • Lien "10. Plan du site", logo "plan_site.gif"
      • Lien "40. Ecrire", logo "ecrire.gif"
    • Une sous-rubrique "Titre, logo, URL du site"
      • Lien "Accueil", avec votre logo (noter le numéro, 7 dans EVA)
    • Une sous-rubrique "Fenêtre de connexion"
      • Article "Fenêtre de connexion", logo "ecrire.gif", sans auteur (noter le numéro, 23 dans EVA)
    • Une rubrique "Agenda", logo "agenda.gif", mots-clef "bouton" et "calendrier"

Pensez à anti-dater les articles créés pour éviter qu'ils n'arrivent dans la liste des derniers articles sur le site.

Les squelettes à modifier:

sed -i -e 's/id_syndic=7}/id_syndic=2}/g' *
sed -i -e 's/id_secteur \?!= \?1}/id_secteur != 147}/g' *
sed -i -e 's/id_article=23}/id_article=888}/g' *
sed -i -e 's/id_rubrique=2}/id_rubrique=148}/g' *

On ne traitera pas la rubrique "Recherche", donc vous pouvez supprimer rubrique-16.html et rubrique=16.html.

SpipCarto

Les bases de ce qu'il y a savoir:

État du développement: changements occasionnels pour 1.9.2


SPIP et LDAP

Installer le module php-ldap avant d'installer SPIP:

apt-get install php5-ldap

À l'installation SPIP vous propose de paramétrer LDAP.

Principe de fonctionnement:

  • Synchro LDAP unique au moment de la connexion (pas d'import en masse), importation (LDAP -> spip_auteurs):
    • uid -> login
    • cn -> nom
    • mail -> email
    • description -> bio
  • Pas de resynchro du CN à la prochaine connexion
  • Recherche du login sur les attributs sAMAccountName, uid, login, userid, cn, sn (attention: pas de vérification de doublon/unicité) - cf. ecrire/auth/ldap.php


HTTPS pour les pages sensibles

Le plugin redirhttps permet de forcer l'accès en HTTPS à la page de connexion ainsi qu'aux autres pages une fois connecté.

Il peut néanmoins être intéressant de le modifier pour prendre en compte une installation dans un sous-dossier, non géré pour l'instant (v0.1.1). Une fois le plugin installé, modifiez le fichier plugin/redirhttps/redirhttps_options.php pour que la condition ressemble à ceci :

if ((_request('page') == 'login' || isset($_COOKIE['spip_session']))
    && (empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on')
    && $_SERVER['REQUEST_METHOD'] == 'GET') {

Enfin, derrière un reverse proxy, il faudra modifier certaines variables utilisées par SPIP pour générer les URLs et par ce plugin pour déterminer si on accède à la page en HTTPS. Pour ce faire, vous pouvez créer un fichier conf/mes_options.php contenant les lignes suivantes :

<?php

/**
 * Récupération et définition des en-têtes données par le reverse proxy.
 */
if (!empty($_SERVER['HTTP_X_FORWARDED_HOST']))
  $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
if (!empty($_SERVER['HTTP_X_REAL_IP'])
    && (filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) !== FALSE
        || filter_var($_SERVER['HTTP_X_REAL_IP'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) !== FALSE))
  $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_REAL_IP'];
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
  $_SERVER['HTTPS'] = 'on';
  $_SERVER['SERVER_PORT'] = 443;
}

?>

Autres pages

  • Plugin SPIP: développer un plugin avec SPIP, techniques de programmation
Outils personnels