2009-07-13 5 views
3

Je travaille actuellement dans une boutique en ligne avec presque aucun processus formel et un million de sites Web PHP, y compris des trucs délicats comme le CMS personnalisé et le code du panier.Meilleures pratiques du site Sandboxing?

Nous essayons d'améliorer les choses. Je pousse pour CVS/SVN.

Ma question est, quelle est la meilleure pratique pour le travail sur le site de sandbox? Nous sommes sur la pile LAMP. Certains de nos sites ont des liens codés en dur (ou des liens entrés par l'utilisateur) vers le domaine actuel, de sorte que la mise en place d'un domaine différent comme preview.mysite.com interrompra les liens pointant vers www.mysite.com. Si nous commençons à appliquer des tests de régression, peut-être que les domaines devraient être uniformes pour les tests? Cela peut toujours être fait avec une entrée d'hôte locale. Donc, étant donné que nous avons beaucoup de sites, il serait bien d'avoir un processus pour toujours faire une prévisualisation dans un sandbox approprié. Vous vous demandez comment cela pourrait s'intégrer avec un cycle SVN/CVS. Je cherche seulement les meilleures pratiques de l'industrie parce que nous essayons d'y arriver. Si cela signifie cloner un site vers un serveur supplémentaire, alors qu'il en soit ainsi.

Répondre

1

Alors oui, vous devriez avoir un second serveur STAGE. Ce que je fais, c'est mettre mon code dans CVS sur ma boîte de dev, et faire des commits réguliers au fur et à mesure. Quand je suis prêt à pousser une version sur le serveur « STAGE », je passe par les fichiers que je veux mettre en scène et de les marquer STAGE:

tag cvs -F STAGE

Ensuite, je vais au serveur STAGE et faire une mise à jour avec le drapeau STAGE pour obtenir la version STAGE de fichiers:

cvs up -r STAGE

Ceci définit également l'étiquette collante pour être « étape » sur ces fichiers, à l'avenir, je peux il suffit de laisser le tag STAGE lorsque je fais des mises à jour sur mon serveur de scène:

cvs up

enfin, quand je l'ai testé mon code sur le serveur STAGE, je roule sur le serveur de production en utilisant rsync ...

Nous avons plusieurs développeurs travaillant ensemble pour maintenir une version stable jusqu'à STAGE peut être difficile. Dans ce cas, si je n'ai que de petites modifications sur un ou deux fichiers, je vais les scp individuellement vers le serveur de production.

Enfin, pour être certain de savoir ce qui est disponible sur mes serveurs de production, après avoir envoyé un fichier ou des fichiers sur le serveur de production, je marque tous les fichiers sur mon serveur de scène comme RELEASE, et aussi comme RELEASE20090713 ou quelle que soit la date actuelle .. De cette façon j'ai des instantanés en mouvement si nécessaire. Notez cependant, cela ne met pas à jour l'étiquette collante, donc mes réguliers vieux

cvs up

sur le serveur de scène me fait toujours les derniers fichiers de scène. Maintenant, dans votre cas, dans la mesure où l'URL codée en dur ... Vous savez déjà ... mauvais mauvais mauvais ... alors corrigez-les au fur et à mesure ... Mais vous pourrez peut-être utiliser la réécriture d'URL apache pour réécrivez les URL sur STAGE pour parler à un port TCP personnalisé.

Si vous disposez d'un périphérique réseau intelligent comme un routeur Cisco, vous pouvez le configurer pour effectuer la traduction d'adresse de port (PAT) pour vos adresses IP. Le port 80 peut transférer vers votre serveur Web de production normal, et le port 8080 peut transférer vers votre serveur STAGE (son port 80).Ensuite, tout ce que vous faites est d'avoir apache faire une réécriture d'URL sur votre serveur STAGE et ajouter 8080 à tous les noms d'hôte qu'il voit. Maintenant, tous vos messages et liens iront vers les bons serveurs STAGE, et vos configs apache peuvent être exactement les mêmes.

1

En ce qui concerne les noms de domaine codés en dur (ou saisis par l'utilisateur): vous pouvez ajouter les domaines à votre hosts file. Cela devrait résoudre vos problèmes pendant le développement et la prévisualisation. Votre navigateur va récupérer l'adresse IP de www.mysite.com et trouver 127.0.0.1 ou l'adresse IP du site d'aperçu dans le fichier hosts. La partie délicate est que juste en regardant l'URL dans le navigateur, vous ne pouvez pas déterminer si vous regardez le site de production ou non. (Le ShowIP addon pour Firefox peut vous aider ici.)

En ce qui concerne CVS/SVN: Je voudrais vraiment vraiment vous conseille d'aller pour SVN. Il n'est pas plus difficile à utiliser que le format CSV mais présente certains avantages (par exemple, le renommage est possible). Pour plus d'informations, voir par ex. this question. En ce qui concerne la prévisualisation dans un bac à sable, voici ce que nous faisons: nous faisons la plupart de notre développement sur trunk (ou sur une branche, mais le reste du processus est presque le même). Une fois que nous sommes prêts à le montrer au client, nous créons un tag. Cette balise est utilisée pour mettre à jour le serveur de prévisualisation. Si le client n'est pas satisfait, nous développons un peu plus sur le tronc (ou la branche), créons un nouveau tag, mettons à jour l'aperçu avec le tag, etc. Une fois que le client est content, nous utilisons exactement la même balise le serveur de production. De cette façon, nous pouvons être sûrs que le serveur de prévisualisation et de production a la même base de code.