Comment migrer un site IIS 7 vers un autre serveur?

105

Je me demande quelle est la meilleure pratique pour déplacer un site Web vers un autre serveur (avec tous les paramètres, etc.)

  • Recréez manuellement le site sur le nouveau serveur (non maintenable pour des raisons évidentes)
  • Copiez le fichier de paramètres applicationHost.config
  • Utilisez appcmd pour effectuer une sauvegarde et une restauration
  • Utilisez MSDeploy pour publier le site sur la nouvelle machine
  • Utilisez un outil tiers

Je me demande simplement quelles ont été les expériences des autres.

Kalid
la source
Microsoft recommande uniquement Web Deploy (après la création de cet outil), donc avant de lire les réponses ci-dessous, assurez-vous de savoir pour lequel vous êtes entièrement à vos propres risques.
Lex Li

Réponses:

134

Je dirais exporter la configuration de votre serveur dans le gestionnaire IIS:

  1. Dans le gestionnaire IIS, cliquez sur le nœud Serveur
  2. Accédez à la configuration partagée sous «Gestion»
  3. Cliquez sur «Exporter la configuration». (Vous pouvez utiliser un mot de passe si vous les envoyez sur Internet, si vous voulez simplement les déplacer via une clé USB, ne vous inquiétez pas.)
  4. Déplacez ces fichiers vers votre nouveau serveur

    administration.config
    applicationHost.config
    configEncKey.key 
    
  5. Sur le nouveau serveur, revenez à la section «Configuration partagée» et cochez «Activer la configuration partagée». Entrez l'emplacement dans le chemin physique de ces fichiers et appliquez-les.

  6. Il devrait demander le mot de passe de chiffrement (si vous le définissez) et réinitialiser IIS.

BAM! Allez prendre une bière!

mâche
la source
8
Je devrais probablement utiliser le serveur d'importation ou le package de site au lieu de simplement copier les fichiers, bien que je ne l'ai pas testé non plus. Mais je sais qu'il y a des chemins de fichiers dans applicationHost.config qui ne seront pas nécessairement présents sur le nouveau serveur, ce qui le briserait. En outre, vous devriez probablement mentionner qu'il ne peut y avoir aucun site actuellement dans IIS, de sorte que ce processus ne supprime pas la configuration en cours d'exécution.
frogstarr78
16
La dernière étape ne peut pas être surestimée. Extrêmement important.
Rap
7
Ce n'est pas une bonne idée si vous migrez vers une version plus récente d'IIS. Sinon, c'est la manière de procéder.
Roy Tinker
1
Je me demande si cela pourrait fonctionner, car cela ne devrait pas: docs.microsoft.com/en-us/iis/manage/…
vaso123
1
La configuration partagée IIS n'a pas été conçue comme un moyen de migrer les paramètres entre les machines, donc si vous rencontrez un problème après cette réponse, mordez-vous et ne blâmez personne.
Lex Li
26

MSDeploy peut migrer tout le contenu, la configuration, etc., c'est ce que recommande l'équipe IIS. http://www.iis.net/extensions/WebDeploymentTool

Pour créer un package, exécutez la commande suivante (remplacez Site Web par défaut par le nom de votre site Web):

msdeploy.exe -verb:sync -source:apphostconfig="Default Web Site" -dest:package=c:\dws.zip > DWSpackage7.log

Pour restaurer le package, exécutez la commande suivante:

msdeploy.exe -verb:sync -source:package=c:\dws.zip -dest:apphostconfig="Default Web Site" > DWSpackage7.log
Bill Staples
la source
1
Merci Bill - J'avais vu l'outil mais j'étais méfiant car il était encore en version bêta.
Kalid
1
En 2016, il s'agit toujours de «l'état de l'art», mais MSDEPLOY 3.6 est vraiment difficile à travailler. J'espère qu'ils feront quelque chose de nouveau à un moment donné.
Warren P
MSDeploy n'a pas transféré les sites correctement pour nous. Nous nous sommes retrouvés avec un site contenant les applications de chacun de nos sites, donc la structure entière était erronée.
brianary
C'est sûrement la méthode recommandée, et une documentation comme docs.microsoft.com/en-us/iis/publish/using-web-deploy/… et docs.microsoft.com/en-us/iis/publish/using-web- deploy /… sont essentiels pour que les utilisateurs maîtrisent les étapes nécessaires et les points clés auxquels ils doivent prêter attention. La plupart des problèmes sur Internet sont déjà traités dans les articles. Si les gens y consacrent suffisamment de temps, Web Deploy n'est pas un outil «difficile» à utiliser.
Lex Li
18

Voici un site Web utile sur l'utilisation de appcmd pour exporter / importer une configuration de site. http://www.microsoftpro.nl/2011/01/27/exporting-and-importing-sites-and-app-pools-from-iis-7-and-7-5/

Roy
la source
Merci pour le lien. Cela m'a également permis de modifier l'ID du site et toute autre chose et je n'ai pas eu à configurer 10 applications différentes et 30 répertoires virtuels différents. Grand gain de temps
2GDave
Comme cette approche ne prend pas en charge les dépendances sous-jacentes (modules IIS, etc.), utilisez-la à vos risques et périls.
Lex Li
12

Microsoft Web Deploy v3 peut exporter et importer tous vos fichiers, les paramètres de configuration, etc. Il place le tout dans une archive zip prête à être importée sur le nouveau serveur. Il peut même passer à des versions plus récentes d'IIS (v7-v8).

http://www.iis.net/extensions/WebDeploymentTool

Après avoir installé l'outil: Cliquez avec le bouton droit sur votre serveur ou site Web dans IIS Management Console, sélectionnez «Déployer», «Exporter l'application…» et exécutez l'exportation.

