2010-01-12 4 views
2

Je viens de commencer à travailler pour une nouvelle entreprise en tant que développeur web interne. Jusqu'à présent, ils ont externalisé le travail de développement de leurs sites Web et ont décidé de les apporter à l'interne, d'où mon emploi.Meilleure pratique pour configurer Apache et SVN pour plusieurs sites et utilisateurs?

Je n'ai travaillé que sur des projets et n'ai jamais utilisé le contrôle de version.

Nous venons d'embaucher un autre développeur Web pour travailler à mes côtés et on m'a demandé de me pencher sur le contrôle de version, car il y aura jusqu'à 4 personnes qui ont besoin d'accéder aux fichiers du site Web.

Je suis complètement dépassé en ce qui concerne l'obtention d'une bonne configuration des sites Apache lors de l'exécution sous contrôle de version.

Nous avons actuellement un serveur Web de développement local exécutant Ubuntu et Apache2 et un serveur Web en direct dans un centre de données. Le serveur local héberge plusieurs sites Web ayant chacun un sous-dossier dans la racine Web, à savoir/home/htdocs/sitename_com et/home/htdocs/sitename2_com. Nous éditons actuellement des fichiers de sites Web sur PC en utilisant des partages samba ou FTP. Ce que je veux faire est d'installer SVN afin que les utilisateurs puissent extraire une copie de travail du code d'un seul site, apporter des modifications et ensuite valider les modifications dans le référentiel. Nous aurions alors besoin de pouvoir tester les sites et ensuite, quand nous serions heureux de transférer les fichiers sur notre serveur live.

Maintenant, je me suis vite rendu compte de la configuration de SVN que lorsqu'un utilisateur extrait une copie de travail sur sa machine, il ne peut pas réellement tester les modifications avant de les remettre dans le référentiel. C'est parce que les fichiers sont en PHP et doivent être exécutés via un serveur web. Maintenant, je pourrais simplement mettre XAMP sur chaque machine, mais cela aurait une configuration différente de l'installation d'Apache2 sur le serveur de développement. Ce n'est pas une option pour moi. Je suppose que les copies de travail ne doivent pas être créées sur la machine de l'utilisateur, mais à l'intérieur de la racine web du serveur de développement, c'est le même serveur que le référentiel lui-même. Je pourrais créer un partage de samba au dossier de copie de travail d'utilisateurs afin qu'ils puissent faire des changements de leur machine de fenêtres.

J'ai quelques questions:

  1. Pouvez-vous voir un site Web stocké dans un référentiel dans le navigateur sans avoir à vérifier d'abord?
  2. Si non, le site devra être extrait à un emplacement dans la racine web du même serveur?
  3. Dois-je utiliser un référentiel pour chaque site ou référentiel avec des sous-dossiers pour chaque site?
  4. Lorsqu'un utilisateur valide les modifications qu'il a apportées à une copie de travail vers le référentiel, nous devons tester ces modifications et les modifications de tous les autres qui ont été validées. Est-il possible d'obtenir SVN pour copier les modifications validées dans une zone de transit dans la racine Web pour le test?

Ou est-il une meilleure façon de le faire?

Je n'arrive pas à trouver des informations claires sur Internet concernant les meilleures pratiques lors de la configuration de SVN pour les sites Web. Il est clair comment SVN se rapporte au code source d'une application C++ où vous compilez simplement votre copie de travail sur votre machine pour le tester mais les sites Web doivent fonctionner sur un serveur Web et chaque copie de travail doit être testée sur le serveur web avant de revenir dans le référentiel.

Les sont plusieurs sites sur le serveur avec plusieurs utilisateurs travaillant sur chaque site.Nous devons être en mesure de travailler sur les sites en même temps, tester tous les changements dans une zone de transit et aimerions également une zone en direct où nous aurons un miroir exact du site en direct où nous pouvons fusionner tous les changements et tester avant télécharger sur le serveur en direct.

Tous les exemples que j'ai trouvés sur Internet utilisent des exemples d'un seul serveur hébergeant un seul site. Dans mon cas, notre serveur live héberge environ 10 sites.

Si quelqu'un pouvait me donner des conseils sur la façon de configurer ceci, la structure du répertoire Apache, la structure du référentiel, etc. Je l'apprécierais vraiment.

Merci d'avance!

Répondre

1

Nous avons eu des besoins similaires et fait ce qui suit:

  • Mettre en place un serveur SVN (Git est une option, mais trop complexe dans ce cas, car il n'y avait pas de bonnes interfaces graphiques disponibles à l'époque) - nous utilisent le svn-daemon fourni avec SVN.
  • Configurez le serveur Web de test, en exécutant le logiciel dont vous avez besoin (Apache, etc.).
  • Avoir les utilisateurs mise à jour et valider leurs modifications vers et depuis le référentiel SVN.
  • Configurez un script simple qui ressemble au script suivant. Fondamentalement tirant toutes les modifications du serveur SVN toutes les heures (ou chaque fois que nécessaire).

    cd /var/www/testdata/

    svn update -f

Auparavant, vous avez à checkout le dépôt, bien sûr.

Vous n'avez pas à vous soucier de l'écrasement mutuel des utilisateurs. SVN détecte cela et oblige l'utilisateur qui valide les modifications en collision à les fusionner).

Cela permettrait de tester rapidement les modifications apportées. En option, vous pouvez également installer Redmine, qui s'intègre étroitement avec SVN, vous permettant d'intégrer étroitement le référentiel SVN avec des tickets et des rapports de bogues.


Cela ressemble presque à ce que vous avez besoin de Git. Git permet des branches séparées (par exemple, pour chaque utilisateur, ou fonctionnalité qui est implémentée) qui sont fusionnées lorsqu'elles sont prêtes. Si vous voulez revoir chaque commit, vous pouvez alternativement vérifier chaque commit/révision dans son propre sous-web direct, ce qui vous permettra d'accéder à l'état du code source de chaque commit en utilisant votre navigateur web.

Mais un script côté serveur est nécessaire dans tous les cas.

Questions connexes