miércoles, 9 de agosto de 2017

Creando Nuget Server Local y haciendo la instalación con WebDeploy

La forma práctica, ordenada y ágil en que podemos compartir el código dentro de nuestra organización es a través de paquetes nuget, los cuales no son mas que bibliotecas de código reutilizable que podemos incluir en nuestros proyectos de Visual Studio fácilmente.  Por lo que lo que necesitamos es un "Repositorio" de estos paguetes de código reutilizable llamados Nuget.

Para crear este repositorio tenemos 3 opciones:

1) Una Carpeta Compartida en la red
2) Un servidor de Nuget Local
3) Utilizar los servidores de Nuget.Org para compartir nuestro código al rededor del mundo con infraestructura de terceros

Análisis de las opciones
Crear una Carpeta Compartida es una opción muy fácil poco segura, ordenada y elegante, por lo que no recomiendo esta opción más que para una prueba de concepto.

Utilizar los servidores de Nuget.Org de forma privada es una opción la cual puede evaluar primordial mente si su equipo esta distribuido geográficamente, sino recomiendo la opción de un Servidor Nuget.  Para más información ver el siguiente enlace: https://www.myget.org/nuget 

Nuestro análisis nos lleva a ver la opción 2 de crear un servidor Nuget con nuestra propia infraestructura disponible dentro de nuestra organización y esto es el lo que vamos a ver en el desarrollo del artículo.

Prerequisitos

Requerimientos de Hardware
Procesador: 1 Nucleo
Memoria RAM: 1 GB
Disco: 127 GB

Requerimientos de Software
Windows Server 2012 Standard Edition
IIS 8.0 con las siguientes features activadas:
DisplayName
-----------
Web Server (IIS)
Web Server
Common HTTP Features
Default Document
Directory Browsing
HTTP Errors
Static Content
Health and Diagnostics
HTTP Logging
Logging Tools
Request Monitor
Performance
Static Content Compression
Security
Request Filtering
Windows Authentication
Application Development
.NET Extensibility 3.5
.NET Extensibility 4.5
ASP.NET 3.5
ASP.NET 4.5
ISAPI Extensions
ISAPI Filters
Management Tools
IIS Management Console
IIS Management Scripts and Tools
Management Service

Nota:  Para obtener este listado puede ejecutar la siguiente línea en powershell:

 Import-module servermanager ; Get-WindowsFeature | where {$_.Installed -eq $True -and $_.Path
 -like "*web*" }| select displayname

Como vamos a realizar la instalación con WebDeploy necesitamos instalarlo para IIS 8.0
https://www.iis.net/downloads/microsoft/web-deploy 

Debemos validar que el servicio Management Services esta levantado así que ejecute esta línea de comando en el servidor web:
net start wmsvc

Por último como el proyecto Nuget Server que vamos a instalar require Framework 4.6 es necesario instalar dicho framework que no viene con Windows Server 2012.   Para ello utitlizar el siguiente enlace:

https://www.microsoft.com/en-us/download/details.aspx?id=53344

Listos ahora pasemos a Visual Studio para crear el proyecto Web Nuget Server

Creación de Proyecto Web Nuget Server




Desde Visual Studio Cree un Nuevo Proyecto Web Vacio

Y ejecute desde la consola de Package Manager la siguiente línea:

Install-Package NuGet.Server -Version 2.11.3

Le Preguntará si permite modificar el archivo web.config del proyecto seleccione afirmativamente la opción.

Recomiendo revise las configuraciones del archivo web.config siguientes:

 



Ahora vamos a crear un perfil de publicación en VS para realizar la instalación automatizada del Servidor Nuget en el Servidor Web recién configurado.



Valide la conexión y si le de errror revise los prerequisitos o vaya al siguiente enlace:
https://docs.microsoft.com/en-us/iis/publish/troubleshooting-web-deploy/web-deploy-error-codes

Si vemos el resumen del Perfil de publicación notaremos que el servicio referenciado es Web Management Services o WMSvc



Y finalmente si publicamos el proyecto a través del perfil de publicación obtendremos el resultado final... Nuestro servidor Nuget Listo!:



Y eso es todo amigos, en este articulo revisamos como crear un servidor Nuget Local para crear nuestros paquetes de bibliotecas de código para compartir con el equipo de una forma ágil y eficiente desde Visual Studio 2017, Y lo hicimos de forma automatizada ya que utilizamos Web Deploy para instalar el Proyecto Web del Servidor Nuget en un Servidor Windows 2012 con el Web Server Habilitado y el Servicio Web Management Service para realizar instalaciones remotas a través de la aplicación Web Deploy de Microsoft.

Code4Fun!,

Juan Manuel Herrera Ocheita

No hay comentarios.: