29 votes

organisation du code php

Nous avons juste obtenu de nouveaux serveurs pour notre nouveau système et je veux savoir ce que je dois faire pour que mon nouveau code aussi efficace que possible, et comment l'organiser.

Je veux une bonne solution donc je n'ai pas à ré-organiser 1 an à partir de maintenant (par exemple) et je veux les meilleures pratiques et techniques pour veiller à ce que mon code de survivre assez longtemps pour éviter redesining plus tard. pas de cadre d'utilisation ici

Voici mon nouveau env:

  • 8 serveurs web LAMP (apache 2, php 5.3.5, cent os 5) - (xeon E5645, 32go ram, raid 10 1T 15k) - 1 programme d'équilibrage de charge pour les gérer
  • 12 base de données mysql 5.5 serveurs (même que ci-dessus) avec la réplication (4 master, 8 esclaves)
  • 1 serveur svn (ancien serveur que nous utilisons)

Mon idée était de miroir (les serveurs web) et pousser le code à partir du SVN pour tous les serveurs. Est-ce bien?

36voto

Book Of Zeus Points 38130

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X