Accueil > Informations > Évolution du site > Année 2016

Année 2016

jeudi 29 septembre 2016, par L’équipe Pétillante

29 septembre 2016

Nous avons migré le site sur un serveur dédié désormais géré par nos soins. L’intérêt, en maîtrisant complètement l’environnement technique du site, est de disposer du meilleur de la technologie actuelle comme le nouveau protocole HTTP/2 et PHP 7 qui réduisent significativement les temps d’affichage.

En effet, pour proposer des solutions d’hébergements fiables à leur client, les hébergeurs s’appuient sur des technologies certes éprouvées, mais qui ont tendance à dater un peu, comme Apache 2 ou PHP 5.6, que leurs clients ne peuvent changer.

L’unique façon de disposer d’un environnement sur mesure, plus performant et plus souple que les hébergements mutualisés classiques, a donc été d’en choisir les logiciels les plus performants et paramétrer de façon optimale ces derniers : serveur web nginx incluant PageSpeed et compilé en excluant certaines fonctions inutiles pour réduire son empreinte mémoire, cache en mémoire vive, etc.

Pour les personnes qui souhaitent migrer leur site SPIP sous nginx, voici comment nous avons fait, car de nombreux articles disponibles sur l’internet contiennent des informations erronées.

Par exemple sur le site de nginx, le fichier de configuration proposé pour un site SPIP est le suivant.

server {
    server_name …;
    …

    location / {
        try_files $uri $uri/ /spip.php?q=$uri&$args;
    }
    …
}

En fait, il s’agit d’un simple copier-coller d’une configuration pour WordPress qui ne peut pas absolument pas fonctionner pour un site SPIP.

Voici la solution que nous avons finalement mise au point (pour des raisons de clarté, nous avons simplifié le code initial en omettant le traitement des répertoires privés et des scripts PHP).

server {
    server_name …;
	…

    location / {
        # nous insérons ici toutes les règles de réécriture des URL
        rewrite ^/sitemap\.xml$ /spip.php?page=sitemap.xml last;
        rewrite ^article([0-9]+) /spip.php?page=article&id_article=$1&$args last;
        rewrite ^breve([0-9]+) /spip.php?page=breve&id_breve=$1&$args last;
        …

        # ensuite, nginx tente de traiter directement l'uri
        # s'il s'agit d'un fichier ou d'un répertoire existant
        # et dans le cas contraire, passera la main à la règle @spip
        try_files $uri $uri/ @spip;
    }

    location @spip {
        # ici, nous avons "capturé" les uri "propres", "propres2", "libres", etc.
        # qui ne correspondent à aucun fichier ou répertoire
        # Nous les transmettons donc à SPIP pour traitement
        rewrite ^(.+)(\.html?)? /spip.php?url_propre=$1&$args last;
    }
    …
}