2012-06-11 16 views
7

Un paio di giorni fa, Microsoft ha rilasciato the engine they're using to do git deployments to Azure. Ho avuto un compito sul mio elenco TODO per un po 'per ottenere quel tipo di funzionalità impostate sul mio server IIS DEV, quindi sono interessato a provare Kudu per questo scopo.Impostazione di Kudu su IIS

Il "Getting Started" documento mostra come eseguire il front-end web, ma tutto lì dentro usa "http://localhost:PORTNUMBER" tipo URL per repository Git, sito URL, ecc

Mi rendo conto che questo è probabilmente diventando troppo davanti a loro, ma mi chiedo se qualcuno ha dei suggerimenti su come configurarlo usando domini reali su IIS "normali" invece di tutti i bit localhost?

risposta

13

Questa è una vecchia domanda, quindi sto dando una risposta aggiornata con più informazioni aggiornate da quando ho appena finito di configurare Kudu su un server di distribuzione interno. La risposta attualmente selezionata si occupa solo se si sta eseguendo direttamente Kudu da un ambiente di sviluppo.

Se si sta eseguendo la distribuzione in un ambiente di tipo "produzione" e non si desidera installare Visual Studio sul server di destinazione, esiste una buona guida sul sito Web del progetto su github.

https://github.com/projectkudu/kudu/wiki/Deploying-to-a-server

sul server di destinazione, è necessario installare:

Indietro su la tua macchina di sviluppo, clona il repository git e costruisci usando il file "build.cmd", seguendo le istruzioni nel link sopra.

In esecuzione build.cmd ho avuto diversi errori di test che hanno impedito alla build di produrre artefatti. Questi erano tutti legati a Mercurial, che non usiamo. L'installazione di un client Mercurial non li ha resi magicamente svaniti, quindi ho disabilitato i test piuttosto che sprecare un po 'di tempo nel debug del mio ambiente.

L'output della build indicherà i guasti. Ho disabilitato commentando l'attributo [Fact]. Queste sono le prove ho disabili:

  • test/Kudu.Core.Test/HgRepositoryFacts.cs (tutti i test)

Una volta che avete una build di successo che ha creato tutti gli elementi nei manufatti puoi passare alla distribuzione del sito Web di Kudu e del codice del servizio web.Le istruzioni sottostanti sono per l'impostazione di un'istanza dell'applicazione Web distinta, piuttosto che il dumping di tutto in c: \ inetpub \ wwwroot, che è come leggere le istruzioni.

  1. copia "artefatti \ release \ KuduWeb" per l'area di destinazione sul server in cui il vostro sito sarà eseguito da. Eseguo la mia installazione di kudu con un'intestazione host separata, ma è possibile utilizzare facilmente una porta separata o eseguire come sito Web principale. Questa directory sarà la radice della tua applicazione web.

  2. Creare una cartella "App_Data" vuota immediatamente nella cartella KuduWeb.

  3. Copia "artifacts \ Release \ SiteExtensions \ Kudu" allo stesso livello della cartella nel passaggio 1 e rinomina in "Kudu.Services.Web". Questa posizione è impostata come percorso relativo nel file web.config di KuduWeb - impostazione serviceSitePath.

  4. Aprire Amministrazione di IIS e creare un sito web che punta alla cartella "KuduWeb" dal punto 1.

  5. configurare il pool di app dal punto 4 per l'esecuzione come "LocalSystem". Questo è necessario per gestire i siti IIS.

  6. Creare una nuova cartella "app" allo stesso livello di KuduWeb. Qui è dove verranno inviate le distribuzioni. Nota: questa posizione è controllata nel file web.config di KuduWeb - impostazione "sitesPath"

  7. Modificare le autorizzazioni del file system per concedere agli "Utenti" l'accesso completo alla cartella "app" creata nel passaggio precedente.

All'avvio del mio sito Web Kudu, ho ricevuto il seguente errore.

Messaggio di errore del parser: Impossibile caricare il file o l'assembly 'System.Web.Mvc, Version = 5.1.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' o una delle sue dipendenze. Il sistema non trova il file specificato.

