2015-08-13 1 views
0

J'ai un gros problème en essayant de trouver un moyen de structurer mon application pour la mise à l'échelle. Voici ma configuration actuelle:Structure Application PHP pour une mise à niveau et une mise à l'échelle faciles?

Nous avons une application écrite en PHP et MySQL. L'application est écrite de telle sorte qu'elle peut, en théorie, servir des milliers de sites Web différents en utilisant le même code (mais chacun aura une base de données différente).

  1. Dans notre configuration actuelle, nous avons 1 fichier de configuration nginx par 1 site, tous les pointant vers le même endroit permet de dire/var/www/version actuelle. Nous avons un moyen de savoir quel site Web est censé être rendu.

  2. Chaque fois que nous mettons à jour, nous mettons à jour le code/var/www/nouvelle version

  3. Copier tout le code de/var/www/courant version// var/www/vieux/

  4. point tous les projets en cours de courant/à l'ancienne/par la recherche et le remplacement de tous les fichiers de configuration nginx et faire un reload le service

  5. Copiez le code de la nouvelle/à/heure actuelle

  6. boucle throug h les sites à

    • modifier le fichier de configuration nginx correspondant au point au courant/dossier
    • synchronisation les nouveaux fichiers de configuration mis à jour sur toutes les instances
    • script mise à jour de l'exécution (nous devons le faire parce que la mise à niveau processus peut impliquer la migration db et plusieurs autres)

Ce processus de mise à niveau implique un certain quelques pas et est soumis à certaines questions telles que lorsque la synchronisation ne se produit pas fa st assez.

Je me demande s'il y a une meilleure façon de le faire?

PS: Je ne suis pas sûr si c'est le meilleur endroit pour poser ce genre de question, stcchangexchange a trop de sous-sites et je suis confus. De toute façon, s'il vous plaît n'hésitez pas à me faire savoir si je poste au mauvais endroit

Répondre

0

Pourquoi ne pas simplement utiliser des liens symboliques? Par exemple, toutes les configurations nginx sont configurées dans/var/www/website, c'est-à-dire un lien symbolique vers/var/realdir/website_1_1_0. Vous déployez un nouveau code dans/var/realdir/website_1_2_0 et après il suffit de modifier un lien symbolique pour pointer vers ce nouveau répertoire.

+0

C'est une idée simple mais brillante. Cependant, j'ai un problème: Nous avons des milliers de sites utilisant la même base de code, mais quand nous mettons à niveau nous ne pouvons pas simplement les mettre à jour en même temps (donc nous ne pouvons pas changer tout le code en une fois) il y a des chances que nous devons lancer la migration db sur chaque site. – mr1031011