Chez JL

Joliciel Libre

Accueil > Informatique > Internet > SPIP - Création de site Internet

SPIP - Création de site Internet

mardi 8 novembre 2011

 Mise à jour

Avec spip_loader.php

Utiliser spip_loader.php : https://www.spip.net/fr_article5705.html

Télécharger

- S’assurer qu’on pourra si besoin faire une restauration depuis une sauvegarde (sauvegarde de la base de données, sauvegarde du répertoire de spip)
- il faut bien que les modifications du squelette soit dans squelettes/ sinon elles seront perdues.
- Télécharger la nouvelle archive sur http://www.spip.net/fr_download, par exemple

wget http://files.spip.org/spip/stable/spip-3.1.zip

- décompresser

unzip spip-3.1.zip

- Vérifeir la version

cat spip/svn.revision

Envoyer la mise à jour sur le serveur web

Par FTP avec un client graphique (Filezilla)

Sélection tous les fichiers et dossier extraits et les envoyé sur le serveur, en écrasant les anciens.

par ftp en ligne de commande

lftp user:motdepasse@serveurftp.fr -e "mirror -v -n -c -R $REP/spip/ /. ; quit"

Si on ne s’est pas trompé dans la commande (ne pas oublié ou ajouter de slash), on a des messages du genre :

...
Transfert du fichier « ecrire/lang/spip_ja.php »
Suppression de l'ancien fichier « ecrire/lang/spip_km.php »
Transfert du fichier « ecrire/lang/spip_km.php »
Suppression de l'ancien fichier « ecrire/lang/spip_lb.php »
Transfert du fichier « ecrire/lang/spip_lb.php »
...

par rsync local

rsync -rltgoDv spip.nouvelle.version/ /var/www/monspipamettreajour/

En fait même avec les options, -o et -g les permissions sont perdus si on en fait pas avec le bon compte utilisateur (par exemple si on veut garder www-data, mais qu’on fait rsync avec root, alors le propriétaire www-data est remplacé par root).

Il faut donc remettre les droits à la main :

/var/www/# chown www-data:www-data monsite/ -R
/var/www/monsite# chmod -R a+w IMG/ tmp/ local/ config/

par rsync distant

rsync -rltgoDv spip.nouvelle.version/ root@serveur:/var/www/monspipamettreajour/

Puis repositionner les droits comme pour le rsync local.

Suite de la mise à jour

Se connecter à l’interface privée. Il faudra peut être recharger la page ou vider le cache du navigateur pour voir les changements.

Vérifier que le numéro de version en bas de la page a été changé.

Selon le niveau de la mise à jour il peut y avoir le message "Message technique :
la procédure de mise à jour doit être lancée afin d’adapter la base de données à la nouvelle version de SPIP. Si vous êtes administrateur du site, veuillez cliquer sur ce lien".

Suivre alors le lien, la base SQL est mise à jour automatiquement.

Attendre que la mise à jour se termine.

Pour mettre à jour un plugin :
- voir les messages d’erreur sur les mises à jour des plugins, notamment sur les dépendances. Refaire la mise à jour du plugin peut corriger.
- réinstaller les modules nécessaires depuis l’interface d’administration.
- faire les mises à jour des plugins

 Installation

Pour de l’autohébergement, installer tout d’abord une plateforme LAMP.

Voir notamment pour vérifier que les fichiers .htaccess sont pris en compte.

Outils pour traitement de l’image et autre :

aptitude install php5-imagick php5-gd netpbm feh unzip php5-sqlite
# cd /var/www
# wget http://files.spip.org/spip/stable/spip.zip
# unzip spip.zip?1296170703
# cat spip/svn.revision # pour voir le numéro de version
# mv spip spip_version
/var/www/# ln -a /var/www/spip_version /var/www/nomdusite
# rm spip.zip

Le lien symbolique pourra servir lors d’un mise à jour spip.

- Positionner les droits

/var/www/monsite# chmod a+w IMG/ tmp/ local/ config/

Créer certains répertoir nécessaire par la suite (plugin automatique...) :

mkdir plugins/auto

Suite commune de l’installation

- Créer un compte mysql, et une base données pour le site

