web-dev-qa-db-fra.com

Comment puis-je copier / cloner un site sur iis7

Je veux faire une copie dev, demo1, demo2 du site iis sur lequel je travaille. J'ai besoin que chaque iis fonctionne avec sa propre base de code, mais les paramètres seront presque identiques. Existe-t-il un moyen simple dans Windows 7 Ultimate de cloner mes périphériques vers un nouveau site sans avoir à le reconfigurer complètement? La configuration des répertoires virtuels pour chaque iis prend plus de 20 minutes, ce qui pourrait me faire économiser beaucoup de travail.

43
Agile Noob

Jetez un œil au fichier ApplicationHost.config . Il doit se trouver sous "c:\windows\system32\inetsrv\config". Il s'agit d'un fichier XML qui contient toutes les données de configuration IIS. Vous pouvez modifier manuellement ce fichier pour créer rapidement des copies de votre site Web. Assurez-vous d'abord de faire une sauvegarde au cas où vous auriez des problèmes .

49
David

Aller à C:\Windows\system32\inetsrv\config Faites une copie de ApplicationHost.config fichier. C'est un fichier XML. Ouvrez-le et accédez à <configuration><system.applicationHost><sites> ('configuration\system.applicationHost\sites ') recherchez le site que vous souhaitez dupliquer (il aura le même nom que dans IIS Management studio), puis copiez cette section de site et collez-la ci-dessous dans <sites> puis attribuez à la nouvelle section du site de nouveaux attributs d'ID et de nom qui n'ont pas encore été utilisés name="Test1" id="5".

 <site name="Test" id="4" serverAutoStart="true">
                <application path="/" applicationPool="Test">
                    <virtualDirectory path="/" physicalPath="C:\OnTheMove\tags\Release 2.1.7.7\Offline\OfflineRouteHandler" userName="administrator" password="[enc:AesProvider:K0YvJ9r+XXNP8VUrZlbCPQ==:enc]" />
                </application>
                <application path="/Offline_Tablet" applicationPool="Test">
                    <virtualDirectory path="/" physicalPath="C:\OTM\Offline\OnTheMoveOffline" userName="administrator" password="[enc:AesProvider:tT9uIWQDtIZTRnSMmx8XmIQv0lr7AbUXcuGby5qRZSo=:enc]" />
                </application>
                <application path="/OnTheMoveWebFiles" applicationPool="Test">
                    <virtualDirectory path="/" physicalPath="C:\OTM\Offline\OnTheMoveOffline\OnTheMoveWebFiles" userName="administrator" password="[enc:AesProvider:zZgL59H6ka6jehb9BPTaNR8ogdgc8S90c3vf8p6MjPc=:enc]" />
                </application>
                <application path="/eai_enu" applicationPool="Test">
                    <virtualDirectory path="/" physicalPath="C:\OTM\Offline\OfflineRouteHandler" userName="administrator" password="[enc:AesProvider:MfaNJz14gaJK5EjgIqhj4w==:enc]" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:80:" />
                </bindings>
            </site>

serait cloné.

<site name="Test1" id="5" serverAutoStart="true">
            <application path="/" applicationPool="Test">
                <virtualDirectory path="/" physicalPath="C:\OnTheMove\tags\Release 2.1.7.7\Offline\OfflineRouteHandler" userName="administrator" password="[enc:AesProvider:K0YvJ9r+XXNP8VUrZlbCPQ==:enc]" />
            </application>
            <application path="/Offline_Tablet" applicationPool="Test">
                <virtualDirectory path="/" physicalPath="C:\OTMTrunk\Offline\OnTheMoveOffline" userName="administrator" password="[enc:AesProvider:tT9uIWQDtIZTRnSMmx8XmIQv0lr7AbUXcuGby5qRZSo=:enc]" />
            </application>
            <application path="/OnTheMoveWebFiles" applicationPool="Test">
                <virtualDirectory path="/" physicalPath="C:\OTMTrunk\Offline\OnTheMoveOffline\OnTheMoveWebFiles" userName="administrator" password="[enc:AesProvider:zZgL59H6ka6jehb9BPTaNR8ogdgc8S90c3vf8p6MjPc=:enc]" />
            </application>
            <application path="/eai_enu" applicationPool="Test">
                <virtualDirectory path="/" physicalPath="C:\OTMTrunk\Offline\OfflineRouteHandler" userName="administrator" password="[enc:AesProvider:MfaNJz14gaJK5EjgIqhj4w==:enc]" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:80:" />
            </bindings>
        </site>

