Forum: PC Hard- und Software NGINX - Server ready nginx: [emerg] dlopen() "/var/lib/nginx/modules/ndk_http_module.so" failed (Err


von TR.OLL (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem mit dem Nginx in diesem Docker-Container 
(https://github.com/linuxserver/docker-letsencrypt):
1
Server ready
2
nginx: [emerg] dlopen() "/var/lib/nginx/modules/ndk_http_module.so" failed (Error loading shared library /var/lib/nginx/modules/ndk_http_module.so: No such file or directory) in /etc/nginx/modules/devel_kit.conf:1
3
nginx: [emerg] dlopen() "/var/lib/nginx/modules/ndk_http_module.so" failed (Error loading shared library /var/lib/nginx/modules/ndk_http_module.so: No such file or directory) in /etc/nginx/modules/devel_kit.conf:1
4
nginx: [emerg] dlopen() "/var/lib/nginx/modules/ndk_http_module.so" failed (Error loading shared library /var/lib/nginx/modules/ndk_http_module.so: No such file or directory) in /etc/nginx/modules/devel_kit.conf:1
5
nginx: [emerg] dlopen() "/var/lib/nginx/modules/ndk_http_module.so" failed (Error loading shared library /var/lib/nginx/modules/ndk_http_module.so: No such file or directory) in /etc/nginx/modules/devel_kit.conf:1
6
nginx: [emerg] dlopen() "/var/lib/nginx/modules/ndk_http_module.so" failed (Error loading shared library /var/lib/nginx/modules/ndk_http_module.so: No such file or directory) in /etc/nginx/modules/devel_kit.conf:1
7
^C[cont-finish.d] executing container finish scripts...
8
[cont-finish.d] done.
9
[s6-finish] waiting for services.
10
[s6-finish] sending all processes the TERM signal.
11
[s6-finish] sending all processes the KILL signal and exiting.

Kennt jemand eine Lösung?

TR.OLL

von TR.OLL (Gast)


Lesenswert?

Kennt hier niemand eine Lösung?

von Martin (Gast)


Lesenswert?

Ist die Datei denn da oder nicht?

von TR.OLL (Gast)


Lesenswert?

Die Datei ist nicht da (In /var/lib/nginx/modules/).

von TR.OLL (Gast)


Lesenswert?

Wo bekommt man die Datei her (ndk_http_module.so)? Und wie kann man das 
Problem beheben?

von -gb- (Gast)


Lesenswert?

Hier http://nginx.org gibt es die Quellen. Die kannst du dir holen und 
bauen wie man das eben macht im klassischen Stil mit configure make 
install

von -gb- (Gast)


Lesenswert?

Ach die haben sogar fertige Pakete, die gibt es hier:
http://nginx.org/en/linux_packages.html
Vielleicht kennt die auch dein Paketmanager wie pacman, apt,  ...

von TR.OLL (Gast)


Lesenswert?

-gb- schrieb:
> Ach die haben sogar fertige Pakete, die gibt es hier:
> http://nginx.org/en/linux_packages.html
> Vielleicht kennt die auch dein Paketmanager wie pacman, apt,  ...

Die kennt mein Packetmanager, aber ich will den NGINX in folgendem 
Docker-Container betreiben: 
https://github.com/linuxserver/docker-letsencrypt

von -gb- (Gast)


Lesenswert?

So Container sind mir ja suspekt, sind die eher etwas wie ein Binary das 
einmal gebaut wird oder eher wie ein Festplattenabbild mit einer 
Linuxinstallation?
Also kannst du in dem Container selber Zeug installieren mit einem 
Paketmanager innerhalb des Containers oder bist du da auf den 
"Hersteller" des Containers angewiesen dass der einen neuen Container 
baut in dem dann die nötige Datei enthalten ist?

von imonbln (Gast)


Lesenswert?

TR.OLL schrieb:
> Die kennt mein Packetmanager, aber ich will den NGINX in folgendem
> Docker-Container betreiben:

Dann Füll da den Issue Tracker aus und lass dir von dem Erzeuger der 
Docker Container helfen.

von guest (Gast)


Lesenswert?

imonbln schrieb:
> Dann Füll da den Issue Tracker aus und lass dir von dem Erzeuger der
> Docker Container helfen.

Den scheint es schon zu geben:
https://github.com/linuxserver/docker-letsencrypt/issues/429

von guest (Gast)


Lesenswert?

Man könnte das fehlende Modul natürlich auch einfach im apk Aufruf im 
Dockerfile ergänzen.

von Εrnst B. (ernst)


Lesenswert?

ich würd' das trennen.
ein Container nginx, ein Container letsencrypt. Damit bleibt certbot mit 
seinem python und drölftausend dependencies vom Webserver fern, und du 
kannst von beiden "offizielle" images verwenden, also

https://hub.docker.com/r/certbot/certbot
https://hub.docker.com/_/nginx

ist aber etwas mehr Aufwand beim Setup.

von M.M.M (Gast)


Lesenswert?

guest schrieb:
> imonbln schrieb:
>> Dann Füll da den Issue Tracker aus und lass dir von dem Erzeuger der
>> Docker Container helfen.
>
> Den scheint es schon zu geben:
> https://github.com/linuxserver/docker-letsencrypt/issues/429

Ach was? Na, das wird wohl auch der TE gewesen sein und genau wie hier 
ist er dort nicht mit den nötigen Infos übergekommen. Dann wird das so 
halt nix. Hier hat er nicht mal das OS genannt, noch, ob er das Ding 
fertig runtergeladen oder selbstgebaut hat.

guest schrieb:
> Man könnte das fehlende Modul natürlich auch einfach im apk Aufruf im
> Dockerfile ergänzen.

Man könnte das Modul auch woanders suchen gehen, z.B. unter /usr/lib 
statt unter /var/lib.

MfG

von Rolf M. (rmagnus)


Lesenswert?

-gb- schrieb:
> So Container sind mir ja suspekt, sind die eher etwas wie ein Binary das
> einmal gebaut wird oder eher wie ein Festplattenabbild mit einer
> Linuxinstallation?

Letzteres. Wobei die Installation so minimal wie möglich gehalten wird, 
weil sie ja nur dazu dient, ein bestimmtes Programm auszuführen.

> Also kannst du in dem Container selber Zeug installieren mit einem
> Paketmanager innerhalb des Containers oder bist du da auf den
> "Hersteller" des Containers angewiesen dass der einen neuen Container
> baut in dem dann die nötige Datei enthalten ist?

Zunächst mal muss man zwischen Image und Container unterscheiden. Wovon 
du hier sprichst, ist eher ein Image. Der Container ist dann die 
Instanz, die auf dem Rechner läuft. Docker-Images werden hierarchisch 
aufgebaut. Man kann also ein beliebiges Image als Basis nehmen, da noch 
Sachen selber dazu installieren, konfigurieren oder was immer, um ein 
neues Image zu erhalten, das man in einem Container laufen lassen kann. 
Welche Basis verwendet werden soll und welche Kommandos für das neue 
Image aufgerufen werden sollen, definiert man in einem Dockerfile.
Man kann in der Regel auch im Container eine Shell starten und dort von 
Hand  die entsprechenden Kommandos aufrufen, aber wenn man das gleiche 
später nochmal reproduzieren will, muss man die Schritte dann wieder 
alle von Hand machen. Wenn man das über's Dockerfile gemacht hat, kann 
man mit diesem  File einfach später wieder das identische Image 
automatisiert erzeugen lassen.

Εrnst B. schrieb:
> ich würd' das trennen.
> ein Container nginx, ein Container letsencrypt.

Wie sorgt man dann dafür, dass der Certbot auf die nginx-Konfig 
zugreifen kann?

von Εrnst B. (ernst)


Lesenswert?

Rolf M. schrieb:
> Wie sorgt man dann dafür, dass der Certbot auf die nginx-Konfig
> zugreifen kann?

Das mag ich garnicht. Bei komplexen nginx-configs hat letsencrypt da 
eine "configdatei-Zerstörungs-Automatik", bei einfachen configs kann man 
die Handvoll Optionen auch selber einstellen. Also: Für mich ist da kein 
Zugriff von letsencrypt auf die nginx-config nötig.
Nur: Zugriff auf den www-root, um dort die .well-known - Daten ablegen 
zu können, und umgekehrt Zugriff vom nginx auf die erzeugten 
Zertifikate.

Aber jedem das Seine, wenn du da den All-in-one Container bevorzugst, 
das Dockerfile unverdächtig aussieht, und du vom mitinstallierten PHP 
keine Alpträume kriegst, dann spricht da ja nix dagegen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.