IronPDF on Azure Linux with WEBSITE_RUN_FROM_PACKAGE
Podczas wdrażania API .NET używającego IronPDF na Azure Linux App Service z włączoną opcją WEBSITE_RUN_FROM_PACKAGE, renderer Chrome nie udaje się wdrożyć i aplikacja wyrzuca błąd przy starcie.
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')'
Gdy ustawiony jest WEBSITE_RUN_FROM_PACKAGE, katalog /home/site/wwwroot staje się tylko do odczytu. IronPDF musi wyodrębnić natywne pliki binarne renderera Chrome i biblioteki uruchomieniowe do zapisywalnej lokalizacji podczas startu, więc ograniczenie do odczytu blokuje wdrożenie. Ponadto w domyślnym środowisku Linux na Azure mogą brakować wymagane biblioteki systemowe zainstalowane wcześniej, co powoduje błędy brakujących obiektów współdzielonych.
Rozwiązanie
Dostępne są trzy opcje w zależności od ograniczeń wdrożenia.
Opcja 1: Zainstaluj brakujące zależności przez SSH
Uzyskaj dostęp do App Service za pomocą SSH i uruchom następujące polecenia, aby zainstalować wymagane biblioteki systemowe:
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
To jest tymczasowe rozwiązanie. Pakiety zainstalowane w ten sposób nie przetrwają ponownego uruchomienia i nie są odpowiednie dla środowisk produkcyjnych z ograniczeniami zapory wychodzącej. Pełną listę wymaganych pakietów według dystrybucji Linux można znaleźć w przewodniku wdrażania na Linux.
Opcja 2: Użyj niestandardowego kontenera Docker (Zalecane dla Linux)
Zbuduj niestandardowy obraz Docker oparty na Ubuntu lub Debian, zainstaluj wymagane pakiety systemowe z pomocą apt, i dołącz pakiety NuGet IronPdf i IronPdf.Native.Chrome.Linux w pliku projektu. To podejście daje rendererowi zapisywalny system plików i zainstalowane zależności w momencie budowy obrazu.
Dodaj pasujące pakiety NuGet do swojego .csproj:
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
<PackageReference Include="IronPdf" Version="*" />
<PackageReference Include="IronPdf.Native.Chrome.Linux" Version="*" />
Upewnij się, że wersja IronPdf.Native.Chrome.Linux pasuje do wersji pakietu IronPdf. Zawieranie natywnego pakietu w projekcie zapobiega próbie pobrania go przez IronPDF podczas uruchamiania, co by się nie udało w środowisku tylko do odczytu lub z ograniczonym dostępem do sieci.
Zobacz przewodnik IronPDF Docker dla pełnego przykładu Dockerfile.
Opcja 3: Migruj do Windows App Service
Usługi Windows App Service nie mają tych samych ograniczeń uprawnienia do systemu plików dla WEBSITE_RUN_FROM_PACKAGE. Biblioteki uruchomieniowe Windows dla IronPDF są natywnie obsługiwane i mogą być wydobyte bez problemu. Migracja do Windows App Service całkowicie usuwa przyczynę problemu.

