2012-06-11 9 views
7

Hace un par de días, Microsoft lanzó the engine they're using to do git deployments to Azure. He tenido una tarea en mi lista TODO durante algún tiempo para configurar ese tipo de funcionalidad en mi servidor DEV IIS, por lo que estoy interesado en probar Kudu para ese fin.Configurando Kudu en IIS

El documento "Getting Started" muestra cómo ejecutar la interfaz web, pero todo en no utiliza "http://localhost:PORTNUMBER" escribe la URL de los repositorios Git, sitio URL, etc.

Soy consciente de que está consiguiendo probablemente demasiado por delante de ellos, pero me pregunto si alguien tiene consejos sobre cómo configurarlo usando dominios reales en IIS "regular" en lugar de todos los bits de host local.

Respuesta

13

Esta es una vieja pregunta, por lo que estoy dando una respuesta actualizada con más información actual ya que acabo de trabajar en la configuración de Kudu en un servidor de implementación interno. La respuesta seleccionada actualmente solo trata si está ejecutando directamente Kudu desde un entorno de desarrollo.

Si se está implementando en un entorno de tipo "producción" y no desea instalar Visual Studio en el servidor de destino, hay una buena guía en el sitio web del proyecto en github.

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

En el servidor de destino, tendrá que instalar:

Atrás su máquina de desarrollo, clone el git repo y construya usando el archivo "build.cmd", siguiendo las instrucciones en el enlace de arriba.

Al ejecutar build.cmd recibí varios errores de prueba que bloquearon la compilación para que no produjera artefactos. Todos estos estaban relacionados con Mercurial, que no usamos. Instalar un cliente de Mercurial no los hacía desaparecer mágicamente, así que deshabilité las pruebas en vez de dedicar mucho tiempo a la depuración de mi entorno.

Su salida de compilación indicará las fallas. Inhabilité comentando el atributo [Hecho]. Estas son las pruebas que para minusválidos:

  • pruebas/Kudu.Core.Test/HgRepositoryFacts.cs (todas las pruebas)

Una vez que tenga una construcción exitosa que ha creado todos los elementos de los artefactos puede pasar a implementar el sitio web de Kudu y el código del servicio web.Las siguientes instrucciones son para configurar una instancia de aplicación web distinta, en lugar de descargar todo en c: \ inetpub \ wwwroot, que es cómo se leen las instrucciones.

  1. de copia "artefactos \ Release \ KuduWeb" a la zona de destino en el servidor en su sitio web se extenderá desde. Ejecuto mi instalación de kudu con un encabezado de host separado, pero puede usar fácilmente un puerto diferente o ejecutar como el sitio web raíz. Este directorio será la raíz de su aplicación web.

  2. Cree una carpeta vacía "App_Data" inmediatamente debajo de la carpeta KuduWeb.

  3. Copie "artifacts \ Release \ SiteExtensions \ Kudu" en el mismo nivel que la carpeta en el paso 1 y cambie el nombre a "Kudu.Services.Web". Esta ubicación se establece como una ruta relativa en el archivo web.config de KuduWeb - configuración de ServiceSitePath.

  4. abierto de administración de IIS y crear un sitio web que apunta a la carpeta "KuduWeb" desde el paso 1.

  5. Configurar el grupo de aplicación a partir del paso 4 para funcionar como "LocalSystem". Esto es necesario para administrar sitios de IIS.

  6. Crea una nueva carpeta de "aplicaciones" al mismo nivel que KuduWeb. Aquí es donde se enviarán las implementaciones. Nota: esta ubicación está controlada en el archivo KuduWeb web.config - configuración "sitesPath"

  7. Cambie los permisos del sistema de archivos para otorgar a los "Usuarios" acceso completo a la carpeta "aplicaciones" creada en el paso anterior.

Al iniciar mi sitio web de Kudu, recibí el siguiente error.

Mensaje de error del analizador: No se pudo cargar el archivo o ensamblado 'System.Web.Mvc, Version = 5.1.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.

Por alguna razón, no copió la versión MVC apropiada en los artefactos de implementación.

Si llega a este error, el archivo MVC 5 se puede obtener a través de NuGet. He descubierto que mi código fuente fue construida contra la 5.1.0, así que este es el vínculo apropiado:

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

Con el fin de extraer el archivo DLL, que estableció un nuevo proyecto ficticio y se utiliza NuGet para tirar hacia abajo el dll a través de la consola del administrador de paquetes.

Install-Package Microsoft.AspNet.Mvc -Versión 5.1.0

Una vez que el binario, copiarlo de directorio de paquetes (. \ Packages \ Microsoft.AspNet.Mvc.5.1.0 \ lib \ net45 \ System.Web.Mvc.dll) al directorio bin sitio web en el equipo de destino.

En este punto está en funcionamiento. Use la interfaz web para crear su aplicación. Creará una subcarpeta en el directorio "aplicaciones" con un árbol que debería ser autoexplicativo.También se han creado dos nuevos sitios web para su aplicación:

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

En una situación de producción, debe cree un sitio web adicional que se ejecute en el encabezado de puerto/host apropiado que apunte a:. \ apps \\ sitio \ wwwroot

Ahora puede agregar un control remoto git para su implementación. Vaya a la ubicación de origen en una consola git (por ejemplo, Git Bash) y agregue el control remoto identificado por Kudu. Nota: es posible que necesite cambiar localhost en la url para que sea el nombre de servidor apropiado.

git remote add desplegar http: //: 52711/tu-app-name.git

empujar su código a la nueva "desplegar" a distancia y ver lo que sucede. Debería ver todos los mensajes push normales, más la salida de compilación.

git push maestro implementar

Mi impulso inicial no pudo construir e implementar debido a la "nodo" no ser reconocido. Estaba en la ruta, por lo que un restablecimiento del servidor convenció a la variable de entorno de ruta para actualizarse. Puede encontrar errores adicionales para trabajar. Por ejemplo, tuve un problema con MSBuild siendo importado y causando un contratiempo.

error MSB4019: No se encontró el proyecto importado "C: \ Archivos de programa (x86) \ MSBuild \ Microsoft \ Visual Studio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets".

YMMV, pero ahora todos estos problemas se pueden resolver. Buen despliegue continuo!

+0

¡Desearía encontrar este tutorial hace 6 horas! –

+1

¿Cómo puedo comentar los atributos [de hecho]? – Egidi

+1

@Egidi Abra Kudu.sln en Visual Studio 2015, busque HgRepositoryFacts.cs (debe haber 2) y en cada archivo comente las líneas que contienen '[Fact]'. Esto solucionó los errores de prueba para mí. –

4

El proyecto configura automáticamente dos sitios web en IIS para cada aplicación que agregue utilizando el front-end web. Kudu no mapea automáticamente los enlaces para ellos, pero es relativamente fácil abrir IIS y encontrar los dos sitios llamados "kudu_appname" y "kudu_appname_service". El sitio web del servicio es el que señala a GIT también y el otro es el sitio en sí. Simplemente agregue enlaces públicos haciendo clic derecho y "editar enlaces". A continuación, puede agregarles nombres de host públicos.

Esta es la parte fácil. ¡La parte más difícil en la que todavía estoy trabajando es que la autenticación funcione, por lo que cualquier Joe al azar no puede enviar a mi repositorio de kudu!

+1

¿ha logrado configurar la autenticación para git y kudu dashboard? ¿Cómo hiciste esto? Gracias – tenbits

+0

En este momento, como una solución, he habilitado la autenticación básica para la aplicación de servicio kudu en IIS. Pero, ¿no es posible especificar las credenciales al crear la nueva aplicación en Kudu? – tenbits