Le Portal Pacher
Accueil > Software > Internet > SPIP sur Windows Server 2003 et IIS 6.0

SPIP sur Windows Server 2003 et IIS 6.0

vendredi 5 décembre 2008, par Phi, 6489 Vues

Noter cet article

J’ai voulu monter un petit intranet dans une entreprise, et comme j’aime bien la résistance aux hacks de SPIP, j’ai choisi de l’installer sur le serveur Windows 2003.


Pourquoi SPIP ?

Le Portal Pacher existe depuis plus de 10 ans. A l’origine le CMS utilisé était écrit par mes soins (ainsi que le moteur prix d’ailleurs). Au fur à mesure du temps cela devenait de plus en plus difficile à maintenir et je suis passé à des CMS disponibles sur le marché.

J’en ai fait vraiment beaucoup, depuis PHPBB (+ interface faite maison), puis PHP Nuke, puis Limbo, puis Joomla etc. Aucun des CMS n’a été résistant aux hacks sauf SPIP, sans doute parce qu’il est français et vraiment difficile à comprendre et configurer.

Le choix de SPIP était donc logique.

Installation de SPIP

L’administrateur réseau voulait absolument utiliser Windows 2003 ainsi que IIS 6.0 alors que je suis plus habitué à Linux + Apache. J’ai donc du m’adapter sachant que j’ai trouvé beaucoup moins de documentation sous IIS que sous Apache sur SPIP.

A noter que c’est la première fois que j’utilise IIS, et donc que j’ai essayé d’apprendre à l’utiliser le moins possible (ie le strict nécessaire pour SPIP).

Les principales étapes de l’installation ont été les suivantes :

1) Installation de MySQL

J’ai choisi la dernière version de mysql soit la 5.0.67 win32, version community server gratuite. A noter que j’ai pris la version complète.

Il faut éditer my.ini dans le répertoire d’installation et modifier le sql-mode :
sql-mode="MYSQL40,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

On peut aussi l’installer sans mode strict, sinon SPIP ne marche pas avec MySQL 5.0 et plante à la quatrième étape de l’installation voir Problème MySQL avec SPIP. Une autre solution est de créer les tables erronées manuellement.

2) Installation de PHP 5.2.6

Lors de l’installation, il faut choisir (et seulement choisir) le module ISAPI comme interface. Le choix d’autres modules peut conduire à des erreurs inexplicables (ex : erreur Oracle) ensuite. Il faut aussi ajouter les dll gérant mysql uniquement.

Dans mon cas, l’installation de PHP a échoué dans la mise à jour de IIS, sans doute à cause de droits d’accès insuffisants, j’ai donc du terminer la configuration manuellement.

Il faut donc aller sous IIS dans les propriétés de Web Sites, Home Directory, Configuration, ajouter l’extension .php et sélectionner la dll php5isapi.dll. Sur Home Directory, choisir dans Execute permissions "Scripts only" au lieu de None.

Il faut aussi sous IIS aller sur Web Services Extensions (qui apparait comme un répertoire), Cliquer sur All Unknown Isapi Extensions et choisir Allow.

Enfin dans l’onglet Documents, ajouter index.php comme default content et le remonter si vous le souhaitez en tête de liste.

Par ailleurs, la limite d’upload des fichiers dans mon cas est fixée par PHP à 2 Mo, pour la modifier il suffit de régler dans php.ini upload_max_filesize= 2M à la valeur que vous souhaitez.

3) Installation de phpMyAdmin

Je ne sais pas pourquoi mais win mysql n’était pas installé avec mysql (ou je ne l’ai pas trouvé), j’ai donc ajouté phpMyAdmin 3.0.1.1.

Après avoir recopié le répertoire phpMyAdmin dans Inetpub/wwwroot, il fallait recopier config.inc.php dans la racine et éditer dans le fichier la ligne blowfish avec un seed que vous voulez.

J’ai dû également éditer les permissions du répertoire phpMyAdmin : le plus simple c’est de sélectionner le répertoire dans IIS Manager, bouton droit "Permissions", utilisateur Internet Guest Account puis Full control.