Per qualche motivo non ha copiato la versione MVC appropriata nelle risorse di distribuzione.

Se si verifica questo errore, il file MVC 5 può essere ottenuto tramite NuGet. Ho scoperto che il mio codice sorgente è stato costruito contro 5.1.0, quindi questo è il collegamento appropriato:

https://www.nuget.org/packages/Microsoft.AspNet.Mvc/5.1.0

Per estrarre la dll, ho creato un nuovo progetto fittizio e utilizzato NuGet per tirare giù la dll tramite la console del gestore pacchetti.

install-pacchetto Microsoft.AspNet.Mvc -Version 5.1.0

Una volta che il file binario, copiarlo da directory del pacchetto (. \ Packages \ Microsoft.AspNet.Mvc.5.1.0 \ lib \ net45 \ System.Web.Mvc.dll) nella directory bin del sito Web sul computer di destinazione.

A questo punto sei attivo e funzionante. Usa l'interfaccia web per creare la tua applicazione. Creerà una sottocartella sotto la directory "apps" con un albero che dovrebbe essere auto esplicativo.Sarà inoltre hanno creato due nuovi siti web per la vostra applicazione:

  • kudu_ {your-app-name}
  • kudu_service_ {your-app-name}

In una situazione di produzione, si dovrebbe creare un sito Web aggiuntivo in esecuzione sull'intestazione di porta/host appropriata che punta a:. \ apps \\ site \ wwwroot

Ora è possibile aggiungere un git remoto per la distribuzione. Vai alla tua posizione di origine in una console git (es: Git Bash) e aggiungi il telecomando come identificato da Kudu. Nota: potrebbe essere necessario cambiare localhost nell'URL per essere il nome del server appropriato.

git aggiungere remota distribuire http: //: 52711/your-app-name.git

spingere il codice per il nuovo "distribuire" a distanza e vediamo cosa succede. Dovresti vedere tutti i normali messaggi push, oltre all'output di build.

git push maestro implementare

La mia spinta iniziale non è riuscito a creare e distribuire a causa di "nodo" non essere riconosciuto. Era nel percorso, quindi un reset del server ha convinto la variabile di ambiente path da aggiornare. È possibile trovare ulteriori errori da elaborare. Per esempio, ho avuto un problema con MSBuild importato e causando un incidente.

Errore MSB4019: il progetto importato "C: \ Programmi (x86) \ MSBuild \ Microsoft \ Visual Studio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets" non è stato trovato.

YMMV, ma questi sono tutti problemi risolvibili ora. Buona distribuzione continua!

+0

Vorrei aver trovato questo tutorial 6 ore fa! –

+1

Come faccio a commentare gli attributi [Fatto]? – Egidi

+1

@Egidi Apri Kudu.sln in Visual Studio 2015, cerca HgRepositoryFacts.cs (ce ne dovrebbero essere 2) e in ogni file commenta le righe contenenti '[Fatto]'. Questo ha corretto gli errori di test per me. –

4

Il progetto imposta automaticamente due siti Web su IIS per ogni applicazione aggiunta utilizzando il front-end Web. Kudu non mappa automaticamente i binding per loro, ma è relativamente facile aprire IIS e trovare i due siti denominati "kudu_appname" e "kudu_appname_service". Il sito web del servizio è quello che punti anche GIT e l'altro è il sito stesso. Basta aggiungere loro collegamenti pubblici facendo clic con il tasto destro e "modifica i collegamenti". È quindi possibile aggiungere nomi host pubblici a loro.

Questa è la parte facile. La parte difficile su cui sto ancora lavorando sta facendo funzionare l'autenticazione in modo che qualsiasi Joe casuale non riesca a spingere nel mio repository kudu!

+1

sei riuscito a configurare l'autenticazione per git e kudu dashboard? Come l'hai fatto? Grazie – tenbits

+0

In questo momento, come soluzione alternativa, ho abilitato l'autenticazione di base per l'app di servizio kudu in IIS. Ma non è possibile specificare le credenziali quando si crea la nuova app in Kudu? – tenbits