Infraestructura DevOps personal
🎦 SERIE INFRAESTRUCTURA DEVOPS PERSONAL 🎦 Episodio anterior: 🔗 Episodio 2 - Servidor DevOps: configuraciones previas requeridas Episodio actual: 🔗 Episodio 3 - Servidor DevOps: .NET (Runtimes y SDKs) Episodio posterior: 🔗 Episodio 4 - Servidor DevOps: OpenJDK (Amazon Corretto) Ver todos los episodios: 🔗 Temporada 1
Episodio 3 - Servidor DevOps: .NET (Runtimes y SDKs)
Sobre Microsoft .NET
Microsoft .NET es un marco de software que se utiliza para crear, ejecutar e implementar aplicaciones en varias plataformas. Incluye una rica biblioteca de clases, compiladores, metadatos y varios modelos de aplicaciones para crear tanto aplicaciones independientes como aplicaciones alojadas en la web.
.NET Runtime vs .NET SDK
Por un lado, la versión de tiempo de ejecución o Runtime es el componente de software que implementa el modelo de ejecución de un lenguaje de programación, es decir, el que incluye las bibliotecas necesarias para ejecutar aplicaciones compatibles con .NET. Sin embargo, la versión de kit de desarrollo de software o SDK (Software Development Kit) contiene, además de la versión de tiempo de ejecución, las herramientas necesarias para desarrollar aplicaciones .NET.
👉 En 2002, Microsoft publicó .NET Framework, una plataforma de desarrollo para la creación de aplicaciones Windows. En la actualidad, .NET Framework se encuentra en la versión 4.8.1 y Microsoft todavía la admite completamente. 👉 En 2014, Microsoft presentó .NET Core como sucesor multiplataforma y de código abierto para .NET Framework. Esta nueva implementación de .NET mantiene el nombre .NET Core hasta la versión 3.1. La siguiente versión después de .NET Core 3.1 se denominaba .NET 5. 👉 Todos los años se lanzan nuevas versiones de .NET, cada una con un número de versión principal. Estas versiones incluyen características nuevas significativas y a menudo habilitan nuevos escenarios. 🔗 https://learn.microsoft.com/es-es/dotnet/core/introduction
¿Qué necesitamos nosotros en nuestro servidor DevOps?
El servidor DevOps debe estar capacitado para poder compilar nuestras aplicaciones .NET a través de una acción de compilación de una canalización de integración continua, ejecutada gracias a un agente autohospedado de Azure Pipelines. Así que, necesitaremos instalar de este modo la versión de kit de desarrollo de software o SDK de .NET.
Habilitar Internet Information Services
Como también tenemos pensado utilizar el servidor DevOps como entorno de desarrollo para hospedar nuestras aplicaciones web realizadas en .NET, es necesario primero habilitar Internet Information Services antes de instalar la última versión SDK de .NET.
Internet Information Services (IIS) es un servidor web flexible de Microsoft, de propósito general, que se ejecuta en sistemas Windows para atender solicitudes de páginas HTML o archivos. 🔗 Home: The Official Microsoft IIS Site
Para ello, pulsamos la combinación de teclas Windows
+ R
y ejecutamos el comando appwiz.cpl
desde la ventana Run.
Ahora seleccionamos la opción Turn Windows features on or off de la ventana Programs and Features.
Avanzamos por los pasos del asistente Add Roles and Features dejando las opciones por defecto, hasta llegar al paso Select server roles.
En el paso Select server roles del asistente Add Roles and Features seleccionamos el rol Web Server (IIS) y hacemos clic en el botón Next > para continuar. Seguimos avanzando hasta el paso Select role services de Web Server Role (IIS).
👉 Al habilitar el rol Web Server (IIS) se muestra un cuadro de dialogo avisándonos que se debe habilitar también la característica IIS Management Console de la sección Management Tools. Hacemos clic pues en el botón Add Features para habilitarla igualmente.
En el paso Select role services de Web Server Role (IIS) habilitamos las siguientes características:
- Web Server (Servicios World Wide Web):
- Common HTTP Features (Características HTTP comunes):
- Default Document (Documento predeterminado)
- Directory Browsing (Examen de directorios)
- HTTP Errors (Errores HTTP)
- Static Content (Contenido estático)
- Health and Diagnostics (Estado y diagnóstico):
- HTTP Logging (Registro HTTP)
- Performance (Características de rendimiento):
- Static Content Compression (Compresión de contenido estático)
- Dynamic Content Compression (Compresión de contenido dinámico)
- Security (Seguridad):
- Request Filtering (Filtrado de solicitudes)
- Windows Authentication (Autenticación de Windows)
- Application Development (Características de desarrollo de aplicaciones):
- .NET Extensibility 4.8
- ASP.NET 4.8
- ISAPI Extensions (Extensiones ISAPI)
- ISAPI Filters (Filtros ISAPI)
- Common HTTP Features (Características HTTP comunes):
- Management Tools (Herramientas de administración web):
- IIS Management Console (Consola de administración de IIS)
- IIS Management Scripts and Tools (Scripts y herramientas de admnistración de IIS)
- Management Service (Servicio de administración de IIS)
👉 Al habilitar la característica .NET Extensibility 4.8 de la sección Application Development se muestra un cuadro de dialogo avisándonos que se debe habilitar también la característica ASP.NET 4.8 de la sección .NET Framework 4.8 Features. Hacemos clic pues en el botón Add Features para habilitarla igualmente.
👉 Al habilitar la característica ASP.NET 4.8 de la sección Application Development se muestra un cuadro de dialogo avisándonos que se deben habilitar también las características ISAPI Filters e ISAPI Extensions de la sección Application Development. Hacemos clic pues en el botón Add Features para habilitarlas igualmente.
Cuando finalice el asistente Add Roles and Features de instalar el rol Web Server (IIS) con las características que le hemos indicado, tenemos que reiniciar el servidor.
Para comprobar que se ha habilitado correctamente IIS una vez reiniciado el servidor, pulsamos la combinación de teclas Windows
+ R
y ejecutamos el comando regedit
desde la ventana Run.
La versión de IIS se muestra en la ventana Registry Editor, en la ruta HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp
. Si falta la subclave InetStp
, significa que IIS no está habilitado.
El valor REG_DWORD
de MajorVersion
representa la versión mayor y el valor de REG_DWORD
de MinorVersion
representa la versión menor. Para el caso del sistema operativo Windows Server 2022 Standard Edition, Versión 21H2 (compilación de SO 20348.587 - 8 de Marzo de 2022), estos valores serán 10
y 0
, respectivamente, indicando de esta forma que se trata de la versión 10.0 de IIS.
Igualmente, visitando la URL http://localhost
desde el navegador se debe mostrar el sitio de IIS configurado por defecto tras su instalación.
Activación HTTP para servicios Windows Communication Foundation
Windows Communication Foundation (WCF) es un marco para construir, configurar e implementar servicios distribuidos en red. Permite servicios de hospedaje en cualquier tipo de proceso del sistema operativo. 🔗 https://learn.microsoft.com/es-es/dotnet/framework/wcf/whats-wcf
Para habilitar el hospedaje de servicios WCF en IIS, pulsamos la combinación de teclas Windows
+ R
y ejecutamos el comando appwiz.cpl
desde la ventana Run. A continuación, seleccionamos la opción Turn Windows features on or off de la ventana Programs and Features.
Ahora, nos desplazamos por el asistente Add Roles and Features hasta llegar al paso de Features donde habilitamos la característica HTTP Activation, dentro de .NET Framework 4.8 Features, WCF Services.
👉 Al habilitar la característica HTTP Activation se muestra un cuadro de dialogo avisándonos que se deben habilitar también las características Configuration APIs y Process Model de la sección Windows Process Activation Service. Hacemos clic pues en el botón Add Features para habilitarlas igualmente.
Web Deploy 3.6
Para la implementación de aplicaciones web y/o sitios web de .NET debemos instalar la extensión Web Deploy en nuestro servidor DevOps. Nos descargamos la extensión del sitio oficial de IIS:
Ahora ejecutamos el archivo de instalación de Web Deploy denominado webdeploy_amd64_en-us.msi
y completamos su asistente de instalación dejando las opciones por defecto, excepto en aquellos pasos en los que os indique qué opciones hay que seleccionar (ver capturas de pantalla).
Seleccionamos el tipo de instalación completa haciendo clic en el botón Complete.
Para comprobar que se ha instalado correctamente Web Deploy en nuestro servidor DevOps, pulsamos la combinación de teclas Windows
+ R
y ejecutamos el comando services.msc
desde la ventana Run.
En la ventana Services verificamos que está presente el servicio denominado Web Deployment Agent Service. Este servicio debe estar ejecutándose (Status: Running) y con inicio automático (Startup Type: Automatic).
Por otro lado, procedemos a configurar el acceso remoto para despliegues en IIS. Para ello, pulsamos la combinación de teclas Windows
+ R
y ejecutamos el comando inetmgr
desde la ventana Run.
Desde la ventana Internet Information Services (IIS) Manager, seleccionamos el servidor DEVOPSRV
y hacemos doble-clic en el icono Management Service.
Primero paramos el servicio Management Service haciendo clic en Stop.
Después, marcamos la casilla de verificación Enable remote connections y seleccionamos Windows credentials only. Aplicamos los cambios haciendo clic en Apply. Y, por último, hacemos clic en Start para arrancar de nuevo el servicio Management Service.
Para una correcta delegación de los privilegios para el despliegue de las aplicaciones .NET en IIS vamos a crear un nuevo usuario. Para ello, pulsamos la combinación de teclas Windows
+ R
y ejecutamos el comando compmgmt.msc
desde la ventana Run.
En la ventana Computer Management nos desplazamos a System Tools, Local Users and Groups y Users. Aquí hacemos clic con el botón derecho del ratón sobre una zona en blanco (dentro de Users) y seleccionamos New User… del menú contextual.
En el cuadro de dialogo New User creamos el usuario con las siguientes características:
- User name:
DevOps-IIS
- Description:
DevOps account for deployment purposes on IIS.
- Password: la que quieras 😄
- User cannot change password:
Sí
- Password never expires:
Sí
Posteriormente, agregamos el usuario al grupo de administradores del servidor. Para ello, hacemos clic con el botón derecho del ratón sobre el nombre del usuario DevOps-IIS y seleccionamos la opción Properties del menú contextual.
En la ventana de propiedades del usuario, seleccionamos la pestaña Member of y pulsamos el botón Add….
Seguidamente, tecleamos Administrators
en el cuadro de texto Enter the object names to select de la ventana Select Groups y pulsamos el botón Check Names para comprobar que existe dicho grupo.
Si el grupo de administradores lo hemos tecleado correctamente, aparecerá ahora como DEVOPSSRV\Administrators
. Pulsamos el botón OK para agregar el usuario a dicho grupo.
A continuación, nos vamos a la pestaña Remote Desktop Services Profile de la ventana de propiedades del usuario.
Marcamos la casilla de verificación Deny this user permissions to log on to Remote Desktop Session Host server para denegar el inicio de sesión por escritorio remoto del usuario en este servidor y pulsamos el botón OK.
Como el usuario DevOps-IIS solamente lo queremos para los despliegues de las aplicaciones .NET en IIS hay que evitar que se puedan realizar acciones no permitidas con él, así que, tenemos que modificar las directivas de seguridad local del servidor. Para ello, pulsamos la combinación de teclas Windows
+ R
y ejecutamos el comando secpol.msc
desde la ventana Run.
En la ventana Local Security Policy nos desplazamos a Local Policies, User Rights Assignment y localizamos las siguientes políticas de seguridad:
- Deny log on as a batch job (denegar el inicio de sesión como trabajo por lotes)
- Deny log on locally (denegar el inicio de sesión localmente)
- Deny log on through Remote Desktop Services (denegar inicio de sesión a través de servicios de escritorio remoto)
Para aplicar una de estas políticas a nuestro usuario debemos primero agregarlo a dicha política. Por ejemplo, para agregar el usuario a la política Deny log on as a batch job, hacemos doble clic sobre dicha política.
Ahora, pulsamos el botón Add User or Group de la ventana Deny log on as a batch job Properties.
Seguidamente, tecleamos el nombre del usuario (DevOps-IIS
) en el cuadro de texto Enter the object names to select de la ventana Select Users or Groups y pulsamos el botón Check Names para comprobar que existe dicho usuario.
Si el usuario lo hemos tecleado correctamente, aparecerá ahora como DEVOPSSRV\DevOps-IIS
. Pulsamos el botón OK para agregar el usuario a dicha política de seguridad.
Repetimos el mismo proceso para aplicar el resto de las políticas al usuario.
Variable de entorno ASPNETCORE_ENVIRONMENT
Para indicar a la versión de tiempo de ejecución o Runtime de .NET que las aplicaciones desplegadas en el servidor DevOps van a ejecutarse como entorno de desarrollo, tenemos que definir la variable de entorno ASPNETCORE_ENVIRONMENT
con el valor Development
. Para ello, pulsamos la combinación de teclas Windows
+ R
y ejecutamos el comando sysdm.cpl
desde la ventana Run.
En la ventana System Properties, seleccionamos la pestaña Advanced y pulsamos el botón Environment Variables….
Después, en la ventana Environment Variables, pulsamos el botón New… de la sección System variables.
Ahora agregamos la nueva variable con su valor correspondiente:
- Variable name:
ASPNETCORE_ENVIRONMENT
- Variable value:
Development
.
Si deseas conocer como se definen los entornos en las aplicaciones .NET visita el siguiente enlace: 🔗 Usar varios entornos en ASP.NET Core
Instalación SDKs .NET
💡 Procura siempre instalar el SDK de la última versión soportada de .NET Framework. La última en mi caso es la versión 4.8.1, lanzada el día 9 de agosto de 2022, es decir, la última que estaba vigente cuando he publicado esta entrada en el blog. O bien, si aún mantienes aplicaciones de .NET Framework no actualizadas y necesitas versiones más antiguas como, por ejemplo, la 4.5 o la 4.6.1, entonces debes instalar las versiones SDKs correspondientes para que puedas compilarlas en este servidor.
👉 Lo recomendable es que actualices las aplicaciones a la última versión de .NET Framework soportada o realices su migración a la última versión .NET (Core).
💡 Procura siempre instalar el SDK de la última versión soportada de .NET (Core). A ser posible que sea una versión Long Term Support (LTS). Si la versión más reciente es una Standard Term Support (STS), te recomiendo que instales además la versión anterior a ella que será LTS. La última en mi caso es la versión 7.0 STS (7.0.1), lanzada el día 13 de diciembre de 2022, es decir, la última que estaba vigente cuando he publicado esta entrada en el blog. Como es una versión STS, también me voy a descargar la versión anterior, la 6.0 LTS (6.0.12), lanzada el día 13 de diciembre de 2022. O bien, si aún mantienes aplicaciones de .NET Core no actualizadas y necesitas versiones más antiguas como, por ejemplo, la 5.0, entonces debes instalar las versiones SDKs correspondientes para que puedas compilarlas en este servidor.
Las versiones LTS (Long Term Support o soporte a largo plazo) de .NET son compatibles durante tres años después de la versión inicial y las versiones STS (Standard Term Support o soporte estándar) de .NET son compatibles durante seis meses después de una versión posterior de STS o LTS. Los lanzamientos ocurren cada 12 meses, por lo que el período de soporte para STS es de 18 meses.
🔗 https://dotnet.microsoft.com/es-es/platform/support/policy/dotnet-core
Descarga SDKs .NET
Nos descargamos del sitio oficial de Microsoft .NET los siguientes SDKs:
Enlaces directos:
🔗 .NET 7.0 STS (2022-12-13 / v7.0.1)
Sitio oficial de descarga de Microsoft .NET
Instalar .NET Framework 4.8.1 Developer Pack
Para instalar .NET Framework 4.8.1 Developer Pack ejecutamos el archivo de instalación ndp481-devpack-enu.exe
y completamos su asistente de instalación dejando las opciones por defecto, excepto en aquellos pasos en los que os indique qué opciones hay que seleccionar (ver capturas de pantalla).
Instalar .NET 6.0 SDK
Para instalar .NET 6.0 SDK ejecutamos el archivo de instalación dotnet-sdk-6.0.404-win-x64.exe
y completamos su asistente de instalación dejando las opciones por defecto, excepto en aquellos pasos en los que os indique qué opciones hay que seleccionar (ver capturas de pantalla).
Instalar .NET 7.0 SDK
Para instalar .NET 7.0 SDK ejecutamos el archivo de instalación dotnet-sdk-7.0.101-win-x64.exe
y completamos su asistente de instalación dejando las opciones por defecto, excepto en aquellos pasos en los que os indique qué opciones hay que seleccionar (ver capturas de pantalla).
Comprobar SDKs y Runtimes .NET
Para comprobar qué versiones SDKs y Runtimes de .NET tenemos instaladas en el servidor pulsamos la combinación de teclas Windows
+ R
y ejecutamos el comando cmd
desde la ventana Run. Seguidamente, tecleamos el comando dotnet --info
.
🔗 Cómo comprobar que .NET Core ya está instalado 🔗 Procedimiento para determinar qué versiones de .NET Framework están instaladas
¡Eso es todo amigos! ¡Nos vemos en el próximo episodio! 😄
comments powered by Disqus