Comment déployer un site web pour votre site?

à mon entreprise, nous avons un groupe de 8 développeurs web pour notre site web d'affaires (entièrement écrit en PHP, mais cela ne devrait pas avoir d'importance). Tout le monde dans le groupe travaille sur différents projets en même temps et chaque fois qu'ils en ont fini avec leur tâche, ils le déploient immédiatement (parce que les affaires se déplacent rapidement ces jours-ci).

actuellement le développement se produit sur un serveur partagé avec tous les développeurs travaillant sur la même base de code (en utilisant RCS pour "verrouiller" les fichiers des autres). Lorsque le déploiement est dû, les fichiers modifiés sont copiés sur un serveur de "mise en scène", puis un script de synchronisation télécharge les fichiers vers notre serveur web principal d'où ils sont distribués sur les 9 autres serveurs.

fort heureusement, l'équipe de web dev nous a demandé de l'aide afin d'améliorer le processus (après nous être plaints pendant un certain temps) et maintenant notre idée pour mettre en place leur environnement dev est la suivante:

  • un serveur dev avec des répertoires virtuels, de sorte que chacun ait son propre base de code,
  • SVN (ou tout autre VCS) pour garder la trace des modifications
  • un serveur central pour les tests contenant le code le plus récent

la question est maintenant: Comment Pouvons-nous déployer les fichiers modifiés sur le serveur sans télécharger accidentellement des bogues d'autres projets? Mon idée première était simplement d'exporter la dernière révision du dépôt, mais cela ne donnerait pas un contrôle total sur les fichiers.

comment gérer une telle situation? Quels types de scénarios de déploiement avez-vous en action?

(comme un défi spécial: le site web s'est développé organiquement au cours des 10 dernières années, de sorte que les projets ne sont pas divisés en petits morceaux, mais les fichiers pour une fonctionnalité spécifique sont répartis sur toute l'arborescence des répertoires.)

14
demandé sur Vadim Kotov 2009-02-05 13:16:33

7 réponses

Casy-vous avez évidemment un long chemin à parcourir avant de mettre la gestion de votre code source en ordre, mais il semble que vous êtes en route!

avoir des bacs à sable individuels aidera certainement sur les choses. Ensuite, assurez-vous que le site web est toujours juste une sortie nette d'une révision, d'une balise ou d'une branche particulière de subversion.

Nous utilisons git, mais nous avons une configuration similaire. Nous tag une version particulière avec un numéro de version (git nous pouvons aussi ajouter une description de la balise; bon pour les notes de version!) et ensuite nous avons un script que n'importe qui ayant accès à "faire une version" peut exécuter qui prend deux paramètres -- quel système va être mis à jour (le datacenter et si nous mettons à jour le test ou le serveur de production) et puis le numéro de version (la balise).

Le script utilise sudo pour ensuite exécuter le script de sortie dans un compte partagé. Il fait une vérification de la version pertinente, minimise javascript et CSS1, pousse le code aux serveurs appropriés pour l'environnement et redémarre ce qui doit être redémarré. La dernière ligne du script de publication se connecte à l'un des serveurs web et renvoie le journal des erreurs.

notre sites web nous incluons un commentaire html au bas de chaque page avec le nom du serveur courant et la version -- rend facile de voir "Qu'est-ce qui fonctionne en ce moment?"

1 et un tas d'autres tâches d'entretien comme que...

10
répondu Ask Bjørn Hansen 2009-02-05 10:35:09

vous devriez envisager d'utiliser la ramification et la fusion pour des projets individuels (sur la même base de codes), s'ils apportent d'énormes changements à la base de codes partagée.

nous avons habituellement un environnement de développement local pour tester (c'est-à-dire un serveur web local) le code non engagé (vous ne voulez pas du tout propager le code qui ne fonctionne pas), mais cet environnement de développement peut même être sur un serveur séparé utilisant des dossiers partagés.

cependant, le code engagé, devrait être déployé à une étape serveur de test avant de le mettre en production.

2
répondu jishi 2009-02-05 10:37:00

vous pouvez probablement utiliser Capistrano même si est plus pour ruby il ya certains articles qui décrivent comment l'utiliser PHP

je pense que Phing peut être utiliser avec CVS, mais pas avec SVN (à moins que ce dernier, j'ai lu)

il y a aussi un projet autour de cette imitation de Capistrano mais écrit en PHP.

sinon il y a aussi une solution sur mesure :

  1. tags fichiers que vous voulez déployer.
  2. fichiers de caisse à l'aide de la balise

    répertoire spécifique
  3. lien symbolique du répertoire du répertoire courant la racine du document (facile pour le rollback la version précédente)
1
répondu stunti 2009-02-05 10:35:58

Naturellement découvrez SVN pour le référentiel, Trac suivre les choses, et Apache Ant à déployer.

le processus de base est la gestion dans Subversion, le suivi de la repolitroy et des développeurs dans Trac et l'utilisation de scripts de déploiement Ant pour pousser votre site avec les paramètres nécessaires. Ant vous permettant de déployer facilement un projet à un emplacement spécifique. (Dev / test / prod)etc.

1
répondu Syntax 2009-02-05 13:53:07

Vous avez besoin de regarder:

  • Intégration Continue
  • exécution de tests unitaires lors de l'enregistrement du code pour vérifier qu'il n'y a pas de bogue
  • rejette potentiellement le code s'il contient un bug
  • Avoir les nightly builds
  • ne libère que la dernière génération qui a été exempt de bugs

vous ne pouvez pas obtenir une solution parfaite, surtout pas au début, mais plus vous utilisez votre solution choisie, plus Tout le monde sera à l'aise et être en mesure de faire des suggestions pour l'améliorer.

0
répondu cjk 2009-02-05 10:21:24

nous vérifions la stabilité avec ant, chaque nuit. Et utilisez le script ant pour déployer. Il est très facile à configurer et à utiliser.

0
répondu Techmaddy 2009-02-05 10:23:29

j'ai donné un similaire réponse hier à une autre question. Fondamentalement, vous pouvez travailler dans les branches et intégrer avant d'aller en direct.

La plus grande chose que vous devez obtenir votre tête ronde, c'est que vous avez affaire avec change aux fichiers, plutôt qu'aux fichiers individuels. Une fois que vous avez des branches, il n'y a pas vraiment de version actuelle, il y a juste des versions avec des modifications différentes.

0
répondu Jeremy French 2017-05-23 12:12:57