Lighttpd alpine Container-Logging

Lighttpd alpine Container-Logging

Der Kontext ist, dass ich eine statische Website in einem Docker-Container bereitstellen möchte, damit ich über einige dedizierte Messdaten verfügen kann, und dass die Protokolle stdout/stderr verwenden sollen.

Dazu dachte ich daran, Lighttpd mit einem Alpine-Image zu verwenden.

Ich habe einen Tipp gefundenHierwo wir einen Link zu stdout erstellen, aber nach dem Erstellen des Links ändern sich die Berechtigungen und lighttpd hört auf, in access.log zu schreiben.

Ich habe versucht, server.usernamelighttpd.conf auf "root" zu ändern, aber es weigert sich, dies zu tun, mit der Meldung ' (server.c.1330) Ich werde die UID nicht auf 0 setzen.

Ich habe versucht, die access.log-Berechtigungen nach der Linkerstellung zu ändern, jedoch ohne Erfolg.

Gibt es eine Möglichkeit, lighttpd so zu konfigurieren, dass es stdout/stderr verwendet?

Meine aktuelle Konfiguration:

var.basedir  = "/var/www/localhost"
var.logdir   = "/var/log/lighttpd"
var.statedir = "/var/lib/lighttpd"

server.modules   = ( "mod_access",
                     "mod_setenv",
                     "mod_rewrite",
                     "mod_redirect",
                     "mod_status",
                     "mod_simple_vhost",
                     "mod_evhost",
                     "mod_alias",
                     "mod_userdir",
                     "mod_secdownload",
                     "mod_fastcgi",
                     "mod_proxy",
                     "mod_cgi",
                     "mod_ssi",
                     "mod_compress",
                     "mod_usertrack",
                     "mod_expire",
                     "mod_rrdtool",
                     "mod_accesslog" )

include "mime-types.conf"

server.errorlog   = "/var/log/lighttpd/error.log"
server.pid-file      = "/var/run/lighttpd.pid"

server.username             = "lighttpd"
server.groupname            = "wheel"

server.document-root = var.basedir + "/htdocs"

static-file.exclude-extensions = (".php", ".pl", ".cgi", ".fcgi")

url.access-deny = ("~", ".inc")

accesslog.filename = "/var/log/lighttpd/access.log"
index-file.names            = ( "index.php", "index.html", "index.lighttpd.html" )

Mein aktuelles Dockerfile:

FROM alpine:3.12

RUN adduser -S lighttpd -G wheel
RUN apk update --no-cache
RUN apk add  --update --no-cache \
    lighttpd=1.4.55-r1

COPY ./static /var/www/localhost/htdocs/
COPY lighttpd/* /etc/lighttpd/

RUN ln -sf /dev/stdout /var/log/lighttpd/access.log \
   && ln -sf /dev/stderr /var/log/lighttpd/error.log

EXPOSE 80 443

ENTRYPOINT ["/usr/sbin/lighttpd", "-D", "-f", "/etc/lighttpd/lighttpd.conf"]

Antwort1

Wenn Sie es auskommentieren server.errorlog, führt lighttpd eine Protokollierung in stderr durch.

Wenn accesslog.filename = "/dev/stdout"es nicht funktioniert, haben Sie die Einstellungen versucht accesslog.filename = "/proc/self/fd/1"?

verwandte Informationen