web-dev-qa-db-fra.com

Alternative au codage directement sur le serveur?

Nous avons un grand site web fabriqué dans PHP exécutant dans Apache sous Linux. Il existe des programmeurs ainsi que des utilisateurs non techniques modifiant le site Web tous les jours et que nous le faisons directement sur le serveur de test.

Y a-t-il une alternative à la modification des fichiers directement sur le serveur?

Bien sûr, les programmeurs peuvent tous configurer une instance Apache sur leur machine et la gérer, mais cela a un peu de problèmes car nous ajoutons parfois une nouvelle extension à PHP ou modifier la configuration à Apache, ce qui signifie que tout le monde a besoin de Pour changer ces choses manuellement. En outre, il n'est pas réaliste de s'attendre à ce que nos utilisateurs non techniques gèrent leur propre instance Apache.

Un autre problème est que nous sommes tous sur l'ordinateur Windows, mais le site Web fonctionne sous Linux. Le code n'est pas compatible avec Windows, de sorte que c'est un autre problème. La commutation complètement à Linux n'est pas une option que nous utilisons de nombreux programmes qui s'exécute uniquement sur Windows pour d'autres tâches. Il aurait donc besoin d'être une double démarrage ou une machine virtuelle.

Il se sent étrange de travailler directement sur le serveur, mais est-ce le meilleur moyen d'aller dans notre cas?

12
Gudradain

Utilisez Vagrant pour configurer l'environnement qui reflète les paramètres du serveur et laissez-les y jouer.

Comment obtenir des choses sur le serveur, il s'agit de déploiement, cette partie est répondue bien par @antlersoft, avec la mise en garde: je ne crois pas que vous puissiez persuader les utilisateurs non techniques d'utiliser le contrôle de la source (et que Git est l'un des plus difficiles. ceux). Si vous avez besoin d'utilisateurs non techniques pour changer Web, investir du temps et de l'argent pour trouver le CMS approprié et utiliser cela.

19
herby

Une flotte de machines virtuelles sur un hôte, chaque utilisateur a sa propre instance à jouer, puis appuyez sur là au référentiel principal et effectuez la mise à jour du serveur de test réel à partir de là.

N'essayez pas d'introduire GIT aux utilisateurs non techniques, vous risquez de vous retrouver avec une hache dans votre crâne un jour. :-) Même pour les développeurs de pouvoir qui l'utilisent tous les jours, il ajoute un niveau de complexité aussi élevé qu'ils échouent. Les outils comme Sourcetree sont sympas, mais ils ne vous protègent toujours pas de la vissage.

Le contrôle de la version la plus conviviale que j'ai expérimentée jusqu'à présent est TortoiseSVN, même les utilisateurs non techniques comprennent les commandes SVN UP et SVN SVN lorsqu'ils l'obtiennent présentées dans une interface graphique propre.

12
user203035

La réponse à votre problème est double.

TL; DR: Utilisez DTAP et implémentez un VCS.

Premièrement, dans un environnement d'entreprise que vous jamais veulent coder directement sur le serveur. Même si ce n'est pas l'environnement en direct, avoir plusieurs personnes éditées de fichiers sur le même environnement vous permettent de très fortes changements contradictoires, ce qui conduit à des résultats imprévisibles. La mise en œuvre entièrement de DTAP vous aidera à résoudre ce problème.

DTAP signifie "Développement, test, acceptation, production" et est utilisé pour décrire un système où vous avez 4 emplacements distincts où le code peut être. La séparation est conçue pour protéger la production de plus de problèmes possibles que possible:

D'abord, le code est exécuté et testé sur le développement (qui peut être une machine séparée, mais est souvent simplement le propre PC du développeur). Si le développeur est satisfait de son travail, le code passe à l'environnement de test, où quelqu'un d'autre (idéalement un testeur dédié mais un autre développeur peut travailler) essayer le code. Si cette phase de test ne trouve aucun problème, le code passe à l'acceptation, où le côté "Affaires" de la société testera le code. Cela peut être votre client si votre entreprise établit un produit pour une autre partie ou peut être un département différent en contact avec ce que le produit devrait faire pour correspondre aux besoins des clients finaux. Seulement s'ils == accepter Le code sera le code passer dans l'environnement de production, qui est l'environnement en direct.