Sur le nouveau serveur, importez l'archive zip exportée de la même manière.

Zymotik
la source
mais cela prend tous les fichiers. existe-t-il un moyen de ne pas prendre les fichiers? si vous migrez par exemple un serveur FTP, il essaie de récupérer tous les fichiers et de les compresser.
RayofCommand
2
@RayofCommand - Lors de la sélection des options de déploiement, vous pouvez effacer la liste "Contenu" - alors le package n'inclut pas tous les fichiers.
Zhaph - Ben Duguid
1
Mais uniquement lors du déploiement site par site ... pas pour un déplacement de serveur entier.
Ethan Allen
1
Après avoir installé MS Web Deploy sur le serveur de destination (IIS8), la console de gestion IIS ne contient aucune des options de déploiement Web.
brianary
1
Je n'ai pas non plus de menu «Déployer» après l'installation du paquet.
Devil's Advocate
3

utilisez appcmd pour exporter un ou tous les sites, puis réimportez-le dans le nouveau serveur. Cela peut être iis7.0 ou 7.5. Lorsque vous exportez en utilisant appcmd, les mots de passe sont déchiffrés, puis réimportés et ils seront à nouveau chiffrés.

Jim
la source
3

Je ne peux pas commenter le fil en raison du manque de représentant. Un autre intervenant a déclaré qu'il ne pouvait pas migrer d'une version inférieure vers une version supérieure d'IIS. Cela est vrai si vous ne fusionnez pas certains fichiers, mais si vous le faites, vous pouvez le faire car je viens de migrer mon site IIS 7.5 vers IIS 8.0 en utilisant la réponse publiée par chews.

Lorsque l'exportation est créée (II7.5), il existe deux fichiers clés (administration.config et applicationHost.config) qui ont des références à des ressources sur le serveur IIS7.5. Par exemple, une DLL sera référencée avec une clé publique et une version spécifiques à 7.5. Ce ne sont PAS les mêmes sur le serveur IIS8. La configuration des fonctionnalités peut également différer (je me suis assuré que les miennes étaient identiques). Il y a quelques nouvelles fonctionnalités dans 8 qui n'existeront jamais dans 7.5.

Si vous êtes assez courageux pour fusionner les deux fichiers, cela fonctionnera. J'ai dû désinstaller IIS une fois parce que je l'ai raté, mais je l'ai eu la deuxième fois.

J'ai utilisé un outil de fusion (Beyond Compare) et sans quelque chose d'équivalent, ce serait un énorme PITA - mais c'était assez facile avec un bon outil de comparaison (cinq minutes).

Pour effectuer la fusion, les fichiers 8.0 doivent être comparés aux fichiers 7.5 exportés AVANT de tenter une importation. Pour la plupart, les fichiers 8.0 doivent remplacer les éléments spécifiques au serveur dans les fichiers 7.5 exportés, tout en laissant les éléments spécifiques au pool de sites / applications.

J'ai trouvé que administration.config était presque identique, sans les informations de version de nombreuses entrées. Celui-ci était facile.

L'applicationHost.config a beaucoup plus de différences. Certaines entrées sont classées différemment, mais sinon identiques, vous devrez donc repérer chaque différence et la comprendre.

J'ai mis mes fichiers d'exportation 7.5 dans le dossier System32 \ inetsrv \ config \ Export avant la fusion.

J'ai fusionné du dossier System32 \ inetsrv \ config vers le dossier System32 \ inetsrv \ config \ Export pour les deux fichiers que j'ai mentionnés ci-dessus. J'ai poussé tout dans les fichiers FROM à l'exception des balises / éléments spécifiques au site (par exemple applicationPools, customMetadata, sites, authentification). Fait à noter, il y avait aussi de nombreux blocs de balises «emplacement» spécifiques au site que je devais conserver, mais le nouveau serveur avait son propre bloc de balises «emplacement» avec des valeurs par défaut spécifiques au serveur qui doivent être conservées.

Enfin, notez que si vous utilisez des comptes de service, ces mots de passe mis en cache sont indésirables et devront être saisis à nouveau pour vos pools d'applications. Aucun de mes sites ne fonctionnait au départ, mais il suffisait de ressaisir les mots de passe de tous mes pools d'applications et j'étais opérationnel.

Si quelqu'un qui peut commenter mentionne ce message, cela aidera probablement quelqu'un d'autre comme moi qui a de nombreux sites sur un serveur avec des configurations compliquées.

Cordialement,

Stuart

Stuart
la source
J'ai en fait utilisé la réponse de Stuart pour une migration fusionnée, je n'aime toujours pas MS Web Deploy.
mâche le
1

Dans mon cas, les fichiers étaient déjà copiés, j'ai trouvé le moyen le plus simple de suivre les étapes de ce guide: https://www.ryadel.com/en/exporting-importing-app-pools-and-websites-configuration-between -multiple-iis-instances /

J'ai exporté AppPools / Websites, copié les fichiers xml sur le serveur de destination et importé des AppPools puis des sites Web. A très bien fonctionné. C'est également une autre excellente option pour cette question.

Ralph
la source
cela m'a juste donné des erreurs indiquant que le pool d'applications par défaut et le site Web par défaut ne pouvaient pas être écrasés ... pas de bueno.
devlin carnate le
Essayez de renommer les valeurs par défaut en autre chose? et voir s'ils sont créés avec le processus expliqué ci-dessus?
Ralph le
Cela a fonctionné pour moi en passant d'IIS7.5 (2008) à IIS10 (2019). Appcmd m'a initialement donné des erreurs sur le «site Web par défaut» déjà existant. Le changement de nom ne fonctionnait pas, j'ai donc supprimé le site Web par défaut. L'importation s'est ensuite déroulée sans erreur.
MTAdmin