Allez dans IIS Management studio et si vous avez tout fait correctement, il y aura un nouveau site Web qui sera arrêté.

enter image description here
En cas d'échec, utilisez la copie de sauvegarde pour remplacer ApplicationHost.config.

MISE À JOUR: Selon les commentaires si vous utilisez un environnement 64 bits lors de l'édition ApplicationHost.config vous souhaitez utiliser l'éditeur 64 bits en mode Admin, le Bloc-notes en est un .

Tiré d'ici

J'espère que cela vous fera gagner du temps.

27
Matas Vaitkevicius

En fait, la réponse ci-dessus - la modification du fichier ApplicationHost.config ne représente que la moitié du travail. Vous devrez également ajouter les nouveaux AppPools au nœud applicationPools.

Par conséquent :

1/. Comme d'autres l'ont mentionné, faites d'abord une copie de votre fichier ApplicationHost.config !! Je copie et renomme généralement en "ApplicationHost_BACKUP_YYYY_MM_DD.config"

2 /. Utilisation du Bloc-notes (meilleure option pour Windows pour atténuer les problèmes avec 32 bits vs 64 bits). Recherchez le site à copier en recherchant (dans mon cas) 'id = "13"'. Une fois que vous avez trouvé le site que vous souhaitez copier. Copiez le nœud entier et collez-le après la copie du nœud de site. Attribuez-lui un nouvel ID. Assurez-vous de vérifier les sites dans IIS pour tous les identifiants utilisés en premier !! Assurez-vous également de lui donner un nouveau NOM et de mettre à jour tous les CHEMINS et APPPOOLS dans la section copiée. Voir l'exemple ci-dessous.

SITE À COPIER (ACTUEL):

<site name="Reading List" id="13" serverAutoStart="true">
     <application path="/" applicationPool="Reading List">
         <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\reading_list\http" />
     </application>              
     <bindings>
          <binding protocol="http" bindingInformation="*:80:readinglist.jsgroup.local" />
     </bindings>
</site>

SITE COPIE (NOUVEAU):

<site name="Reading List" id="14" serverAutoStart="true">
  <application path="/" applicationPool="Reading List 2">
      <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\reading_list_2\http" />
 </application>              
 <bindings>
     <binding protocol="http" bindingInformation="*:80:readinglist2.jsgroup.local" />
 </bindings>
</site>

3 /. Ajoutez de nouveaux Apppools au nœud applicationPools tel que configuré dans votre site copié ci-dessus, c'est-à-dire ci-dessous J'ai copié l'apppool "Reading List" et renommé la copie "Reading List 2"

<applicationPools>
    <add name="DefaultAppPool" autoStart="true" managedRuntimeVersion="v4.0">
         <processModel identityType="ApplicationPoolIdentity" />
    </add>
    <add name="Reading List" autoStart="true" managedRuntimeVersion="v4.0" />
    <add name="Reading List 2" autoStart="true" managedRuntimeVersion="v4.0" />
    <!-- Other AppPools here -->
 </applicationPools>

Si tout va bien, consultez le site en IIS et redémarrez si besoin est :-)

J'espère que cela aide quelqu'un.

Richard Hetherington

4

Que diriez-vous de copier le site Web en utilisant adsutil.vbs?

C:\Inetpub\AdminScripts> adsutil.vbs copy <source> <destination>

par exemple

C:\Inetpub\AdminScripts> adsutil.vbs copy w3svc/1 w3svc/556

La raison du w3svc/ la notation est plus évidente si vous exécutez adsutil.vbs ENUM /P W3SVC premier.

Les références:

3
Aligma