Migration PHP

Cet article présente les astuces et guides pour vous aider migrer entre les différentes versions de PHP sur le Simple Hosting.

Migrer vers PHP 7 sur Simple Hosting

Une nouvelle instance PHP 7 est maintenant disponible avec MySQL 5.6 (Percona Server), PostgreSQL 9.4 ou MongoDB 2.4.

Ce document liste les différences connues et les problèmes de compatibilité entre les instances PHP 5.4, 5.6 et 7. Vous y apprendrez aussi comment migrer votre code, les hôtes virtuels (VHOSTS) et les bases de données depuis une vieille instance vers une nouvelle instance.

Différences connues

Gestion des fuseaux horaires

Les instances PHP 7 utilisent le fuseau horaire UTC (Universal Coordinated Time) par défaut.

Vous pouvez changer la propriété date.timezone dans le fichier php.ini pour l'adapter.

Par exemple :

date.timezone = "America/New_York"

Vos propres binaires

Vous pouvez installer vos propres binaires sur l'instance PHP 7.

  • Avec sFTP, placez vos fichiers dans le répertoire /lamp0/home/
  • Avec SSH, les fichiers doivent se trouver dans le répertoire /srv/data/home/

PHP 7 versus PHP 5.6

PHP 7 introduit de nombreuses nouveautés et a quelques incompatibilités avec PHP 5.

Nous vous recommandons de consulter la page officielle pour en savoir plus :

PHP 7 versus PHP 5.4

L'instance PHP 7 est techniquement identique à l'instance PHP 5.6. Veuillez consulter la documentation de migration de PHP 5.4 à PHP 5.6 pour mieux connaître les différences entre les types d'instance.

MySQL 5.6 (Percona)

MySQL 5.6 (Percona) est disponible pour PHP 7 et PHP 5.6. Percona Server est une version optimisée et plus stable du moteur MySQL, tout en étant 100% compatible avec le moteur officiel.

Cette version est rétro-compatible, donc vous pouvez migrer vos données depuis MySQL 5.5 sans aucun souci. Nous vous recommandons tout de même de faire des essais avant de migrer vos données de production. Consultez les guides de migration disponibles ci-dessous.

Pour en savoir plus sur MySQL 5.6 Percona Server :

PostgreSQL 9.4

PostgreSQL 9.4 est maintenant disponible pour PHP 5.6 et PHP 7. Cette version inclue le support natif de JSON et reste retro-compatible avec les données exportées depuis PostgreSQL 9.2 et 9.3.

Nous vous recommandons la consultation des guides de migration ci-dessous, ainsi que de la documentation officielle (en anglais):

http://www.postgresql.org/docs/9.4/static/upgrading.html

MongoDB 2.4

Il est désormais nécessaire d'inclure la librairie “mongodb” dans votre code pour pouvoir vous connecter à MongoDB depuis les nouvelles instances PHP 5.6 et PHP 7.

Nous vous recommandons d'utiliser Composer pour gérer cette intégration facilement. Pour en savoir plus, veuillez consulter la section sur MongoDB dans la documentation de l'instance PHP.

Vous pouvez migrer vos données avec un simple export et import comme décrits plus bas.

Tester et migrer votre application

1 - Exportez votre ancienne BDD

Accédez à votre instance via SSH ou via le panneau de contrôle :

2 - Tester localement

  • Installez et lancez PHP 7 et la version de la base de données correspondante sur votre ordinateur
  • Exportez votre BDD depuis la vieille instance
  • Importez la BDD dans votre applicatif local
  • Lancez et testez l'application pour vous assurer que tout fonctionne normalement avec les nouvelles versions

3 - Créez une nouvelle instance PHP 7

Vous pouvez créer une nouvelle instance en sélectionnant “PHP 7 / MySQL 5.6 (Percona)”, “PHP 7 / PostgreSQL 9.4” ou “PHP 7 / MongoDB 2.4” à l'adresse suivante (vous devrez vous enregistrer au passage):

https://www.gandi.net/hosting/simple/create

