103 votes

Façon dont vous déployez vos applications ASP.NET à vivre des serveurs ?

Je suis à la recherche de différentes techniques/outils que vous utilisez pour déployer un ASP.NET projet d'application web (PAS ASP.NET site web) à la production?

Je suis particulièrement intéressé de le flux de travail qui se passe entre le moment de votre version d'Intégration Continue server supprime les fichiers binaires à un certain endroit et le moment de la première demande de l'utilisateur frappe ces binaires.

  1. Êtes-vous à l'aide de certains outils spécifiques ou tout simplement XCOPY? Comment est l'application emballés (ZIP, MSI, ...)?

  2. Lorsqu'une application est déployée pour la première fois comment le programme d'installation de l'Application de la Piscine et d'un Répertoire Virtuel (ne vous créez manuellement ou avec un outil)?

  3. Lorsqu'une ressource statique changements (CSS, JS ou un fichier d'image) ne vous redéployer l'ensemble de l'application ou seulement la modification de la ressource? Comment savoir quand un assembly/page ASPX changements?

  4. Avez-vous garder une trace de toutes les versions déployées pour une application donnée et dans le cas où quelque chose va mal, avez-vous des procédures de restauration de l'application d'un précédent état de marche connu?

N'hésitez pas à terminer la liste précédente.


Et voici ce qui nous permet de déployer notre ASP.NET applications:

  1. Nous ajoutons un Projet de Déploiement Web de la solution et de le configurer pour construire le ASP.NET application web
  2. Nous ajoutons un Projet d'Installation (PAS de Projet d'Installation Web) à la solution et le configurer pour prendre la sortie de la Projet de Déploiement Web
  3. Nous ajoutons une installation personnalisée d'action et dans le OnInstall événement, nous avons exécuté une version personnalisée .NET de l'assemblée qui crée une Application d'une Piscine et d'un Répertoire Virtuel dans IIS à l'aide du Système.DirectoryServices.DirectoryEntry (Cette tâche est effectuée uniquement la première fois qu'une application est déployée). Nous avons le soutien de plusieurs Sites Web dans IIS, l'Authentification pour les Répertoires Virtuels et la définition des identités pour les Pools d'Application.
  4. Nous avons ajouter une tâche personnalisée dans TFS pour construire le Projet d'Installation (TFS ne prend pas en charge les Projets d'Installation nous avons donc dû utiliser devenv.exe pour construire le MSI)
  5. La MSI est installé sur le serveur live (si il y a une version précédente de la MSI c'est d'abord désinstallé)

25voto

Kevin Points 57797

Nous avons tous notre code déployé dans MSI à l’aide de Setup Factory. Si quelque chose doit changer, nous redéployer l’ensemble de la solution. Cela semble exagéré pour un fichier css, mais il absolument synchronise tous les environnements, et nous savons exactement ce qui est en production (nous déployer à tous les environnements de test et uat de la même façon).

19voto

Marc Gravell Points 482669

Nous ne roulement de déploiement pour les serveurs, donc nous n'utilisons pas d'installateur de projets; nous avons quelque chose de plus comme CI:

  • "live" build-serveur construit à partir de la approuvées source (pas la "TÊTE" de l'opération)
  • (après qu'il ait effectué une sauvegarde ;-p)
  • robocopy publie à un serveur intermédiaire ("live", mais pas dans le F5 cluster)
  • final de validation sur le serveur de test, souvent avec des "hôtes" hacks pour émuler l'ensemble de la chose d'aussi près que possible
  • robocopy /L est automatiquement utilisée pour distribuer une liste des modifications apportées dans le prochain "push", pour alerter de tout fait une grosse bêtise
  • dans le cadre d'un processus planifié, le cluster est de moindre qualité, le déploiement de nœuds dans le cluster via robocopy (alors qu'ils sont hors de la grappe)

robocopy veille automatiquement à ce que seules les modifications sont déployés.

Re l'Application de la Piscine etc; j' aime ce automatisé (voir cette question), mais pour le moment il est manuel. J'ai vraiment envie de changer, cependant.

(il contribue probablement que nous avons notre propre centre de données et le serveur de la ferme "sur site", afin de ne pas avoir à traverser de nombreux obstacles)

7voto

kape123 Points 6369

Site web

Deployer: http://www.codeproject.com/KB/install/deployer.aspx

J'ai publication du site web dans un dossier local, zip, puis le télécharger sur le FTP. Deployer sur le serveur puis extrait zip, remplace config valeurs (dans le Web.Config et autres fichiers), et c'est tout.

Bien sûr, pour la première exécution, vous devez vous connecter au serveur et configuration de IIS Site web, base de données, mais après que la publication de mises à jour est du gâteau.

Base de données

Pour garder les bases de données de synchronisation-je utiliser http://www.red-gate.com/products/sql-development/sql-compare/

Si le serveur est derrière un tas de routeurs et vous ne pouvez pas connecter directement (ce qui est le besoin de SQL Comparer), l'utilisation https://secure.logmein.com/products/hamachi2/ pour créer un VPN.

5voto

Justin Points 5321

- Je déployer surtout ASP.NET les applications pour les serveurs Linux et de redéployer tout de même le plus petit changement. Voici mon flux de travail standard:

  • J'utilise un référentiel de code source (comme Subversion)
  • Sur le serveur, j'ai un script bash qui effectue les opérations suivantes:
    • Vérifie le code plus tard
    • Un build (crée la Dll)
    • Les filtres de fichiers à l'essentiel (supprime les fichiers de code par exemple)
    • Sauvegarde de la base de données
    • Déploie les fichiers sur le serveur web dans un répertoire nommé avec la date actuelle
    • Les mises à jour de la base de données si un nouveau schéma est inclus dans le déploiement
    • Fait de la nouvelle installation par défaut de sorte qu'il sera servi avec le prochain coup

La caisse est fait avec la version ligne de commande de Subversion et de la construction se fait avec xbuild (msbuild travail comme de la Mono projet). La plupart de la magie se fait dans ReleaseIt.

Sur mon serveur de dev j'ai, pour l'essentiel, l'intégration continue, mais du côté de la production j'ai fait un SSH sur le serveur et de lancer le déploiement manuellement en exécutant le script. Mon script est habilement appelé "déployer" donc c'est ce que j'tapez à l'invite bash. Je suis très créative. Pas.

Dans la production, j'ai du type "déployer" deux fois: une fois pour le check-out, de construire et de déployer une datée du répertoire et une fois de faire que le répertoire de l'instance par défaut. Depuis les répertoires sont datés, je peux revenir à tout déploiement précédent, simplement en tapant "à déployer" de dans le répertoire correspondant.

Déploiement Initial prend que quelques minutes et le retour à une version antérieure prend que quelques secondes.

Il a été une belle solution pour moi et ne repose que sur les trois utilitaires de ligne de commande (svn, xbuild, et releaseit), la DB client, SSH, et Bash.

J'ai vraiment besoin de mettre à jour la copie de ReleaseIt sur CodePlex parfois:

http://releaseit.codeplex.com/

4voto

Tundey Points 2145

Simple XCopy pour ASP.NET. Zip-up, sftp au serveur, extraire au bon endroit. Pour le premier déploiement, configuration manuelle d'IIS

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X