Note : il me reste un message d’erreur d’absence de librairie mcrypt affiché, mais cela a l’air de marcher quand même.

4) Installation de SPIP 1.9.2e

Recopier le répertoire spip dans Inetpub/wwwroot, puis aller sur spip/ecrire. Il va d’abord afficher que les droits sont incorrects pour les répertoires IMG/ tmp/ local/ config/

Le plus simple c’est de sélectionner les répertoires dans IIS Manager, bouton droit "Permissions", utilisateur Internet Guest Account puis Full control.

A noter que si vous mettez "Permissions" en Write seulement, cela passe l’installation mais vous aurez plein de problèmes pour la sauvegarde et pour la gestion du cache (il ne semble pas pouvoir supprimer les fichiers). J’ai dû installer une vieille version 1.9.1 de SPIP qui effectue la détection de façon correcte avant de trouver le problème qui m’a bien fait turlipiner tout une nuit.

P.S. : SPIP propose une méthode pour changer les droits sous FTP, mais je n’avais absolument pas envie de configurer un FTP sous IIS sachant qu’à coup sûr mon administrateur devait avoir interdit en sus l’accès FTP.

Entrée des informations du serveur MySql. Dans mon cas, localhost, root, mot de passe a fonctionné. J’ai perdu 1h puisque j’avais mal lu la page et cru qu’il fallait mettre deux fois le mot de passe au lieu de login + mot de passe ...

5) Installation d’ ISAPI Rewrite 3 Lite d’Helicon

Ce module est important pour avoir des URL propres sous SPIP.

IIS 6.0 n’a pas le mod_rewrite d’Apache, la seule solution rapide, simple et gratuite semblait d’installer le module ISAP Rewrite 3 Lite.

L’installation a bien fonctionné, cependant elle ne prenait pas du tout en compte le fichier .htaccess et les instructions mod-rewrite.

A la fin, je l’ai fait brutalement en mettant directement les instructions rewrite dans le fichier httpd.conf d’ISAPI Rewrite :

RewriteBase /spip/

RewriteRule rubrique([0-9]+)\.html$ spip.php ?page=rubrique&id_rubrique=$1 [QSA,L]

RewriteRule article([0-9]+)\.html$ spip.php ?page=article&id_article=$1 [QSA,L]

RewriteRule breve([0-9]+)\.html$ spip.php ?page=breve&id_breve=$1 [QSA,L]

RewriteRule mot([0-9]+)\.html$ spip.php ?page=mot&id_mot=$1 [QSA,L]

RewriteRule auteur([0-9]+)\.html$ spip.php ?page=auteur&id_auteur=$1 [QSA,L]

RewriteRule site([0-9]+)\.html$ spip.php ?page=site&id_syndic=$1 [QSA,L]

J’ai édité ensuite spip/ecrire/inc_version.php pour mettre :

$type_urls = ’html’

je préfère les url propres du type article3.html puisque c’est plus stable si on change le titre de l’article par exemple/

P.S. : Pour renommer htaccess.txt en .htaccess (pas de nom, uniquement extension), on est obligé de repasser sous dos sous Windows Server 2003 ! Cela n’a cependant pas réglé le problème de la prise en compte de ce fichier dans mon cas.

P.P.S. : J’avais pas ajouté le RewriteBase /spip/ au départ : cela ne marchait pas du tout alors que les expressions régulières étaient correctes.

6) Ajouter des plugins à SPIP

Le plus facile : ajouter un plugin, il suffit de recopier le plugin dans un répertoire spip/plugins, puis d’aller dans l’interface de configuration en mode avancé sur plugins qui apparait magiquement et de l’activer.

J’ai installé le plugin recherche avancée
qui marche parfaitement sans configuration supplémentaire.

7) Configurer la présentation de SPIP

Le plus dur : je ne comprends rien au langage de SPIP (et j’oublie très rapidement), et je n’ai jamais rien compris au système de CSS qui m’a toujours paru très complexe.

