Syntax Highlighter

martes, 2 de octubre de 2012

Configurando Web Platform Installer y WebDeploy en un Azure WebRole

Después de pasarme más de tres días intentando resolver una incidencia al configurar  WebDeploy en un Azure WebRole –concretamente añadiendo dicha característica al DNN Azure Accelerator-, no me queda más remedio que documentar y compartir la solución para aliviar el sufrimiento a quien le pueda suceder algo parecido.

¿Para qué WebDeploy?

WebDeployVideoWeb Deploy simplifica el despliegue de aplicaciones y sitios web en servidores IIS. Se puede usar para sincronizar servidores IIS o migrar a nuevas versiones del mismo –por ejemplo, migrar de un entorno on-premise a la nube o viceversa.

Permite realizar operaciones de empaquetado y despliegue de aplicaciones web de una manera sencilla, integrándose perfectamente con  herramientas como Visual Studio o WebMatrix para ayudar a los desarrolladores en esta tarea. Se pueden empaquetar tanto contenido de las aplicaciones, configuración, bases de datos y cualquier otro artefacto como entradas en el registro, objetos COM, ensamblados en la GAC etc. pudiéndose parametrizar los valores de configuración según entorno. Una vez empaquetados estos paquetes se pueden utilizar usando una aplicación de comandos de Web Deploy o IIS Manager sin requerir privilegios administrativos.

Con la salida de Web Deploy 3.0, tenemos una serie de interesantes características:

  • Migración de servidores web desde IIS6 a IIS 7 o IIS 8
  • Sincronización eficiente de tu granja de servidores
  • Integración con Visual Studio y WebMatrix
  • Integración con Web Platform Installer para instalar aplicaciones web de la comunidad
  • Empaquetado de aplicaciones web, incluyendo las bases de datos asociadas, ACLs, COM, GAC, etc.
  • Despliegue de aplicaciones web sin requerir permisos administrativos, pudiendo parametrizar la configuración en cada entorno, así como integración con el IIS Web Management Service (WMSVC) para despliegue remoto por usuarios no administradores
  • Sincronización y migración de servidores web, sincronizando sólo los datos que han sido modificados
  • Copia de seguridad automática de los sitios web antes de realizar ningún cambio
  • Acceso a través de IIS Manager, Visual Studio, WebMatrix, línea de comandos, PowerShell Cmdlets y APIs.

¿Por qué en el DNN Azure Accelerator?

Como os podéis imaginar, añadir esta característica al DNN Azure Accelerator va a permitir realizar una serie de tareas administrativas no disponibles hasta ahora. Se me vienen a la mente unas cuantas, aunque por nombrar algunas:

  • Posibilidad de migrar la instancia de DNN de un IIS a otro. Esto incluye migrar desde on-premise a Azure –ya sea Azure WebSites o PaaS-, de Azure WebSites a Azure PaaS ó viceversa, etc.
  • Acceder y modificar el contenido del site a través de WebMatrix, ¡sin tener que acceder por RDP a las instancias en Azure ni tener que montar el VHD drive con Azure Connect!
  • Instalar actualizaciones de DotNetNuke, simplemente desplegando el paquete de upgrade a través de WebDeploy y ejecutando el asistente de actualización
  • Crear y restaurar copias de seguridad de nuestro sitio

Como véis, son unas buenas razones para añadir esta característica, que estará disponible en la próxima release del asistente de DNN Azure Accelerator –el código ya está disponible en CodePlex por si no quieres esperar al empaquetado.

WizardStepWebDeploy

¿Tres días para añadir esta característica?

No sólo tres días sino además unos 50 despliegues para poner en funcionamiento la misma, debido a había Luna llena en Aries y dos errores muy interesantes.

Pero antes que nada, echemos un vistazo a cómo está implementado. Para añadir esta característica sin disparar una línea de código –sin contar los cambios de interfaz en el asistente de instalación-, el enfoque fue el siguiente:

  • Añadir un EndPoint en los web roles para permitir el tráfico a través del puerto 8172
  • Incorporar la aplicación de comandos de Web Platform Installer WebPICMD.exe en una startup task del webrole, para automatizar la instalación de WebDeploy. Esto permite, además de no incrementar el tamaño del paquete de servicio del Accelerator, instalar del mismo modo cualquier otro paquete disponible y que requiera nuestro despliegue, como MVC3, Silverlight, node.js, etc.
  • Habilitar el servicio de administración remota de IIS en una startup task del webrole

