Herramientas

Publicación de aplicaciones Angular en IIS (Internet Information Services) incluso con rutas

La publicación de una aplicación creada con Angular en IIS (Internet Information Services) es una tarea sencilla, simplemente se debe compilar esta para producción y copiar los archivos a la carpeta de IIS. En esta publicación se explicarán los pasos necesarios para realizar esto.

Compilación de la aplicación Angular

El primer paso para la publicación de una aplicación Angular en ISS es construir esta para producción. Si no se va a publicar la aplicación en la raíz del dominio es necesario indicar al compilador cuál será la URL base de la aplicación. Para ello se tiene que usar el comando ng build seguido de la opción --prod para indicar que se está preparando la aplicación para producción y --bare-href seguido de la URL base. Para una aplicación que se publicará en la ruta /ejemplo/ el comando a ejecutar en la terminal será el siguiente

ng build --prod --base-href=/ejemplo/

Lo que creará en la carpeta dist del proyecto una nueva carpeta llamada ejemplo con todos los recursos del proyecto.

Copiar la aplicación a IIS

Una vez creada la versión para producción de la aplicación, se debe copiar la carpeta resultante a la ruta de acceso física de IIS. En la instalación por defecto la ruta es C:\inetpub\wwwroot, pero esta puede ser diferente. Para comprobar la ubicación se abrir el Administrador de Internet Information Services (IIS) y en el sitio donde se desea publicar pulsar sobre la opción Configuración básica…

Pasos para acceder a la configuración básica de un sitio en IIS

Lo que debería mostrar una venta como la siguiente en la que se puede ver y modificar la ruta física al servidor seleccionado.

Ventana con la ruta de acceso física a la carpeta de IIS

En donde se puede ver que la ruta es %SystemDrive%\inetpub\wwwroot, donde %SystemDrive% es una variable en la que está el disco del sistema (por defecto C).

Ejecutar la aplicación en IIS

Una vez copiada la carpeta, ya se puede acceder a la aplicación desde un navegador. Simplemente se debe escribir el nombre del servidor seguido de la aplicación. En el caso de acceder desde la propia máquina se puede usar la ruta http://localhost/ejemplo/ para ver la aplicación funcionando.

Aplicación de ejemplo de Angular publicada con IIS

Aplicaciones Angular con rutas en IIS

En el caso de que la aplicación Angular se usen rutas lo normal es que al intentar acceder a una ruta aparezca un fallo 404 debido a que IIS no encuentra el archivo.

Error al publicar una aplicación Angular con rutas en IIS

Esto sucede porque no existe un archivo HTML en la ruta indicada y es necesario indicar a IIS que debe redirigir todas las solicitudes al punto de entrada de la aplicación Angular. Lo que se puede solucionar configurando las reglas de reescritura en el web.config de la aplicación. Un ejemplo de este archivo puede ser el que se muestra a continuación.

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/ejemplo-rutas/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Dado que el archivo hace una redirección es necesario tener instalado en IIS el complemento URL Rewrite. Un complemento que se ha usado previamente para publicar aplicaciones Node en IIS y redirigir las peticiones HTTP a HTTPS en IIS de forma automática. Ahora, si se copia el archivo a la raíz de la aplicación, y se modifica la ruta a la raíz de la aplicación en la línea 11 del archivo, se puede ver que IIS ya la funcionan las rutas de forma correcta.

IIS ya redirige todas las solicitudes correctamente a la aplicación Angular

Conclusiones

En esta publicación se ha visto como aplicaciones Angular en IIS, incluso cuando estas unas rutas. Un proceso que es relativamente sencillo y se puede llevar a cabo de una forma rápida y sencilla. Siendo incluso un proceso fácil de automatizar.

Imagen de Joshua Woroniecki en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: IISWindows

Recent Posts

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.