Recentemente mi è capitato di dover migrare circa 300 siti web da un IIS 6.0 installata su un Windows Server 2003 ad un IIS 10.0 installata su un server Windows Server 2016
Per effettuare questa migrazione mi sono avvalso dello strumento Web Deployment Tool rilasciato da Microsoft
ATTENZIONE: Questo tutorial è valido per migrazioni da IIS 6.0 – Windows Server 2003 ad
IIS 7.0 – Windows Vista e Windows Server 2008
IIS 7.5 – Windows 7 e Windows Server 2008 R2
IIS 8.0 – Windows 8 e Windows Server 2012
IIS 8.5 – Windows 8.1 e Windows Server 2012 R2
IIS 10.0 – Windows 10 e Windows Server 2016
ATTENZIONE: al momento della stesura del seguente tutorial la versione scaricabile di Web Deploy è la 3.6 scaricabile dal link https://www.microsoft.com/it-it/download/details.aspx?id=43717
Di seguito gli steps da seguire per portare a termine la migrazione senza nessun intoppo.
PRE-REQUISITI
- Download del software Micrososft Web Deployment Tool ed installazione sul server sorgente e sul server di destinazione. Sotto il link degli steps da seguire per installare il software
Installazione di Microsoft Web Deploy 3.6 su Windows Server 2003 o Superiore
- Verificare Siti Web in IIS 6.0 su Windows Server 2003
- Installazione e configurazione di IIS 10.0 in Windows Server 2016
- Verifica Dipendenze
VERIFICA DIPENDENZE SITO WEB SU SERVER SORGENTE (WINDOWS SERVER 2003)
Prima di avviare il processo di migrazione, è molto importante verificare se tutte le dipendenze del sito sono presenti o meno.
Per verificare ciò, eseguire i seguenti comandi da una finestra di DOS nel server sorgente
Posizionamoci nella cartella di installaazione del software con il comando
0 |
cd C:\Program Files (x86)\IIS\Microsoft Web Deploy V3 |
quindi eseguire il comando:
0 |
msdeploy -verb:getDependencies -source:metakey=lm/w3svc/ID-SITO |
NOTA BENE: al posto di ID-SITO inserire l’ID del sito web che intendiamo controllare
Come si può vedere nella finestra sovrastante le dipendenze del sito che andrà migrato sono le seguenti:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
<output> <dependencyInfo> <dependencies> <dependency name="HttpRedirect" /> </dependencies> <apppoolsInUse> <apppoolInUse name="DefaultAppPool" definitionIncluded="False" /> </apppoolsInUse> <isapis> <isapi dll="C:\WINDOWS\system32\inetsrv\httpodbc.dll" enabled="unknown" /> </isapis> </dependencyInfo> </output> |
Rivedere l’output delle dipendenze e cercare eventuali mappe di script o componenti installati in uso dal sito. Ad esempio, se l’autenticazione di Windows è utilizzata dal sito Web, verrà visualizzato <nome dipendenza = “Autenticazione Windows” />.
Se il sito eredita mappe di script, queste non verranno elencate nelle dipendenze e dovresti anche rivedere manualmente le mappe di script per il tuo sito.
Compilare un elenco dei componenti necessari sulla destinazione quindi implementare eventuali modifiche sull’IIS di destinazione
BACKUP CONFIGURAZIONE SERVER DI DESTINAZIONE (WINDOWS SERVER 2016)
Prima di procedere alla migrazione dei siti web è consigliabile fare il backup della configurazione dell’IIS di destinazione.
Aprire quindi una console di DOS con diritti amministrativi ed eseguire il comando
0 |
%windir%\system32\inetsrv\appcmd add backup "PreMsDeploy" |
Dovremmo vedere una schermata come quella sovrastante
Se è andato tutto a buon fine dovremmo vedere una schermata comwe quella sovrastante con il messaggio
Oggetto BACKUP “PreMsDeploy” aggiunto
Per un ulteriore conferma aprire il seguente path
0 |
C:\Windows\System32\inetsrv\backup\PreMsDeploy |
All’interno deovremmo vedere i files come mostrato nell’immagine sovrastante
ESPORTAZIONE SITO WEB DAL SERVER SORGENTE (WINDOWS SERVER 2003)
A questo punto possiamo procedere con l’esportazione del sito web tramite l’utility Web Deploy
Aprire una finestra DOS e posizionarsi nella cartella di installazione di Web Deploy con il comando
0 |
cd C:\Program Files (x86)\IIS\Microsoft Web Deploy V3 |
quindi eseguire il comando
0 |
msdeploy -verb:sync -source:metakey=lm/w3svc/ID-SITO -dest:package=C:\BackupSite\SiteID-SITO.zip > WebDeployPackage.log |
NOTA BENE: al posto di ID-SITO inserire l’ID del sito web che intendiamo esportare
Se l’esportazione è avvenuta correttamente dovremmo visualizzare nella cartella indicata nello script un file .zip con il nome uguale all’ID del sito che abbimo impostato.
IMPORTAZIONE SITO WEB NEL SERVER DI DESTINAZIONE (WINDOWS SERVER 2016)
Prima di procedere con l’importazione copiare tutti i file .zip relativi alle esportazione del sito/siti che abbiamo effettuato dal server sorgente al server di destinazione.
NOTA BENE: Per comodità ho posizionato tutti i file .zip nella cartella C:\BackupSite\
Procediamo con l’importazione del sito web tramite l’utility Web Deploy
Aprire una finestra DOS e posizionarsi nella cartella di installazione di Web Deploy con il comando
0 |
cd C:\Program Files (x86)\IIS\Microsoft Web Deploy V3 |
quindi eseguire il seguente comando per convalidare cosa accadrebbe se si eseguisse un’operazione di sincronizzazione
0 |
msdeploy -verb:sync -source:package=D:\BackupSite\SiteID-SITO.zip -dest:metakey=lm/w3svc/ID-SITO -whatif > WebDeploySync.log |
Se non è stata rilevata nessuna anomalia eseguire il comando di importazione
msdeploy -verb:sync -source:package=D:\BackupSite\SiteID-SITO.zip -dest:metakey=lm/w3svc/ID-SITO > WebDeploySync.log
NOTA BENE: al posto di ID-SITO inserire l’ID del sito web che intendiamo esportare
ATTENZIONE: affinchè l’esportazione vada a buon fine è necessario verificare le seguenti cose:
- La cartella del sito web sorgente (Es: C:\inetpub\wwwroot) deve essere presente anche nel server di destinazione.
- Tutti gli Application Pools del server sorgente (se tuilizzati su IIS 6.0) devono essere presenti anche nel server di destinazione
- Se tra i siti web sono presenti siti con certificati SSL bisogna rimuovere il ceritifcato prima di procedere all’esportazione e poi ricarciarlo una volta terminata la migrazione sul server di destinazione.
L’errore che si riceve quando cerchiamo di esportare un sito cifrato con ceritficato SSL è il seguente:
012Error: The property 'blob' located at '/metaKey[@path='/lm/w3svc/ID-SITO']/metaProperty[@name='SSLCertHash']/cert' is marked as secure. You must specify an encryption password to archive this property.
CONSIGLI UTILI PER ESPORTARE E IMPORTARE MOLTI SITI CONTEMPORANEMENTE
Per poter esportare tanti siti web contemporaneamente prima di tutto dobbiamo individuare tutti gli ID dei siti web presenti su IIS 6.0
Questa operazione è molto semplice da effettuare e basta seguire gli steps elencati di seguito:
ESPORTAZIONE SITI WEB
1) Aprire lo snap-in di IIS 6.0
2) Espandere l’alberatura e posizionarsi sulla cartella Web Sites
3) Cliccare con il tasto destro quindi selezionare Export List
4) Salvare tutto in un file .txt
5) Aprire il file .txt con Microsoft Excel quindi suddividere in colonne
6) Magicamente in una colonna torveremo tutti gli ID dei nostri siti
7) Sempre con un excel costruire il comando in questo modo
8) Dopo aver creato esportare tutto in un file .txt
9) Se abbiamo fatto tutto correttamente dovremmo vedere un risultato molto simile a questo
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
msdeploy -verb:sync -source:metakey=lm/w3svc/2146474646 -dest:package=D:\BackupSite\Site2146474646.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2146001650 -dest:package=D:\BackupSite\Site2146001650.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2129375878 -dest:package=D:\BackupSite\Site2129375878.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2121320234 -dest:package=D:\BackupSite\Site2121320234.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2116131948 -dest:package=D:\BackupSite\Site2116131948.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2115936396 -dest:package=D:\BackupSite\Site2115936396.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2115194520 -dest:package=D:\BackupSite\Site2115194520.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2099181232 -dest:package=D:\BackupSite\Site2099181232.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2098932808 -dest:package=D:\BackupSite\Site2098932808.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2069156944 -dest:package=D:\BackupSite\Site2069156944.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2068107425 -dest:package=D:\BackupSite\Site2068107425.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2053736634 -dest:package=D:\BackupSite\Site2053736634.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2045276948 -dest:package=D:\BackupSite\Site2045276948.zip > WebDeployPackage.log msdeploy -verb:sync -source:metakey=lm/w3svc/2036290352 -dest:package=D:\BackupSite\Site2036290352.zip > WebDeployPackage.log |
10) A questo punto non ci resta che aprire una finesta di DOS sul server sorgente e copiare ed incollare tutte le righe del file .txt che verranno processate in sequenza
IMPORTAZIONE SITI WEB
L’importazione praticamante è identica all’esportazione.
Seguire tutti gli steps dell’esportazione fino al punto 6
7) Sempre con un excel costruire il comando in questo modo
8) Dopo aver creato esportare tutto in un file .txt
9) Se abbiamo fatto tutto correttamente dovremmo vedere un risultato molto simile a questo
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
msdeploy -verb:sync -source:package=D:\BackupSite\Site2146474646.zip -dest:metakey=lm/w3svc/2146474646 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2146001650.zip -dest:metakey=lm/w3svc/2146001650 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2129375878.zip -dest:metakey=lm/w3svc/2129375878 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2121320234.zip -dest:metakey=lm/w3svc/2121320234 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2116131948.zip -dest:metakey=lm/w3svc/2116131948 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2115936396.zip -dest:metakey=lm/w3svc/2115936396 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2115194520.zip -dest:metakey=lm/w3svc/2115194520 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2099181232.zip -dest:metakey=lm/w3svc/2099181232 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2098932808.zip -dest:metakey=lm/w3svc/2098932808 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2069156944.zip -dest:metakey=lm/w3svc/2069156944 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2068107425.zip -dest:metakey=lm/w3svc/2068107425 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2053736634.zip -dest:metakey=lm/w3svc/2053736634 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2045276948.zip -dest:metakey=lm/w3svc/2045276948 > WebDeploySync.log msdeploy -verb:sync -source:package=D:\BackupSite\Site2036290352.zip -dest:metakey=lm/w3svc/2036290352 > WebDeploySync.log |
10) A questo punto non ci resta che aprire una finesta di DOS sul server didestinazione e copiare ed incollare tutte le righe del file .txt che verranno processate in sequenza.
0 commenti