Problema nº1: Web Platform Installer no consigue instalar el paquete de WebDeploy

Tras intentar instalar el paquete de WebDeploy con una instrucción como la siguiente, el webrole se quedaba ciclado por un error en la ejecución de la tarea:

   1: ~dp0WebPICMD.exe /Install /Products:WDeploy /AcceptEULA

Después de añadir los correspondientes logs siguiendo las buenas prácticas, el problema se trataba de que al intentar descomprimir los paquetes de instalación una vez que se han descargado, da un error. Este error es debido a que las tareas elevadas se ejecutan como “NT AUTHORITY\SYSTEM”, cuya carpeta de perfil de usuario se encuentra bajo el directorio “system32”. Esto es especial, ya que en máquinas de 64bits (como todas las VMs de Windows Azure), los procesos de 64bits ven esta carpeta, pero los procesos de 32bits ven la carpeta “SysWOW64). Los paquetes de WebDeploy se descargan en la carpeta “system32” al ser WebPICMD.exe de 64bits, pero algunas dependencias usan un ejecutable auto-extraible de 32bits, dando origen al error descrito.


Para solucionar este error, la única referencia en la web es la de nuestro Ángel de la Guarda Steve Marx en el post “Windows Azure Startup Tasks Tips and Tricks”, donde se da más detalle del mismo.


De este modo, la solución al problema 1 es cambiar en la registry la ubicación de esta carpeta antes de ejecutar la instalación y dejarla como estaba después de la misma. Quedaría de la siguiente forma:




   1: md "%~dp0appdata" 
   2: reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d "%~dp0appdata" /f 
   3: "%~dp0webpicmd" /Install /Products:WDeploy /AcceptEula >>log.txt 2>>err.txt 
   4: reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders"/v "Local AppData" /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /f

La segunda tarea de instalar el servicio de administración remota era muy sencilla, simplemente habilitar esta característica en la VM y arrancar el servicio, no sin antes tocar algún parámetro en el registro de Windows:



   1: start /w ocsetup IIS-ManagementService  
   2: reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WebManagement\Server /v EnableRemoteManagement /t REG_DWORD /d 1 /f  
   3: net start wmsvc  

 


Problema nº2: al intentar conectar a través de WebMatrix desde dentro o fuera de la VM, aparece el error “Unable to establish connection”


Este fue muy “gracioso”, por el número de horas que tuve que dedicarle el fin de semana y por los más de otros 30 despliegues más probando otras alternativas. Digo gracioso por cuál fue la solución.


El síntoma era que una vez que las startup tasks realizaron su trabajo (el puerto 8172 abierto, se instaló correctamente WebDeploy y estaba habilitado el servicio IIS Remote Management), al intentar conectar a través de WebMatrix, me aparecía el warning de advertencia de que no confiaba en el certificado del servidor –cosa totalmente correcta-, pero a continuación me aparecía el mensaje “Unable to establish connection”:


UnableToConnect


El puerto 8172 abierto, las credenciales correctas, el nombre del sitio correcto –nótese que desde esta release el site en IIS se denomina “DotNetNuke”-, la URL correcta y nombre de servidor correctos. ¿Qué fallaba?


Después de intentar ver algo en el visor de sucesos remoto, comenzar a utilizar artillería –PSTools, Fiddler, etc.- nada concluyente. La única información diferente era la otorgada por la aplicación de consola “msdeploy.exe”, devolviendo el código de error “ERROR_DESTINATION_NOT_REACHABLE” seguido de un precioso “404 Not Found”.


DESTINATION_UNREACHABLE


Sin más información ni nada interesante tras dos días de búsqueda por foros técnicos, casi da vergüenza comentar la solución.


La solución al problema 2 es simplemente cambiar el orden de las startup tasks, esto es, instalar primero IIS Management Service y a continuación instalar Web Deploy. Parece que al contrario, Web Deploy no se registra correctamente y hay que reinstalarlo.


La conclusión mereció un tweet:


BecauseOrderMatters



Conclusión


Espero que sirva de ayuda, tanto la nueva característica de WebDeploy en el DNN Azure Accelerator como las soluciones a los problemas encontrados. En breve estará todo empaquetado en una nueva release con muchas novedades aparte de esta.


Un saludo y happy coding!

jueves, 20 de septiembre de 2012

DotNetNuke on Azure: from A to Zure

