Comment mettre à jour mon site sans forcer les utilisateurs à attendre?


8

Les temps d'arrêt sont peu pratiques pour les utilisateurs et doivent actuellement attendre chaque fois que le moteur d'un site est mis à niveau. De plus, lors de l'utilisation de scripts standard, il existe un risque qu'un changement de paramètre ne fonctionne pas aussi bien que prévu (même s'ils ont été testés sur un site de transfert).

Comment puis-je conserver plusieurs versions d'un site sur un serveur et basculer entre elles sans provoquer de temps d'arrêt (par exemple avec un fichier htaccess)?

Réponses:


6

Êtes-vous sur une machine Linux / BSD? Si c'est le cas, vous pouvez facilement utiliser des liens symboliques pour atteindre cet objectif.

Créez la version 1 du site ici:

/var/www/www.example.org.v1

Créez un lien symbolique pointant vers ce répertoire

cd /var/www
ln -s www.example.com.v1 www.example.com

Cela devrait vous donner une liste de répertoires ( ls -la) qui ressemble à ceci:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:35 www.example.com -> www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:35 www.example.com.v1

Configurez votre serveur Web pour l'utiliser /var/www/www.example.comcomme racine de document. Vous n'aurez jamais à changer cela; tout re-pointage se fera au niveau du système de fichiers.

Maintenant, lorsque vous souhaitez échanger la version 2 du site, il vous suffit de placer la nouvelle version dans:

/var/www/www.example.org.v2

Et mettez à jour le lien symbolique pour pointer vers cette version:

ln -sfh www.example.com.v2 www.example.com

Ce qui laissera la sortie de votre répertoire ressembler à ceci:

lrwxr-xr-x   1 userid  users    18 Aug  3 03:43 www.example.com -> www.example.com.v2
drwxr-xr-x   2 userid  users   512 Aug  3 03:42 www.example.com.v1
drwxr-xr-x   2 userid  users   512 Aug  3 03:41 www.example.com.v2

Comme vous pouvez le voir, le lien symbolique www.example.com pointe désormais vers la version 2 de votre site. Il s'agit d'une opération atomique qui ne devrait entraîner aucun temps d'arrêt lié à l'indisponibilité des fichiers.

Bien sûr, il reste une complexité considérable pour garantir que les structures de base de données sont mises à jour, que toutes les ressources statiques sont disponibles (et liées à la bonne version), etc., mais au moins cela permet de s'assurer que toutes les bonnes ressources pour le le nouveau site est disponible instantanément.

Windows Vista et Server 2008 prennent également en charge les liens symboliques à l'aide de la mklinkcommande, bien que je n'ai aucune expérience directe avec eux.


7

Vous pouvez utiliser des hôtes virtuels dans apache pour avoir 2 versions du code à 2 URL différentes. Un exemple couramment utilisé est:

test.example.com -> /var/www/version1.2

www.example.com -> /var/www/version1.1

les deux sont sur le même serveur, mais peut-être qu'un seul est accessible au monde. Une fois que vous êtes convaincu que test.example.com fonctionne, vous pouvez simplement changer où ils pointent dans votre configuration apache et ... presto. Nouveau site, nouveau code. En supposant qu'il n'y ait eu aucun changement de schéma de base de données, cela devrait fonctionner. Donc, après avoir effectué le changement, ce sera:

test.example.com -> / var / www / newtestversion

www.example.com -> /var/www/version1.2

Voici un exemple de directive de configuration apache pour un hôte virtuel:

<VirtualHost *:80>

     ServerAdmin gabe@localhost

     DocumentRoot "/var/www/version1.1"

     ServerName test.example.com

</VirtualHost>

Pour plus d'informations sur la façon de procéder, consultez la documentation de l'hôte virtuel apache

Je ne sais pas comment faire cela dans IIS, mais j'imagine qu'il existe également un moyen.

Si quelque chose ne va pas, remettez l'hôte virtuel sur l'original et votre ancien site est de retour ... aucun problème. Vous devez redémarrer apache pour que ces modifications prennent effet, mais c'est généralement une chose très rapide à faire.



0

Ce que je suggérerais:

  • Testez localement sur un serveur de développement avant de télécharger les modifications. N'effectuez pas les modifications sur un serveur en direct tant que vous n'êtes pas raisonnablement sûr que cela fonctionne sur le serveur de test.
  • Effectuez la maintenance à la moindre circulation. Pour la plupart des sites Web, ce sera tôt le matin le week-end. Si les week-ends ne sont pas une option, faites-le pendant la période la moins fréquentée de la semaine.
  • Avertissez vos utilisateurs de la maintenance planifiée à l'avance.

Existe-t-il un moyen de simplement configurer plusieurs versions et de basculer entre elles de manière transparente?
Gélatine du

Je ne l'ai pas fait auparavant, mais j'imagine que vous pouvez le faire via une configuration multi-serveur ou serveur virtuel. Si c'est ce que vous recherchez, cela pourrait finir par être une meilleure question pour ServerFault.
Virtuosi Media

@Simon: Oui, utiliser WampServer et installer les différents modules pour les différentes versions d'Apache, PHP et MySQL pour correspondre au serveur en direct - wampserver.com/en
DisgruntledGoat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.