web-dev-qa-db-fra.com

Comment puis-je mettre à jour mon site sans obliger les utilisateurs à attendre?

Les temps d'arrêt sont peu pratiques pour les utilisateurs et ils doivent actuellement attendre à chaque fois que le moteur d'un site est mis à niveau. De plus, lorsque vous utilisez des scripts standard, le changement de paramètre risque de ne pas fonctionner aussi bien que prévu (même s'ils ont été testés sur un site intermédiaire).

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

8
Gelatin

Ê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éer 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 utiliser /var/www/www.example.com en tant que racine du document. Vous n'aurez jamais à changer cela. Tout re-pointage se fera au niveau du système de fichiers.

Désormais, 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 qu'il pointe vers cette version:

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

Ce qui laissera votre sortie de répertoire comme 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 constater, le lien symbolique www.example.com renvoie maintenant à la version 2 de votre site. Ceci est une opération atomique et ne devrait pas causer de temps d'arrêt lié à l'indisponibilité des fichiers.

Bien sûr, il reste encore beaucoup de complexité à faire en sorte que les structures de base de données soient mises à jour, que toutes les ressources statiques soient disponibles (et liées à la version appropriée), etc. nouveau site sont disponibles instantanément.

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

6
JasonBirch

Vous pouvez utiliser des hôtes virtuels dans Apache pour disposer de 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 se dirigent dans votre configuration Apache et ... presto. Nouveau site, nouveau code. En supposant qu’il n’y ait pas eu de changement de schéma de base de données, cela devrait fonctionner. Donc, après avoir apporté 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 procédure à suivre, voir le documentation relative à l'hôte virtuel Apache

Je ne suis pas sûr de savoir comment procéder dans IIS, mais j'imagine qu'il existe également un moyen.

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

7
gabe.

Dans IIS, vous pouvez configurer un deuxième répertoire virtuel avec vos mises à jour.

Vous redirigez ensuite toutes les demandes ou remappez les liaisons du deuxième site vers le nom d'hôte souhaité.

Redirection HTTP dans IIS 7: http://technet.Microsoft.com/en-us/library/cc732930 (WS.10) .aspx

1
Rickjaah

Ce que je suggérerais:

  • Testez localement sur un serveur de développement avant de télécharger les modifications. N'effectuez les modifications sur un serveur actif que lorsque vous êtes raisonnablement sûr que cela fonctionne sur le serveur de test.
  • Effectuez la maintenance au moment le moins chargé. Pour la plupart des sites Web, cela se fera tôt le matin, le week-end. Si les week-ends ne sont pas une option, faites-le pendant la période la moins traitée au cours de la semaine.
  • Avertissez vos utilisateurs de la maintenance planifiée à l'avance.
0
Virtuosi Media