DotNetNukePoweredWAWhat a title to begin a post! It is actually something that I've been trying to take for some time: start a series of posts dedicated to the publication of the well-known CMS DotNetNuke on the Windows Azure platform commenting on each of the aspects, since the creation of the portal to the management of updates and post-maintenance, bringing each one of the tricks I've been finding over these past two years.

After having some "break-in" in the matter and after seeing confused people with the new Windows Azure Websites and the Virtual Machines (IaaS) options, adding to the already mature platform PaaS (Cloud Services with the DotNetNuke Azure Accelerator), I found almost every day answering questions about the basics of Windows Azure and others not as basic as how to perform backups depending on the choice made.

That is why, after making me a harakiri while planning my little free time, I decided to start this idea plus writing about other topics. They will both be written in Spanish as in English –perhaps with one day of difference- to increase the audience.

The number of initial blogs that I have in mind will be focused on the operational aspects of hosting DotNetNuke CE on Azure and I accept any suggestion. It is to make an interactive series where we clarify issues that may be obvious to some and not to others.

The second series of entries that I thought is about the specific development of DNN modules hosted in Windows Azure, which of course, will not have much sense without having earlier begun the previous.

AzurePlatformSiteHostingOptions

The initial series is as follows:

  1. What is DotNetNuke? What is Windows Azure? And DotNetNuke on Azure
  2. Azure Websites, Virtual Machines, or Cloud Services: what to choose?
  3. SQL Server Virtual Machines or SQL Azure: what to choose?
  4. DotNetNuke on Azure Websites: deploying the content management system
  5. DotNetNuke on Azure Websites: upgrade management
  6. DotNetNuke on Azure Websites: making changes with WebMatrix 2
  7. DotNetNuke on Azure Websites: integrating with TFS and Git
  8. DotNetNuke on Azure Websites: scaling our website
  9. DotNetNuke on Virtual Machines: deploying the content management system
  10. DotNetNuke on Virtual Machines: upgrade management
  11. DotNetNuke on Virtual Machines: enabling the FTP, SMTP, and other services
  12. DotNetNuke on Virtual Machines: sending backups to Azure Storage
  13. DotNetNuke on Virtual Machines: scaling our website
  14. DotNetNuke in Cloud Services: deploying the content management system
  15. DotNetNuke in Cloud Services: upgrade management
  16. DotNetNuke in Cloud Services: customizing the service package
  17. DotNetNuke in Cloud Services: scaling our website

As you can see, the thing have crumbs. Tomorrow I will be starting with the first entries and you know, if you have any suggestions to add some chapters, are welcome.

Un saludo y Happy Coding!

DotNetNuke en Azure: de la A a la Zure

DotNetNukePoweredWA¡Menudo título para comenzar un post! En realidad es algo que llevo intentando emprender desde hace algún tiempo: comenzar una serie de entradas dedicadas a la publicación del archiconocido gestor de contenidos DotNetNuke sobre la plataforma Windows Azure comentando cada uno de los aspectos, desde la creación del portal hasta la gestión de actualizaciones y mantenimiento del mismo, aportando cada uno de los trucos que he ido encontrándome durante estos dos últimos años.

Después de tener cierto “rodaje” en la materia y después de ver gente algo confundida ahora que tenemos en modo Preview las Windows Azure Websites y las Virtual Machines (IaaS) sumándose a la ya madura plataforma PaaS (Cloud Services con el DotNetNuke Azure Accelerator), me he encontrado respondiendo casi a diario cuestiones sobre aspectos básicos de Windows Azure y otros no tan básicos como la manera de realizar copias de seguridad dependiendo de la elección realizada.

Es por ello que, después de hacerme un harakiri con la planificación de mi poco tiempo libre, he decidido poner en marcha esta idea a la vez que voy escribiendo sobre otros temas. Estarán escritos tanto en español como en inglés –puede que alguno u otro esté con un día de diferencia- para ampliar la audiencia.

La serie de blogs inicial que tengo en mente irá centrada sobre los aspectos operativos de alojar DotNetNuke CE sobre Azure y acepto cualquier sugerencia. Se trata de hacer una serie interactiva donde aclararemos cuestiones que pueden ser evidentes para algunos y no tanto para otros.

La segunda serie de entradas que tengo en pensada es sobre el desarrollo específico de módulos DNN alojados en Windows Azure que claro está, no tendrá mucho sentido sin antes haber comenzado la anterior.

AzurePlatformSiteHostingOptions

