Vous pouvez centraliser votre code dans un dossier commun (soit créer un script qui copie tout le code pour le 8 serveurs ou utiliser NFS).
Cette centralisée code peut être dans un ou plusieurs dépôt dans votre SVN. Ainsi, lorsque vous poussez), vous ne poussez ce dont vous avez besoin pour pousser.
Par exemple, vous pouvez créer 1 référentiel pour vos propres bibliothèques PHP (classe de base de données, xml , imap, etc...). Dans une structure simple et lorsque vous appelez ces fichiers, vous pouvez tout simplement faire:
require('/web/lib/DatabaseMySQL.class.php');
De cette façon, vous savez que tous vos fichiers au même endroit et très facile à entretenir. Spécialement si votre code exige que les fichiers requis requiert des fichiers.
Vous pouvez créer autant de référentiel que vous voulez et répétez cette procédure si vous ne voulez pas mélanger les fichiers, par exemple le tiers (Smarty, phpmailer) avec le code que vous créez.
L'autre chose est, ne pas réinventer la roue. Il y a beaucoup de bons code qui est probablement ce que vous devez faire. Comme l'envoi d'e-mail (phpmailer ou autres) ou système de template (Smarty ou autres). De cette façon, vous avez même le temps de développement, et lorsqu'une mise à jour si elle est disponible, il vous suffit de télécharger, copier (à l'engager si vous l'avez dans un référentiel) et de pousser.
Script VS NFS.
Créer un script pour pousser tout votre code à 8 serveurs web est facile à faire. L'inconvénient de cette est que vous devez vous assurer que tous les dossiers et tous les fichiers que vous avez sur chaque serveurs sont identiques afin d'éviter les erreurs. Aussi, si il y a un décalage sur votre réseau ou de perte de connexion pendant le pousser certains serveurs n'aient pas le même code. Encore une fois, plus d'erreurs. C'est un peu plus rapide à exécuter par rapport à la NFS solution.
Créer un NFS résoudre le problème ci-dessus, puisque vous n'utilisez 1 emplacement, mais si cet emplacement déposer l'ensemble de vos serveurs ne fonctionnent pas correctement. Donc, lorsque vous appuyez sur le code, vous appuyez uniquement à 1 place et tous les autres serveurs automatiquement le nouveau code. Quelque chose que vous devez savoir aussi, ce sera un peu plus lent que si le code est directement sur le disque dur.
Voici un exemple de script que vous pouvez utiliser:
Vous pouvez créer un .sh script qui va copier le code à partir de votre référentiel (par exemple, le code que vous avez extrait à partir du référentiel) pour tous les serveur comme ceci:
// file: pushcode.sh
#!/bin/bash
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ user@server1:/path/to/code
/usr/bin/rsync -avz --exclude='.svn' -e ssh /path/to/code/checkedout/ user@server2:/path/to/code
rendre ce script exécutable et le lancer:
./pushcode.sh
Assurez-vous que le code à copier correctement sans demander le mot de passe à chaque fois, vous devrez contourner la connexion ssh.
Voici un bon que vous aimerez: http://serverfault.com/questions/195035/linux-nfs-performance-vs-other-fss