Avec Gandi CLI, éxecutez la commande suivante en remplaçant <tt>{type d'instance}</tt> par <tt>php7mysql5.6</tt>, <tt>php7pgsql9.4</tt> ou <tt>php7mongodb2.4</tt>:

  $ gandi paas create --type {type d'instance}

4 - Déployez vos fichiers sur la nouvelle instance

5 - Importez la base de données

6 - Migrez vos VHOSTs

Etape 1 - Supprimez les VHOSTs de l'ancienne instance:

https://wiki.gandi.net/simple/migrate#remove_the_old_vhost

Etape 2 - Créez les VHOSTS sur la nouvelle instance:

https://wiki.gandi.net/simple/migrate#create_the_new_vhost

7 - Arrêter la vieille instance (vous serez remboursé sur votre Pré-Payé)

Maintenant que les VHOSTS sont changés et que tout le traffic est dirigé vers la nouvelle instance, vous pouvez arrêter la vieille instance et récupérer l'argent correspondant au nombre de jours restant sur votre contrat. Le montant sera crédité sur votre compte pré-payé.

Migrer vers PHP 5.6 sur Simple Hosting

Nous avons publié une nouvelle instance supportant la version 5.6 de PHP.

Ce document liste les différences connues et les problèmes de compatibilité entre les version de PHP 5.4 et PHP 5.6. Celui-ci indique comment migrer votre code, les hôtes virtuels (VHOSTS) et les bases de données depuis une instance de version PHP 5.4 vers PHP 5.6.

Les instances PHP 5.4 sont maintenant considérées comme obsolètes et seront maintenues jusque la fin de vie (EOL) de Debian 7 (système de base utilisé pour les instances). D'ici leur fin de vie, vous pourrez continuer de créer des instances Simple Hosting PHP 5.4. La fin de vie est planifiée pour avril/mai 2018 mais pourra être anticipée par nos équipes.

Différences connues et problèmes

Gestion des fuseaux horaires

La nouvelle instance PHP 5.6 utilise le fuseau horaire UTC (Temps Universel Coordonné) par défaut.

Vous pouvez modifier l'option date.timezone dans le fichier php.ini pour l'adapter à vos préférences.

Par exemple :

date.timezone = "Europe/Paris"

Vos propres binaires

Avant le lancement de l'instance PHP 5.6, un ensemble de binaires et librairies étaient pré-installés dans /usr/local/bin/, tels que les modules SIPS/ATOS et Paybox.

Vous devez désormais installer vos propres binaires sur votre instance :

  • Via sFTP, placez vos binaires dans le répertoire /lamp0/home/
  • Via SSH, le chemin du répertoire est /srv/data/home/

Veillez à bien installer vos binaires vous-mêmes sur les nouvelles instances PHP 5.6.

PHP 5.4 versus 5.6

Cette section contient les liens vers la documentation officielle des ressources PHP, décrivant les différences entre les versions. Nous allons l'enrichir grâce aux retours clients.

Les différences entre PHP 5.4 et PHP 5.6 pourraient impacter le fonctionnement de votre site. Pour être sûr de ne pas avoir à faire de modifications de code en urgence, vous pourriez tester votre application avec PHP 5.6 avant de tenter une migration automatique ou manuel.

Comment tester votre application avec PHP 5.6

Les exemples génériques suivants devraient vous fournir une idée sur comment tester votre application sur votre propre ordinateur, ou sur une nouvelle instance Simple Hosting avant de migrer.

1 - Test local sur votre machine

2 - Test sur une nouvelle instance PHP 5.6

Mise à jour automatique (uniquement pour les utilisateurs de MySQL)

Les clients utilisant les instances de type PHP/MySQL ont la possibilité de lancer une migration automatique de la version 5.4 à la version 5.6. Les utilisateurs des bases de données PostgreSQL et MongoDB trouveront comment effectuer la migration manuelle dans la partie suivante.

  • Les VHOSTS étant déplacés et les disques de données attachés à une nouvelle instance, vous pourrez observer une courte interruption de service (jusqu'à 20 min). Vous pourrez dans une certaine mesure contrôler la durée de l'interruption en migrant manuellement l'instance (se référer à la section 'migration manuelle' ).
  • La migration automatique est une processus non réversible / permanent. Il ne sera pas possible de revenir à PHP 5.4 automatiquement.

Tout votre code, ainsi que les VHOSTS, bases de données, fichiers de logs et Snapshots seront déplacés vers la nouvelle instance exécutant PHP 5.6.

Votre facturation ne sera pas impactée non plus, mais le site pourra être inaccessible pendant la durée de la migration.

Veuillez vous assurer de bien comprendre les différences entre les deux versions en lisant les informations suivantes, afin de ne pas 'casser' votre code.

Si vous avez un quelconque doute, suivez les instructions au -dessus pour tester votre application avec PHP 5.6.

Si vous rencontrez un problème qui n'est pas lié au code, contactez notre équipe Support (nous ne pourrons pas débugger le code votre application).

Démarrer la migration depuis notre site web

Dans la page de gestion de l'instance, cliquez sur le bouton Upgrade pour démarrer le processus.

Démarrer la migration depuis l'API

Vous pouvez utiliser les méthodes API suivantes pour vérifier si l'instance peut être automatiquement mise à jour et lancer ce processus.

1. Vérifier si la mise à jour est disponible

La valeur “need upgrade” sera définie à “true” dans les méthodes : “paas.list()” ou “paas.info()”. http://doc.rpc.gandi.net/paas/reference.html#PaasListReturn

2. Mettre à jour l'instance

Définissez la valeur 'upgrade' à 'true' et appelez la méthode “paas.update()” http://doc.rpc.gandi.net/paas/reference.html#PaasUpdateParams

Mise à jour manuelle

1. Export de la base de données de l'ancienne instance

Initiez une connexion SSH à l'instance ou à la page web d'administration de l'instance pour exporter les bases de données.

2. Créer une nouvelle instance PHP

Les instances PHP 5.6 sont désormais proposées par défaut, vous pourrez ainsi sélectionner entre PHP avec PostgreSQL, MongoDB ou MySQL.

Les instances PHP 5.4 ont été renommées pour refléter ce statut déprécié.

Plus d'informations : https://wiki.gandi.net/fr/simple/create-instance

3. Envoi des fichiers vers la nouvelle instance

Envoyez également le fichier résultant de l'export de la base de données afin de pouvoir l'importer.

4. Import de la base de données (ou création d'une nouvelle)

5. Migration des VHOSTS

Cette étape impliquera une période d'inaccessibilité car elle implique un changement du fichier de zone DNS et ainsi un délai de propagation.

Etape 1 : Suppression des vhosts :

https://wiki.gandi.net/fr/simple/migrate#suppression_de_l_ancien_hote_virtuel

Etape 2 : Création des nouveaux vhosts :

https://wiki.gandi.net/fr/simple/migrate#creation_du_nouvel_hote_virtuel

6. Arrêt de la précédente instance (vous serez remboursé sur votre compte prépayé)

Maintenant que tout le trafic est envoyé vers la nouvelle instance, vous pouvez arrêter l'ancienne instance. Votre compte prépayé sera crédité au prorata de l'utilisation correspondant au temps restant d'engagement.

Dernière modification: le 15/06/2016 à 16:58 par Alexandre L. (Gandi)