La serie inicial será la siguiente:

  1. ¿Qué es DotNetNuke? ¿Qué es Windows Azure? ¿Y DotNetNuke sobre Azure?
  2. Azure Websites, Virtual Machines o Cloud Services: ¿qué elegir?
  3. SQL Server en Virtual Machines o SQL Azure: ¿qué elegir?
  4. DotNetNuke en Azure Websites: desplegando el gestor de contenidos
  5. DotNetNuke en Azure Websites: gestión de actualizaciones
  6. DotNetNuke en Azure Websites: realizando modificaciones con WebMatrix 2
  7. DotNetNuke en Azure Websites: integrando con Git y TFS
  8. DotNetNuke en Azure Websites: escalando nuestro sitio web
  9. DotNetNuke en Virtual Machines: desplegando el gestor de contenidos
  10. DotNetNuke en Virtual Machines: gestión de actualizaciones
  11. DotNetNuke en Virtual Machines: activando FTP, SMTP y otros servicios
  12. DotNetNuke en Virtual Machines: enviando copias de seguridad a Azure Storage
  13. DotNetNuke en Virtual Machines: escalando nuestro sitio web
  14. DotNetNuke en Cloud Services: desplegando el gestor de contenidos
  15. DotNetNuke en Cloud Services: gestión de actualizaciones
  16. DotNetNuke en Cloud Services: personalizando el paquete de servicio
  17. DotNetNuke en Cloud Services: escalando nuestro sitio web

Como veis, la cosa tiene miga. Mañana mismo comienzo con la primera de las entradas y ya sabéis, si tenéis alguna sugerencia con añadir algún capítulo, bienvenida sea.

Un saludo y Happy Coding!

miércoles, 12 de septiembre de 2012

[Offtopic] Cómo instalar Canal+ YOMVI en Windows 8

CanalPlusYomvi

Hoy toca escribir uno de esos posts que tienen los días contados ya que supongo que Canal+ adoptará medidas en breve, pero espero que a alguno le ayude mientras tanto.

Durante el pasado Megathon de Windows 8 comenté que prácticamente todas las aplicaciones que hoy en día funcionan en Windows 7 se ejecutan sin problemas en Windows 8. Una de las que entran en la excepción para confirmar la regla es la App de Canal+ Yomvi para poder ver en tu PC los contenidos de Canal Plus a los que estés suscrito (realmente no todo pero hasta 18 canales por el momento). Ya se había convertido en una de mis aplicaciones favoritas y hace meses atrás, cuando instalé la Release Preview de Windows 8, no conseguí echarla a andar correctamente ya que la imagen iba a tirones.

Con la versión RTM de Windows 8 y con los drivers actualizados de tu tarjeta de video, hay un “workaround” para lograr instalar y ejecutar la aplicación correctamente:

  1. Descargar la aplicación cliente de Canal+ Yomvi para PC desde este enlace: http://www.plus.es/canalplusyomvi/descarga/. Fíjate que si intentas instalar la aplicación te dará el siguiente error:

    YomviInstallError
  2. Descargar el descompresor 7-Zip desde la siguiente URL: http://www.7-zip.org/download.html
  3. Descomprimir el archivo ejecutable descargado en el Paso 1 pulsando con el botón derecho del ratón, con lo que obtendremos el fichero de instalación “NagraMediaPlayer.msi”
    NagraMediaPlayer
  4. Iniciar la instalación haciendo doble click en el archivo y completar el asistente, indicando que cree el acceso directo en el escritorio:

    YomviInstallWizard
  5. Pulsando con el botón derecho sobre el icono del escritorio, establecemos las siguientes propiedades en la pestaña de Compatibilidad
    1. Seleccionar modo de compatibilidad Windows 7
    2. Ejecutar la aplicación como Administrador

      CompatibilidadAccesoDirecto
  6. Ejecutar la aplicación e introducir los credenciales de tu suscripción a Canal+
    YomviLoggedIn
  7. A disfrutar!

Como comenté al principio, esta solución la había probado con la Release Preview de Windows 8 y la imagen me iba a tirones, cosa que parece solucionarse al poder instalar los correspondientes drivers de la tarjeta de video para la versión RTM. Hay algunos enlaces y menús en la parte superior que parecen no funcionar como debieran (supongo que por que de algún modo está utilizando el motor de IE10 incorrectamente), pero después de pasar por encima el ratón y hacer click puedes acceder a ellos sin problemas.

Ya puedo seguir desarrollando mientras veo mi serie favorita Smile

DesktopYomviCropped

