Lighttpd 알파인 컨테이너 로깅

Lighttpd 알파인 컨테이너 로깅

맥락은 몇 가지 전용 메트릭을 가질 수 있도록 Docker 컨테이너 내부에 정적 웹 사이트를 제공하고 로그에서 stdout/stderr을 사용하기를 원한다는 것입니다.

그러기 위해 나는 Alpine 이미지와 함께 Lighttpd를 사용하는 것을 생각했습니다.

팁을 찾았어요여기여기서 우리는 stdout에 대한 링크를 생성하지만 링크를 생성한 후 권한이 변경되고 lighttpd는 access.log에 쓰기를 중지합니다.

lighttpd.conf를 "루트"로 변경하려고 시도했지만 server.username''라고 말하면서 거부합니다. (server.c.1330) uid를 0으로 설정하지 않겠습니다..

링크 생성 후 access.log 권한을 변경해 보았지만 성공하지 못했습니다.

stdout/stderr을 사용하도록 lighttpd를 구성하는 방법이 있습니까?

내 현재 구성:

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" )

내 현재 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"]

답변1

주석 처리하면 server.errorloglighttpd가 stderr에 기록됩니다.

작동하지 않으면 accesslog.filename = "/dev/stdout"설정을 시도해 보셨나요 accesslog.filename = "/proc/self/fd/1"?

관련 정보