Comment effectuez-vous les repositorys de site Web de production IIS?

Donc, je ne sais pas s'il s'agit d'une question de débordement de stack ou d'une erreur de server. Si j'ai un site Web .NET que je souhaite déployer dans l'environnement de production, quel est le meilleur moyen de le faire. Devrais-je l'empackageer en tant que MSI & installer? Utilisez nant pour enfoncer les files nécessaires. Juste FTP les files en utilisant Beyond Compare?

Comment déployez-vous le code de production? Il s'agit d'un cas spécifique à Windows que je regarde ici.

IIS prend en charge le deployment de xcopy afin de simplement copyr les files devrait être tout ce dont vous avez besoin, sauf si vous avez des exigences particulières.

Une façon de le faire est un script simple qui utilise ROBOCOPY pour copyr les nouveaux files sur le server.

Si le site est grand et cela prend trop de time, utilisez un système de contrôle de version. J'aime Mercurial à cette fin, mais il faut faire attention à ce que les files de configuration du système de contrôle de version ne finissent pas par être diffusés au public. Le deployment est simplement une question de commettre les modifications, puis de vérifier la dernière version sur le server. En plus d'être efficace, cela permet des retards rapides (si vous avez marqué la dernière bonne version) dans le cas où votre plus récent et le plus grand a un bug de showtopper.

Pour minimiser les time d'arrêt, vous pouvez requestr au script de copyr les files dans un nouveau directory, puis renommer rapidement les directorys ou modifier l'endroit où IIS pointe vers le nouveau directory.

Envisager d'utiliser l' outil de deployment Web de Microsoft. Il a été spécifiquement conçu pour aider à déployer des applications Web et des mises à jour de ces applications Web vers la production de servers Web IIS 6 et 7 et il fait un meilleur travail de la tâche que MSI (Windows Installer), IMHO.

Normalement, vous l'utilisez en configurant un site "maître d'or" quelque part, puis en racontant l'outil pour faire les changements à partir de là. Il examinera alors un server cible pour le deployment et apportera les modifications nécessaires pour qu'il ressemble au maître d'or (ce qui est utile pour les mises à jour ultérieures). Il est particulièrement utile si vous déployez sur plusieurs servers Web (c.-à-d. Une batterie de servers), et il prend en charge le deployment de plus que des files (il peut également gérer les modifications de registre, le deployment de certs, les bases de données SQL, etc.).

J'appendais la réponse de Joel en suggérant qu'un server d'continuous integration récupère vos modifications à partir de votre système de contrôle source. Il va ensuite build le projet. Ensuite, faites-en xcopy la sortie de la construction vers un nouveau dossier. Vous pouvez ensuite effectuer des modifications de configuration rapides (web.config et app.config). Voila, prête pour Xcopy!

Consultez CruiseControl.NET

Ce que j'ai fait à mon ancien employeur, qui était essentiellement un site de vente aux enchères / e-commerce où nous ne pouvions pas autoriser beaucoup de time d'arrêt:

  • Prenez une version de version zippée de la version / version à déployer sur le server de construction
  • Testez-le sur un server de mise en scène qui a une copy de la database de production et possède la même version de logiciel que le logiciel de production. Testez que tout s'est déroulé en douceur. Sinon, redémarrez le deployment du server de mise en scène (mais rétablissez d'abord une sauvegarde).
  • Si tout s'est bien passé: copyr les scripts de mise à niveau et de database vers le server de production vers un dossier local. Prenez une sauvegarde spécifique de la database et des files ASP.NET (dans le cas où quelque chose ne va pas). Préparez ensuite tout afin que je ne devienne que cliquer sur pour lancer le script de mise à niveau et la copy des files de database (notez que je pourrais créer un script pour cela). Puis lancer tout. Ceci est normalement une question de secondes et les users ne remarqueront pas beaucoup qu'il y a eu des time d'arrêt.

Il existe beaucoup de choses plus amusantes à faire en tant que développeur web. Mais c'était la partie la plus cruciale de mon travail.

oh jeeez, au travail, nous avons toute une équipe pour cela. Ils possèdent un outil interne qui supprime un server du cluster / farm, publie les files, exécute les NUnits et les ajoute dans le cluster / farm. Ils le font pour chacun des 16 servers. Il faut des heures. Le rest d'entre nous n'a même pas "regarder autour de l'access".

Pour mes projets personnels, je publie depuis VS2005 directement sur mon server web. Un peu a une security less ssortingcte.