Un saludo y Happy Coding!

miércoles, 29 de agosto de 2012

[Evento] Megathon Windows 8 en Tenerife

Banner_1Si aún no te has enterado es porque has pasado este verano totalmente desconectado, no hay otra explicación. El próximo 7, 8 y 9 de septiembre (fin de semana) se ha montado una gorda a nivel nacional y en 13 ciudades se desarrollará al mismo tiempo el primer Hackathon multiciudad en España.

El Megathon Windows 8 es una ocasión estupenda para aprender a desarrollar para Windows 8 (de hecho ya puedes hacerlo con toda la formación gratuita que se ha publicado en el sitio oficial del Megathon), para hacer networking con personas que comparten tus mismos intereses y para acabar el fin de semana con una app que rentabilizar en la Windows Store.

Partió de una idea loca en Twitter sobre hacer un hackathon aprovechando la salida de Windows 8, que a través de un efecto mariposa –y de ver quién los tenía más grandes, los megas me refiero-, acabó convirtiéndose en un hackathon multiciudad ahora denominado Megathon. En este post de Jose Bonnin tienes más información de cómo empezó todo.

¿En qué consiste?

En resumen, en cada ciudad se crearán grupos de 4 desarrolladores/diseñadores para crear una aplicación para Windows 8 a contrarreloj durante el fin de semana, ya sea con .NET, Javacript+HTML y cualquier añadido (¿Windows Azure? ¿Bing?). No estaréis solos, habrán varios mentores por ciudad ofreciendo apoyo técnico así como impartiendo diversas charlas en paralelo.

El domingo por la tarde, se votará la aplicación ganadora accediendo a unos premios locales a través de un jurado local. Las aplicaciones que hayan ganado en cada ciudad participarán en el concurso nacional, con la posibilidad de conseguir hasta un viaje a Redmond para conocer el campus de Microsoft con los gastos pagados para todos los miembros del equipo.

Más información: bases Megathon Windows 8 

¿Cuánto cuesta?

El evento es gratuito para todos los asistentes, gracias al patrocinio y colaboración de diversas entidades a lo largo del territorio nacional, así como la dedicación desinteresada de los mentores –vamos, que también tenemos jiribilla por participar de algún modo en tan magno evento.

En el caso de Tenerife tenemos que dar las gracias a Microsoft, Intelequia Software Solutions, General de Software de Canarias, Fundación Empresa Universidad de La Laguna, Cámara de Comercio de Santa Cruz de Tenerife, Fuentealta y Panrico Donuts, así como a Telerik, a los miembros de TenerifeDev y en general a todos los organizadores y mentores a nivel nacional que han puesto su granito de arena para que esto haya sido posible.

¿Dónde me registro?

Para registrarte en el Megathon de Windows 8 de Tenerife, sigue el enlace siguiente:

Registro Megathon Windows 8 Tenerife

En la web oficial del Megathon tienes más información sobre dónde registrarte para el resto de ciudades.

¿Dónde se desarrolla?

En el caso de Tenerife y gracias a la Fundación Empresa Universidad de La Laguna, dispondremos de unas aulas para el desarrollo del mismo durante todo el fin de semana. Sigue este enlace para ver cómo llegar.

¿Cuál va a ser la agenda?

En la web del Megathon de Windows 8 disponéis de la agenda completa de los 3 días, comenzando el viernes 7 de septiembre a las 17:00 horas y finalizando el domingo 9 de septiembre a las 19:00 horas.

NOTA IMPORTANTE PARA TENERIFE: El horario de la agenda es siempre hora local, con lo que en Tenerife comenzaremos a las 17:00 GMT+0 (hora canaria).

¿Tengo que llevar algo?

Para poder disfrutar de este pedazo de evento es necesario que traigáis vuestro propio equipo con Windows 8 instalado –vale instalado en una máquina virtual. Si no sois suscriptores de MSDN/Technet podéis descargaros una versión de prueba de 90 días. También tenéis que traer instalado Visual Studio 2012, bien la versión Express gratuita o la versión de prueba de Visual Studio 2012 Ultimate. En este enlace se explica cómo instalar Windows 8 en un VHD con el arranque nativo de Windows 7.

Más información

Podéis manteneros informados de los cambios y últimas noticias en el blog, o bien puedes conversar con nosotros por twitter mediante el hashtag #megathonW8.

Un saludo. ¡Nos vemos el 7!

Related Posts Plugin for WordPress, Blogger...