Deuxièmement, pour suivre les changements et prévenir les problèmes qui se posent lorsque plusieurs personnes modifient simultanément la même zone du code, vous devez implémenter un système de contrôle VCS (Version Control) dans votre organisation qui gardera la trace de tous les changements. à tous les fichiers (des exemples sont SVN, Git et Mercurial). Ces systèmes vous permettront également de faire rouler des modifications si elle s'avère que vous avez commis une erreur. Pour faciliter la vie, cela pourrait être utile d'utiliser votre système de choix avec un compte à un service comme Bitbucket qui vous permettra d'utiliser leur interface pour le processus de combinaison d'un travail de développeur avec un autre. Tous vos développeurs devront convenir de la stratégie spécifique à utiliser pour la fusion du code dans l'état qui passera du développement à l'environnement suivant, mais je ne surchargerai pas ma réponse avec cela.

Lorsque vous dites que les personnes non techniques modifient l'environnement de test, j'espère que vous voulez dire qu'ils apportent des modifications à la configuration et/ou au contenu, pas aux fichiers réels. Les personnes non techniques devraient jamais toucher le code du site Web, après tout, s'ils ne savent pas ce qu'ils font, ils pourraient accidentellement casser quelque chose!

En ce qui concerne la question de la compatibilité et la déclaration selon laquelle les personnes non techniques ne peuvent pas être censées conserver leur propre serveur Apache, plusieurs options que je peux voir. Une option consiste à avoir une personne gérer l'installation de ces serveurs pour toutes les parties concernées, mais cela peut être un travail à temps plein et cela pourrait ne pas correspondre à votre organisation d'avoir une telle personne. L'alternative consiste à utiliser l'un des outils disponibles tels que Vagrant ou Docker, qui permettra à une personne technique de créer une "image" qui aura l'environnement de travail (qui sera généralement basé sur Linux) et que l'image peut être distribuée à tous les Développeurs afin qu'ils puissent l'exécuter sur leur propre machine. Si les mises à jour de l'architecture doivent être effectuées, cette personne met à jour l'image et la distribue à nouveau aux développeurs.

avis personnel: Du poste original, je déduis que votre entreprise a passé l'état de "Seules 2 personnes travaillent sur le site de toute façon donc qu'il ne le fait pas Peu importe ce que nous faisons ". Ces concepts que je propose sont largement acceptés comme des bonnes pratiques, comme vous pouvez le constater de mon explication, vous obtiendrez beaucoup de contrôles supplémentaires de la qualité du produit, au compromis de l'introduction d'une complexité supplémentaire relativement légère à votre processus. Un système de contrôle de version comme Git ou Mercurial peut sembler intimidant, mais à mon avis, avec une formation littéralement, tout le monde peut apprendre à travailler correctement. Tout ce qu'il faut, c'est une attitude de volonté d'apprendre au lieu de voir le système comme un ennemi qui vous empêche de faire votre travail, ce dernier qui est malheureusement beaucoup plus commun que cela devrait être. En apprenant à utiliser l'outil correctement, vous vous sauverez à l'heure que vous devriez dépenser pour corriger les erreurs et trier manuellement la manière dont le travail de plusieurs personnes doit être combiné dans le code.

10
Cronax

Tout d'abord, le contrôle de la version est un must. Mais de plus, les changements doivent être testés avant qu'ils ne soient commis. Et pour ces modifications, chaque utilisateur a besoin de son propre environnement de test. Donc, codant directement sur le Server n'est pas une bonne idée.

La quantité de séparation dont vous avez besoin entre l'environnement de test de chaque utilisateur dépend de vos besoins spécifiques. Pour certaines tâches simples, vous pouvez obtenir une séparation suffisante en ayant un serveur de test partagé exécutant un Vhost par utilisateur. Si vous avez besoin de plus de séparation, vous pouvez configurer un VPS par utilisateur.

Pour les tâches les plus exigeantes, vous aurez peut-être besoin d'une machine physique dédiée par utilisateur. Si cela signifie que vous devez acheter une autre machine physique pour certains utilisateurs, vous devez décider si vous souhaitez que l'autre machine soit située au bureau de l'utilisateur ou dans un rack serveur.

J'ai vu des utilisateurs gâchés commettant dans chaque système de contrôle de version que j'ai jamais travaillé avec. Certaines personnes sont capables d'apprendre à travailler correctement avec un système de contrôle de la version, d'autres personnes ne le sont pas. Si vous avez des personnes non techniques qui doivent modifier une partie de la base de code, mais vous ne pouvez pas apprendre à utiliser la version de la version, une autre option mérite d'être envisagée.

Vous pouvez laisser les développeurs avoir accès aux machines de test de la personne non technique (soit en tant que connexion de shell ou via un système de fichiers réseau), de sorte qu'une fois qu'un changement soit prêt, la personne non technique peut demander à un développeur de commettre le changement.

3
kasperd