# mysql -u root -p
> create database monsitespip;
mysql> GRANT  all privileges on monsitespip.* TO monuser@localhost identified by 'monmotdepasse';
// affectation des droits à l'utilisateur user sur la nouvelle base
// Pas nécessaire
mysql> FLUSH PRIVILEGES ; // recharge les privilèges

- Aller à l’adresse http://serveur/nomdusite/ecrire
- adresse base de donnée : localhost
- login et mdp définit ci-dessus dans mysql
- choisir base de données créer ci-dessus "monsitespip"
- création d’un compte d’accès à spip
- Alerte "htaccess inopérant" à voir.

Pour refaire les étapes d’installation

- rendre inactif, en le renommat, le fichier connect.php :

 
spip/config# mv connect.php connect.php.old


- retourner à l’adresse http://serveur/nomdusite/ecrire

Le fichier connect.php contient les information dans l’ordre (a vérifier...) :
- spip_connect_db(’
- nom dns du serveur mysql ou peut être adresse ip
- identifiant d’accès à la base
- mot de passe d’accès
- nom de la base de données
- ñysql
- spip

 Réinstallation d’un site

- Partir du répertoire de sauvegarde, avec également la sauvegarde de la base de données
- créer une base de données vide dans mysql comme vu plus haut
- refaire le connect.php en le renommant puis en allant dans http://monsite/ecrire
- il faudra sùrement vider le répertoire tmp/cache, vider le cache du navigateur
- refaire le paramétrage de l’acces à la base
- faire la restauration de la base
- reactiver les plugins

 Réinstallation 2

Suite à un message d’erreur

Warning: is_dir(): open_basedir restriction in effect. File(ecrire/) is not within the allowed path(s): ... ecrire/inc_version.php on line 46

- Cela a été corrigé en refaisant l’installation ainsi :
supprimer tout sauf les répertoires

  • /IMG
  • /config
  • /audio
  • /plugins
  • /squelettes
  • /themes

Placer le fichier spip_loader.php à la racine et j’ai lancé l’installation.

 Téléverser

Pour les limites voir dans
voir /etc/php5/apache2/php.ini
les valeurs :
post_max_limit et l’autre.

Quand un gros fichier est téléverser, il y un fichier temporaire qui est créé dan /tmp et dont le nom commence par php. Par exemple : /tmp/phpJz0sf2 , puis le fichier est déplacer vers /var/www/spip/IMG/...

 Comment faire ?

Comment faire ?
- avec sarka spip pour définir la couleur d’un titre de rubrique (dans la partie basse du bandeau) quand il est séctionné ?

 plugin : court circuit

Permet de gérer la transition vers un article sans passer par la rubrique, c’est pratique par exemple s’il n’y a qu’un seul article dans la rubrique.

 Utilisation

Les balises HTML fonctionne dans le code spip. Par exemple :

<font color=blue size=5>Mon texte</font>

Changement de couleur

 favicon

Pour Sarka-spip, mettre le favicon personnalisé dans : squelettes/images/favicon.ico

Ensuite il faut recalculer la page. Si cela ne suffit pas, faire :
- vider les caches de spip (et cache image) (vraiment nécessaire ?)
- vider le cache du navigateur
- recalculer la page

 Plugins

Ajout de plugin

mkdir plugins
mkdir plugins/auto
chmod 777 plugins/ -R # un peu fort, non ?...

Eventuellement

mkdir lib
chmod 777 lib// -R # un peu fort, non ?...

Ajouter des dépots pour les plugins : http://plugins.spip.net/spip.php?page=depots
au 30/12/2014 il y a :
- SPIP-Zone - Plugins 968 plugins, 1256 paquets Actualisé le 30-12 05:45
- SPIP-Zone - Core 27 plugins, 34 paquets Actualisé le 30-12 05:45
- SPIP-Zone - Externals 4 plugins, 4 paquets Actualisé le 30-12 05:45
- SPIP-Zone - Autres contributions
Le dépôt "spip-zone-plugins" est facilement disponible. Je ne trouve pas d’adresse ou de fichier xml pour d’autres dépots.

Pour avoir la création de sommaire

- le couteau suisse. Activer le plugin.
- configurer le plugin : activer "Amélioration des textes" -> "Sommaire automatiques", serait ok par défaut. option "création systématique", mettre "non" et mettre "" en haut des articles qui en ont besoin, et utiliser {{{titre}}} pour que le titre apparaissent dans le sommaire.

 Plugin Sarka-spip

- Documentation Sarka-spip

- activer les plugins par l’interface graphique : cfg et sarka-spip

pour avoir un article en une :
- activer l’utilisation des mots clés dans la config spip
- créer le groupe de mot clé : squelette_habillage
- créer dedans, le mot clé "article_une"
- créer un article et lui associé ce mot clé.

Pour avoir les menus qui font la largeur du texte :
- configuration sarkaspip -> bandeau -> largeur de chaque item en pixel -> mettre 0 -> sauver
- vider le cache
- recalculer la page

Modification du squelette de sarkaspip

Mettre les fichiers modifiés dans squelettes/ qui sera à conserver toutes les personnalisations de fichier squelette. Il faut reproduire l’arborescence de sarkaspip, par exemple : squelettes/noisettes/rubrique/inc_rubrique_lien.html

Pour certain modification d’un squelette comme "taille de police" et image bg_bandeau_haut.jpg... il faut VIDER LE CACHE puis RECALCULER la page pour voir le résultat. Recalculer simplement la page ne suiffit pas.

Exemple de modification du squelette sarka spip :

- enlever l’auteur dans les articles, sarka-spip :

  • voir dans le fichier :
    plugins/auto/sarkaspip_3/noisettes/article/inc_article_cartouche.html

    Mettre en commentaire ainsi :

                   [(#REM) <!-- Auteur de l'article --> ]
                   [(#REM) [<:sarkaspip:par_auteur:>&nbsp;(#LESAUTEURS) <br />] ]

- passer le layant fluide 3 colonnes en 2 colonnes

  • editer
    plugins/auto/sarkaspip_3/css/layouts/layout13.css
  • supprimer la colonne "extra"
    /*div#extra{float:left;width:220px;margin-left:-220px} */
    div#extra{float:left;width:0px;margin-left:0px}
  • agrandir la colonne "content" à droite
    div#content{margin-left: 220px}
    /* div#content{margin: 0 220px} */

Taille des menus horizontaux

Pour que les menus horizontaux aient la taille de leur texte, et non une taille fixe

Dans squelettes/css/noisettes.css.html

Mettre en commentaire l’ancienne valeur pour "largeur_menu" et "largeur_item", puis leur donner une valeur.

/* Modification pour avoir les boutons sur une ligne */
/* [(#CONFIG{sarkaspip_bandeau/menu_align, 0}|!={0}|oui)
       [(#SET{largeur_menu, [(#CONFIG{sarkaspip_bandeau/menu_largeur, 600})]})]
]*/
       [(#SET{largeur_menu, 1400})]


/*[(#CONFIG{sarkaspip_bandeau/item_largeur, 150}|!={0}|oui)
       [(#SET{largeur_item, [(#CONFIG{sarkaspip_bandeau/item_largeur, 150})]})]
]
*/
       [(#SET{largeur_item, 140})]

Remarque, on peut mettre la valeur "100%" pour que la taille du block s’ajuste à la taille du texte, mais après ce n’est pas très joli pour les sous menus.

Ajouter une rubrique accueil

Pour sarka spip, le fichier a personnalisé est différent selon les layout choisit. Par exemple si on a la liste des "secteurs" (rubrique de niveau 1) dans le bas du bandeau, et que l’on veut ajouter un titre "Accueil" :

plugins/auto/sarkaspip_3/noisettes/navigation$ vi inc_menu_secteurs.html

<B_menu_XXXXX_h>
<div id="menu_XXXX" class="noisette menu_horiz">
 <ul>
   <li>
   <!--[(#SET{rang_secteur, [mh_n(#COMPTEUR_BOUCLE)]})]-->
     <a id="mh_n1" href=".">Accueil</a>
   </li>
<BOUCLE_menu_rubriques_h(RUBRIQUES) {racine} {id_rubrique!==#RACINE_SPECIALISEE}{par num titre, titre}>
   <li>
...

Ce n’est pas parfait, car le style n’est pas correct. Il me manque la barre verticale entre le 1er et le 2ème secteur... Si la liste de secteurs n’evolue pas, on pourrait le refaire manuellement complètement, sans boucle, à partir du code génére par spip.

Pour changer l’ordre, trier des rubriques, des articles

Pour spip 3.0 :

<BOUCLE_articles(ARTICLES) {id_rubrique}{pagination}{par num titre, titre}>

Nommer les rubriques et articles du genre "3. Ma rubrique", sur le site public ne s’affichera que "Ma rubrique", et la numéroation est utilisée pour le tri.

N’afficher que certaines rubriques

Modifier la boucle en question, indiquer le numéro des rubriques à afficher :

<BOUCLE_rubrique_visible(RUBRIQUES){id_rubrique IN 2,6,7,13,5,14}>

supprimer le nom de la rubrique, sous l’article

noisettes/rubrique/inc_rubrique_lien.html

Ajout d’une noisette en page d’accueil

extra.html

Exemple d’ajout :

[(#REM) <!-- affichage du bloc des sponsors --> ]^M
<!--[(#ENV{page}|=={sponsors}|?{' '})-->^M
       <INCLURE{fond=noisettes/sponsors/inc_sponsors}{ajax}{id_rubrique}{categorie}{annee}{mois}>^M

Créer alors le fichier inc_sponsors.html dans squelettes/noisettes/sponsors/

[(#REM) <!-- Noisette des sponsors
Pour ajouter des sponsors : éditer à la main
-->]  
       <div id="noisette_sponsors" class="noisette">
               <h1 class="intitule">Sponsors</h1>
               <div class="contenu">
                       <!--<h2 class="titre_bloc">Sponsors officiels</h2>-->
                       <div class="liste">
                       <ul>  
                               <center>
                               <a href="http://www.fr"><img src="IMG/jpg/image.jpg" width="90"></a>
                               <br>
                               <a href="http://www.fr"><img src="squelettes/images/image.png" height="90" width="90"></a>
<br><span class="titre"><a href="http://www..fr">Nom du sponsor</a>
                               </center>
                       </ul></div>
               </div>
       </div>

Changer taille de la police, menu horizontale

.
plugin/auto/sarkaspip/css/noisette.css.html
...
.menu_horizfont-size:1.4em;
...

PUIS IL FAUT VIDER LE CACHE, puis recalculer la page pour voir le changement.

Changer la couleur de fond d’un article

Modifier le fichier plugins/auto/sarkaspip_3/noisettes/article/inc_article_description.html

Changer la ligne (vers la ligne 115)

<div style="background:#eeeeee">[<div class="#EDIT{texte} texte">(#TEXTE|typo_couleur)</div>]</div>

Changer l’image de fond

Il faut voir dans le configuration de sarkaspip, et mettre l’image dans : /www/squelettes/images

Exemple pour forcer l’affichage d’un article, dans le sommaire.html de sarka-spip

   <BOUCLE_2_article(ARTICLES) {id_article=3}>
     <INCLURE{fond=noisettes/article/inc_article_description}
       {id_article}
       {afficher_commentaires=non}
       {logo_rubrique=#CONFIG{sarkaspip_article/logo_rubrique, oui}}
       {taille_logo=#CONFIG{sarkaspip_article/taille_logo, 150}}
       {page=une}
       {id_rubrique=#ID_RUBRIQUE}>
     #SET{page_vide, 0}
   </BOUCLE_2_article>

Pour faire une boucle avec un ordre

<BOUCLE4(RUBRIQUES){id_rubrique IN 2,14,7,6,13,5}>
   <li>
     <a href="#URL_RUBRIQUE"[ class="(#EXPOSE)"]>#TITRE</a>
   </li>
</BOUCLE4>

Pour les articles, la date de publication peut être changée, cela change l’ordre.

Pour l’ordre des rubriques utiliser le couteau suisse, la lame "Affichage public -> Supprimer les numéros" et renommer les rubriques par exemple :

1. abeille
2. papillon
3. chenille

 Sauvegarde

- Utiliser l’interface graphique SPIP pour sauver la base de donner
- pour sauver cette sauvegarde de la base, copier le fichier depuis tmp/dump/...
- sauver le répertoire globale de spip
- Sauver notamment le repertoire IMG qui contient les documents

Le contenu de la base peut être sauver avec mysqldump, voir article SQL.

Commande de sauvegarde, avec un client ftp:

lftp user:motdepasse@serveurftp.fr -e "mirror -v -c -e -n -x .ftpquota -x ./tmp/ -x ./local/cache-vignettes -x ./local/cache-gd2 -x ./local/cache-css /. /donnees/documents/site_internet/ ; quit"

Pour éviter le message d’erreur

Erreur fatale: Certificate verification: certificate common name doesn't match requested host name

dire à lftp de ne pas faire de vérification ssl (mettre à la fin du fichier de configuration) :

# vi /etc/lftp.conf
...

set  ssl:verify-certificate false

 Restauration

Restauration de la base de données

La base a été sauver avec utiliser l’interface graphique (ou avec le plugin qui fait les sauvegarde automatique) ou par mysqldump.

Depuis l’interface spip, la sauvegarde se trouve dans tmp/dump/

Décompresser la sauvegarde :

cd tmp/dump/
unzip sav...zip

Attention si on utilise mysql de bien préciser l’option "—default-character-set=utf8" pour avoir les caractères correctes comme les accents. Exemple :

mysql -u monutilisateurbdspip -p -h localhost -D matablespip --default-character-set=utf8 < sav_monsite*.sql

Restauration des fichiers

Restaurer depuis la sauvegarde
Supprimer le contenu de tmp/cache/ sinon on peut avoir une page blanche.

 Divers

Pour autoriser le téléchargement de fichier de plus de 2 Mo, changer la valeur
par défaut dans /etc/php5/apache2/php.ini (upload_max_filesize = 2M ). Puis redémarrer le serveur apache :

service apache2 reload

 Problème

La galère, ce jour, 22/07/2011, pour avoir "accès restreint" qui fonctionne avec les options "interdire la lecture, ne pas créer des fichiers .htacces", et avec le plugin fancybos, j’ai dû désactiver sarka spip, et de plus reconfigurer fancybox en mettant dans "En gallerie : .fancybox" (effacer le .gallery)

La galère, ce jour, 19/08/2011, le plugin Sarka-SPIP gère mal le multilingue. Il ne permet pas simplement, comme le squelette de base, de faire un lien direct vers la traduction d’un article.

Pour vide le cache manuellement, utile après une réinstallation, si l’interface web ne s’affiche pas correctement

rm -rf /.../www/monsite/tmp/cache/*

 LDAP

Les infos peuvent être changées dans :

cat .../spip/config/ldap.php
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS['ldap_base'] = "dc=domain,dc=fr";
$GLOBALS['ldap_link'] = @ldap_connect("nomserveurldap","389");
@ldap_set_option($GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,"3");
@ldap_bind($GLOBALS['ldap_link'],"cn=admin,dc=domain,dc=fr","XXXX");
?>

 Rédaction : tableau

Source : http://icp.ge.ch/sem/cms-spip/spip.php?article913

Pour fusionner des cellules :

||Tableau avec fusion|Ce tableau sert d'exemple de mise en forme spip||
| {{Colonne 1}} | {{Colonne 2}} | {{Colonne 3}} |
| ligne 1 | Cellule fusionnée avec la suivante |<|
| ligne 2 | Cellule fusionnée
_ avec celle du dessous | normale |
| ligne 3 |^| normale aussi |

Cela donne :

Tableau avec fusion
Colonne 1 Colonne 2 Colonne 3
ligne 1 Cellule fusionnée avec la suivante
ligne 2 Cellule fusionnée

avec celle du dessous

normale
ligne 3 normale aussi

 Plugin accès restreint

Pour qu’il fonctionne bien il faut avoir activer les fichiers .htaccess et le module rewrite. Pour cela voir la configuration d’apache et renommer à la racine de spip le ficheir htaccess.txt en .htaccess et vérifier qu’il apparatient à www-data:www-data.

Problème avec la version 3.8.5 pour bloquer l’accès aux documents joints. Cocher dans le paramétrage du module : "interdire la lecture" et "Créer les fichiers .htpasswd", vider le cache. Mais les images mises dans le portofolio apparaissent en miniature mais ne peuvent pas être ouverte. Erreur :

Not Found
The requested URL /docrestreint.api/2572/XXXXXXXXX/jpg/dscf1099-2.jpg was not found on this server.

Effectivement, le fichier docrestreint.api n’existe pas sur le serveur...

 SPIP et Vim

- source : http://www.point-libre.org/~dimitri/blog/index.php/2005/10/24/60-spip-a-la-puissance-vim

- Créer un fichier suivant /.vim/syntax/spip.vim

" Auteur : Dimitri Robert
" Ce fichier de syntaxe est sous licence Creative Commons BY-SA
" http://creativecommons.org/licenses/by-sa/2.0/fr/
"
syntax match italique "{[^}]*}[^\n]"he=e-1
syntax match gras "{{[^}]*}}[^\n]"he=e-1

highlight italique term=italic cterm=italic
highlight gras term=bold cterm=bold

syntax region Titre2 start="^- " end="\n"
syntax region Titre1 matchgroup=accolad start="{{{" end="}}}\n"

highlight Titre1 term=bold cterm=bold ctermfg=red
highlight Titre2 term=none cterm=none ctermfg=darkred
"highlight Titre3 term=none ctermfg=yellow
highlight accolad term=bold ctermfg=darkmagenta

syntax match puce1 "^-\*"
syntax match puce2 "^-\*\*"
syntax match puce3 "^-\*\*\*"

highlight puce1 ctermfg=yellow
highlight puce2 ctermfg=darkgreen
highlight puce3 ctermfg=darkmagenta

syntax region lien matchgroup=liencrochet start="\[" end="\]" contains=fleche
syntax match fleche "->" contained
highlight lien ctermfg=darkyellow
highlight liencrochet ctermfg=blue
highlight fleche ctermfg=blue

syntax region code matchgroup=codetag start="<code>" end="

"
highlight code cterm=underline
highlight codetag ctermfg=darkblue

syntax region cadre start="

"
highlight cadre ctermbg=darkblue

syntax region quote start="

" end="

"
highlight quote ctermbg=darkgreen ctermfg=black

Ajouter dans .vimrc :

" pour SPIP surbrillance
au BufNewFile,BufRead *.spip        set ft=spip

" raccourcis
imap H2 - <ESC>a
imap H1 {{{}}}<ESC>2hi
imap CC <code>

6hi
imap COD 6hi
imap URL 2hi
imap QUO

O
imap CAD

O
imap _ST {{}}hi
imap _EM {}i
imap -* a
imap -** a

 Plugin forum

zforumart utilise zspip, que je n’utiliser pas actuellement pour l’habillage du site, car j’utilise sarkaspip. Mais forumart n’est pas compatible pour spip3.0... Il faudrait passer à sarkaspip v4 qui prend le concept de zspip.

Utilisation de zforumart http://contrib.spip.net/ZforumArt, disponible dans le dépot

créer une rubrique dédiée au forum. Depuis le paramétrage du plugin, faire l’association avec la rubrique.

Modifier le squelette, dans l’exemple il s’agit de celui de sarkaspip, avec menu horizontale, donc modification de :
- noisettes/navigation/inc_menu_rubriques_1h.html
- ajout de :

  <li>
  <!--[(#SET{rang_secteur, [mh_n(#COMPTEUR_BOUCLE)]})]-->
    <a[ id="(#GET{rang_secteur})"] href="http://monsite.fr/spip.php?page=zforumart1">Forum</a>
  </li>


- et faudrait ensuite masquer le secteur dans la boucle, pour ne pas qu’il apparaissent deux fois, par exemple si le secteur à la numéro de rubrique 50, mais la méthode suivante ne fonctionne pas, car tout ce qui est dans la rubrique serait ignoré (notamment les message du forum...)

<BOUCLE_menu_rubriques_h(RUBRIQUES) {racine} {id_rubrique!==#RACINE_SPECIALISEE} {id_rubrique!==50} {par num titre, titre}>

 Agenda dans Sarkaspip

Tout est très bien expliqué ici
- http://www.sarka-spip.net/spip.php?article447
- http://www.sarka-spip.net/spip.php?article445

Quelque notes résumés (incomplètes) :
- créer un secteur dédié, nom exemple "agenda"
- dans configuration sarkaspip, agenda, associé le secteur
- autorise l’utilisation de la date antiérieur pour les articles (configuration -> contenu du site)
- activer la gestion des mots clé avancé : configuration -> contenu du site -> cocher "utilisé les mots clés" , utilisation avancé, le choix pour les forums comme on veut
- l’article doit avoir un texte et u ntitre