IronPDF on Azure Linux with WEBSITE_RUN_FROM_PACKAGE
Al desplegar una API .NET utilizando IronPDF en un Azure Linux App Service con WEBSITE_RUN_FROM_PACKAGE habilitado, el renderizador de Chrome no logra desplegarse y la aplicación arroja un error al iniciar.
Error while deploying IronPdf Chrome renderer: 'Multiple issues occurred while trying to deploy Chrome (libatk-1.0.so.0: cannot open shared object file: No such file or directory) (IronInterop.so: cannot open shared object file: No such file or directory) (Read-only file system: '/home/site/wwwroot/runtimes')'
Cuando WEBSITE_RUN_FROM_PACKAGE está configurado, el directorio /home/site/wwwroot se vuelve de solo lectura. IronPDF necesita extraer binarios del renderizador nativo de Chrome y bibliotecas de tiempo de ejecución a una ubicación escribible al inicio, por lo que la restricción de solo lectura bloquea el despliegue. Además, el entorno Linux por defecto de Azure puede no tener las bibliotecas del sistema necesarias preinstaladas, lo que causa errores de objetos compartidos faltantes.
Solución
Tres opciones están disponibles dependiendo de las restricciones de su despliegue.
Opción 1: Instalar dependencias faltantes a través de SSH
Acceda al App Service a través de SSH y ejecute los siguientes comandos para instalar las bibliotecas del sistema requeridas:
apt update
apt install -y libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 \
libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 \
libxkbcommon-x11-0 libxrender1 libfontconfig1 libxshmfence1
apt update
apt install -y libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 \
libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 \
libxkbcommon-x11-0 libxrender1 libfontconfig1 libxshmfence1
Esta es una solución temporal. Los paquetes instalados de esta manera no persisten a través de reinicios y no son adecuados para entornos de producción que tienen restricciones de firewall de salida. Para la lista completa de paquetes necesarios por distribución de Linux, consulte la guía de despliegue en Linux.
Opción 2: Usar un contenedor Docker personalizado (Recomendado para Linux)
Construya una imagen Docker personalizada basada en Ubuntu o Debian, instale los paquetes del sistema requeridos con apt, e incluya los paquetes NuGet IronPdf y IronPdf.Native.Chrome.Linux en su archivo de proyecto. Este enfoque proporciona al renderizador un sistema de archivos escribible y dependencias preinstaladas en el momento de la construcción de la imagen.
Agregue los paquetes NuGet correspondientes a su .csproj:
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
Asegúrese de que la versión de IronPdf.Native.Chrome.Linux coincida con la versión de su paquete IronPdf. Incluir el paquete nativo en el proyecto evita que IronPDF intente una descarga en tiempo de ejecución, lo cual fallaría en un entorno de solo lectura o con restricciones de red.
Consulte la guía de Docker de IronPDF para un ejemplo completo de Dockerfile.
Option 3: Migrate to a Windows App Service
Los Windows App Services no tienen las mismas restricciones de permisos de sistema de archivos para WEBSITE_RUN_FROM_PACKAGE. Las bibliotecas de tiempo de ejecución de IronPDF para Windows son soportadas nativamente y pueden ser extraídas sin problemas. Migrar a un Windows App Service elimina la causa raíz por completo.

