Je travaille sur une jolie petite application web, et nous sommes en train de travailler sur l'amélioration de notre déploiement (amélioration de "passer une journée à la configuration de tous les modules dont nous avons besoin sur Windows et ensuite jeter les fichiers à elle jusqu'à ce que tout fonctionne", de sorte que certains d'amélioration).
Nous avons trois choses que nous devons faire pour mettre en place notre site internet:
- Un module Perl fait à l'aide de
Module::Starter
, contenant un Config
module qui détient l'ensemble du site, les options de configuration. Lors de l'installation, ce module (à l'aide d' MakeMaker
s' PREREQ_PM
afin de vérifier que tous les modules dont nous avons besoin ont déjà été installés). Tous les modules qui n'ont pas besoin d'être installé avant ce module peut être installé.
- Un peu de SQL fichiers qui doivent être exécutées pour configurer la base de données.
- Le Perl CGI fichiers qui composent le site. Aussi longtemps que Apache est fait pour eux, le site "fonctionne". Cela comprend le commun des modules de code utilisé par tous les fichiers Perl.
Le déploiement consiste en me tirant de tout le monde branches Git et de l'emballage d'une version. On peut ensuite remettre ce fil pour des tests en local, ou sur une instance Amazon EC2. Une fois que nous sommes bons à la libération, soit nous installer sur la dernière version, ou de déplacer la base de données sur les essais d'instance et de faire que la nouvelle instance.
De les comparer à vos critères:
- Contrôle de bibliothèques: un Peu. Nous utilisons des modules de CPAN assez largement. Pour essayer une nouvelle version, nous mettons à jour notre propre version d'un module avant de faire cette mise à niveau sur le serveur de production. Nous maintenir manuellement une liste, mais depuis notre base de code est assez petit, il n'est pas difficile de comprendre quels sont les modules utilisés (via
grep
ing pour les lignes commençant par use
, par exemple).
- Makefile/Construire l'intégration: Oui. Tout Makefile choses liées à des UE::MM l'installation. Nous n'avons pas le mondial des tests, mais depuis l'ensemble de notre suite de test récemment retrouvé dans un dossier, j'espère que nous allons bientôt avoir quelque chose que vous pouvez exécuter
prove
sur directement.
- Le contrôle de Version de l'environnement: Oui. L'ensemble de notre code source est contenue dans un seul dossier, sans trop de doublons.
- La croix-plate-forme: Oui. Nous avons beaucoup de choses bizarres qui se passaient dans MakeMaker pour nous permettre de faire cela, mais comme une startup, avoir de la croix-plate-forme de code nous donne une grande flexibilité. Nous essayons d'utiliser Perl modules de base et des outils, et Pur Perl modules du CPAN, autant que possible.
- Seul Perl installer: Oui. Nous pouvons nous occuper de Perl être n'importe où, et installé dans les paramètres, tant que tous en Perl propre module outils de travail - il y a eu beaucoup d'efforts mis en obtenant
CPAN
, EU::MM
et les autres fonctionnent bien sur tous les systèmes, et il semble dommage de le gaspiller.
- Démarrage simple: Pas vraiment. Ce système a évolué (c'est à dire: n'a pas été conçu de manière intelligente) à partir d'un dossier unique de tous les fichiers source et un fichier texte avec une liste de modules qui doivent être installés. Alors que l'officialisation de test pour les modules installés est une énorme amélioration, il faut encore nous quelque chose comme un jour de cette série, consacrée principalement l'installation de notre condition modules (pas tous d'entre eux sont faciles à installer sur Windows). Je suis l'espoir d'utiliser le Perl Win32 communauté pour essayer et obtenir de problèmes avec la problématique des modules de CPAN aplanies.
Rappelez-vous, il est vraiment simple site web, pas de XS, compliqué framework web, ou une telle. Nous avons également pris en charge uniquement cette configuration par le biais de sur les deux versions, donc nous n'avons pas assez d'expérience sur la manière dont cela va fonctionner comme le code devient plus compliqué et nos plates-formes de déploiement devenir de plus en plus varié. J'apprécierais vraiment des suggestions ou des commentaires sur notre système.