En règle générale il faut créer un répertoire spip/squelettes et recopier les fichiers squelettes, css ou de langues dans ce répertoire (attention au point 3) pour les permissions full control sinon SPIP va planter dès la première erreur puisque les fichiers cache vont rester et primer sur toutes les modifs ultérieures).

A noter que j’ai utilisé au début cette m***e de Kompozer qui corrompait les fichiers html même lorsqu’on les éditait en source, et faisait planter SPIP, javascript et autres. J’ai fini par passer sur un éditeur texte standard : Notepad++ qui est parfait.

D’abord les en-têtes et pied de page : les fichiers concernés sont inc-entete.html et inc-pied.html, pour les trouver quand on y connait rien ce n’est pas facile.

Ensuite la page de garde c’est sommaire.html. Les articles sont listés par date de mise en ligne au lieu de date de dernière modification, il suffit de changer la boucle #DATE avec #DATE_MODIF.

Enfin article.html et rubrique.html sont les plus importants.

Pour les images cliquables il suffit de lire Image cliquable sous SPIP

Enfin la mise en page est en fait dans les fichiers CSS, mais quand on débute on ne sait pas lesquels éditer puisqu’il y en a plein. En fait le principal est dans habillage.css, avec en particulier les classes page, conteneur#navigation, conteneur#contenu et conteneur#contre-encart, la largeur fixe par défaut de SPIP est obsolète (pour du 640x480 ?).

Exemples de CSS et de squelette permet de mieux comprendre les CSS en intégrant le code CSS et le code html dans des exemples sachant que la difficulté pour un novice c’est que les CSS sont souvent séparés des html et incluent plein de champs CSS non utilisés par la majorité des pages html.

Attention aux fichiers langue (ex : local-fr.php), oublier la virgule en fin de ligne ou l’anti slash devant l’apostrophe fait planter tout le site, et comme il est en cache vous ne pouvez même pas faire un recalcul sauf en ajoutant manuellement ?var_mode=calcul sur la page appelée.

A noter que les images et documents ajoutés sont liés à un article même s’ils peuvent être affichés par d’autres articles et qu’en cas de suppression, les fichiers sont détruits et ne peuvent plus être appelés par les autres articles. Tous les fichiers uploadés (mais pas les logos il semblerait), sont dans le répertoire IMG.

Conclusion

Comme vous avez pu le constater cela n’a pas été une partie de plaisir, presque une semaine de travail pour avoir un site fonctionnel avec une esthétique minimale.

Je pense que c’est le gros problème de SPIP, les forums sont mal organisés par rapport à un forum PHPBB, définis pour un site à 640x480, et toutes les boucles, variables clés et fichiers clés ne sont expliquées nulle part, de façon claire pour un néophyte qui abandonne souvent en cherchant au hasard dans une multitude de fichiers.

Par ailleurs l’organisation des répertoires change à chaque version et l’upgrade n’est possible que directement à partir de l’ancien site et pas par rapport à la sauvegarde de la base.

Au final la configuration hors interface de SPIP est à mon avis extrêmement difficile, ce qui explique le nombre de sites SPIP moches puisqu’on est obligé de manipuler les fichiers css et php pour adapterl’apparence de SPIP, mais une fois configuré SPIP est très stable et extrêmement solide.

Liens utiles

PHP Site officiel

SPIP Site officiel

Migration SPIP 1.9.2 vers 2.0.7 Article sur la migration à la dernière version de SPIP

phpMyAdmin Site officiel

MySql Site officiel

Helicon Isapi Rewrite Plugin IIS indispensable pour l’url rewriting

Notepad++ Un très bon éditeur de texte gratuit

PHP 4 avec IIS 5.1 Page web sur l’installation de PHP 4 sur IIS 5.1

Problème MySQL avec SPIP Solution sur SPIP Forum : désactiver le mode STRICT de MySql

Plugin SPIP Recherche Avancée

URL propres SPIP

Gestion des dates SPIP

Image cliquable sous SPIP

Exemples de CSS et de squelette


3 Messages

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0