Rozwiązywanie problemów z wdrażaniem w usłudze Azure Linux App Service
Podczas wdrażania IronPDF w usłudze Azure Linux App Service aplikacja może nie być w stanie renderować dokumentów PDF z powodu brakujących bibliotek systemowych. Dzieje się tak, ponieważ środowiska Linux mają mniej zainstalowanych domyślnie pakietów niż Windows, a silnik renderujący IronPDF wymaga dodatkowych bibliotek współdzielonych do działania.
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')
Błąd oznacza, że jedna lub więcej bibliotek współdzielonych wymaganych przez IronInterop.so jest nieobecna w środowisku Linux. Uruchomienie ldd IronInterop.so z konsoli SSH na usłudze aplikacji pozwala dokładnie zidentyfikować, które biblioteki są brakujące. Komunikat o systemie plików tylko do odczytu dla folderu environments to oddzielny objaw tego samego stanu brakujących zależności.
Rozwiązanie
Krok 1: Identyfikacja brakujących zależności
- Wdróż usługę aplikacji z poziomu Visual Studio jak zwykle.
- Otwórz konsolę SSH dla swojej usługi Azure Linux App Service.
- Przejdź do katalogu wwwroot:
cd /home/site/wwwroot
- Uruchom
lddna binarce natywnej, aby wymienić nierozwiązane zależności:
ldd IronInterop.so
- Sprawdź wersję systemu operacyjnego, aby potwierdzić, które nazwy pakietów mają zastosowanie:
cat /etc/os-release
Krok 2: Instalacja brakujących bibliotek
Dla większości dystrybucji Linux (obrazów opartych na Debian/Ubuntu), zainstaluj wymagane pakiety używając:
apt-get update && apt-get install -y libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libxkbcommon0 libasound2 libatspi2.0-0
Dla obrazów Ubuntu 24.04 (używanych z .NET 10), użyj poniższej instrukcji Dockerfile, ponieważ niektóre nazwy pakietów uległy zmianie:
RUN apt update \
&& apt install -y sudo libxkbcommon-x11-0 libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2t64 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev
Krok 3: Weryfikacja rozwiązania wszystkich zależności
Uruchom ponownie ldd, aby potwierdzić, że nie ma już nierozwiązanych wpisów:
ldd IronInterop.so
Wszystkie wpisy powinny pokazywać rozwiązana ścieżkę zamiast not found. Kiedy wszystkie zależności są na miejscu, renderowanie PDF przez aplikację webową będzie działać normalnie. Dla pełnej listy wymaganych pakietów w różnych dystrybucjach Linux zobacz przewodnik wdrażania dla Linux.

